DBA Data[Home] [Help]

PACKAGE BODY: APPS.ASO_COPY_QUOTE_PVT

Source


1 PACKAGE BODY ASO_COPY_QUOTE_PVT AS
2 /* $Header: asovcpyb.pls 120.32.12020000.4 2013/06/04 05:35:27 rassharm ship $ */
3 -- Start of Comments
4 -- Package name     : ASO_COPY_QUOTE_PVT
5 -- Purpose         :
6 -- History         :
7 --    12-03-2002 hyang - bug 2692785, checking running concurrent pricing request.
8 --    10-13-2003 hyang - new okc integration.
9 --    06/21/04   skulkarn - fixed bug 3704719
10 --    08/05/04   skulkarn - fixed bug3805575
11 --    12/02/04   skulkarn - fixed bug4036748
12 -- NOTE       :
13 -- End of Comments
14 
15 
16    G_USER_ID     NUMBER                := FND_GLOBAL.USER_ID;
17    G_LOGIN_ID    NUMBER                := FND_GLOBAL.CONC_LOGIN_ID;
18    G_PKG_NAME CONSTANT VARCHAR2 ( 30 ) := 'ASO_COPY_QUOTE_PVT';
19    G_FILE_NAME CONSTANT VARCHAR2 ( 12 ) := 'asovcpyb.pls';
20 
21 
22    PROCEDURE Copy_Quote (
23        P_Api_Version_Number IN NUMBER
24     , P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE
25     , P_Commit IN VARCHAR2 := FND_API.G_FALSE
26     , P_Copy_Quote_Header_Rec IN ASO_COPY_QUOTE_PUB.Copy_Quote_Header_Rec_Type
27             := ASO_COPY_QUOTE_PUB.G_MISS_Copy_Quote_Header_Rec
28     , P_Copy_Quote_Control_Rec IN ASO_COPY_QUOTE_PUB.Copy_Quote_Control_Rec_Type
29             := ASO_COPY_QUOTE_PUB.G_MISS_Copy_Quote_Control_Rec
30     /* Code change for Quoting Usability Sun ER Start */
31     , P_Qte_Header_Rec          IN  ASO_QUOTE_PUB.Qte_Header_Rec_Type        := ASO_QUOTE_PUB.G_Miss_Qte_Header_Rec
32     , P_Hd_Shipment_Rec         IN  ASO_QUOTE_PUB.Shipment_Rec_Type          := ASO_QUOTE_PUB.G_MISS_Shipment_Rec
33     , P_hd_Payment_Tbl	        IN  ASO_QUOTE_PUB.Payment_Tbl_Type           := ASO_QUOTE_PUB.G_MISS_PAYMENT_TBL
34     , P_hd_Tax_Detail_Tbl	IN  ASO_QUOTE_PUB.Tax_Detail_Tbl_Type        := ASO_QUOTE_PUB.G_Miss_Tax_Detail_Tbl
35     /* Code change for Quoting Usability Sun ER End */
36     , X_Qte_Header_Id OUT NOCOPY /* file.sql.39 change */   NUMBER
37     , X_Qte_Number OUT NOCOPY /* file.sql.39 change */   NUMBER
38     , X_Return_Status OUT NOCOPY /* file.sql.39 change */   VARCHAR2
39     , X_Msg_Count OUT NOCOPY /* file.sql.39 change */   VARCHAR2
40     , X_Msg_Data OUT NOCOPY /* file.sql.39 change */   VARCHAR2
41     ) IS
42 
43       CURSOR C_Validate_Quote (
44           x_qte_header_id NUMBER
45        ) IS
46          SELECT 'X'
47          FROM   ASO_QUOTE_HEADERS_ALL
48          WHERE  quote_header_id = x_qte_header_id;
49 
50       CURSOR C_Qte_Number IS
51          SELECT ASO_QUOTE_NUMBER_S.NEXTVAL
52          FROM   sys.DUAL;
53 
54       CURSOR C_Qte_Status_Id (
55           c_status_code VARCHAR2
56        ) IS
57          SELECT quote_status_id
58          FROM   ASO_QUOTE_STATUSES_B
59          WHERE  status_code = c_status_code;
60 
61       CURSOR C_Qte_Number_exists (
62           X_qte_number NUMBER
63        ) IS
64          SELECT quote_number
65          FROM   ASO_QUOTE_HEADERS_ALL
66          WHERE  quote_number = X_qte_number;
67 
68       CURSOR C_Curr_Qte_Info (
69           qte_numb NUMBER
70        ) IS
71          SELECT quote_status_id, quote_header_id, quote_version
72          FROM   ASO_QUOTE_HEADERS_ALL
73          WHERE  quote_number = qte_numb
74          AND    max_version_flag = 'Y';
75 
76       CURSOR C_Check_Qte_Status (
77           qte_status_id NUMBER
78        ) IS
79          SELECT 'X'
80          FROM   ASO_QUOTE_STATUSES_B
81          WHERE  quote_status_id = qte_status_id
82          AND    status_code NOT IN ('ORDER SUBMITTED'
83                                   , 'APPROVAL PENDING'
84                                   , 'FINANCING PENDING'
85                                     );
86 
87       CURSOR C_Get_Qte_Num (
88           qte_hdr_id NUMBER
89        ) IS
90          SELECT Quote_Number
91          FROM   ASO_QUOTE_HEADERS_ALL
92          WHERE  Quote_Header_Id = qte_hdr_id;
93 
94       l_api_name CONSTANT VARCHAR2 ( 30 ) := 'Copy_quote';
95       l_api_version_number CONSTANT NUMBER := 1.0;
96       l_return_status VARCHAR2 ( 1 );
97       l_val VARCHAR2 ( 1 );
98       l_enabled_flag VARCHAR2 ( 1 );
99       l_qte_header_rec ASO_QUOTE_PUB.Qte_Header_Rec_Type;
100       l_HEADER_RELATIONSHIP_ID NUMBER;
101       l_qte_num NUMBER;
102       l_qte_header_id NUMBER;
103       l_qte_status_id NUMBER;
104       l_dummy VARCHAR2 ( 2 );
105       lx_Price_Index_Link_Tbl ASO_QUOTE_HEADERS_PVT.Index_Link_Tbl_Type;
106       G_USER_ID NUMBER := FND_GLOBAL.USER_ID;
107       G_LOGIN_ID NUMBER := FND_GLOBAL.CONC_LOGIN_ID;
108       X_New_Qte_Line_Id  NUMBER;
109       -- hyang: for bug 2692785
110       lx_status                     VARCHAR2(1);
111       l_copy_line_qte_header_rec ASO_QUOTE_PUB.Qte_Header_Rec_Type;
112 
113        -- ER 3177722
114        lx_config_tbl                  ASO_QUOTE_PUB.Config_Vaild_Tbl_Type;
115        l_copy_config_profile     varchar2(1):=nvl(fnd_profile.value('ASO_COPY_CONFIG_EFF_DATE'),'Y');
116 
117       -- vtariker Price/Tax enh
118       CURSOR C_Get_Last_Upd_Date (
119           qte_hdr_id NUMBER
120        ) IS
121          SELECT last_update_date
122          FROM aso_quote_headers_all
123          WHERE quote_header_id = qte_hdr_id;
124 
125       CURSOR C_Get_RSA ( l_qte_hdr_id NUMBER) IS
126 	 Select assistance_requested
127 	 FROM   aso_quote_headers_all
128 	 WHERE  quote_header_id = l_qte_hdr_id;
129 
130 
131       CURSOR get_note_id ( l_qte_hdr_id NUMBER) IS
132 	 Select jtf_note_id
133 	 FROM   jtf_notes_vl
134 	 WHERE  note_type = 'QOT_SALES_ASSIST'
135       AND    source_object_id  = l_qte_hdr_id;
136 
137       /* Start : Code change done for Bug 12674665 */
138 
139       CURSOR C_Agreement_PL(p_agreement_id Number) Is
140       Select pri.list_header_id, pri.currency_code
141       from OE_AGREEMENTS_B agr, qp_list_headers_vl pri
142       where agr.agreement_id = p_agreement_id
143       and pri.list_header_id = agr.price_list_id
144       and pri.list_type_code in ('PRL','AGR')
145       and pri.active_flag = 'Y'
146       and trunc(nvl(pri.start_date_active, sysdate)) <= trunc(sysdate)
147       and trunc(nvl(pri.end_date_active, sysdate)) >= trunc(sysdate);
148 
149       CURSOR C_Customer_PL(p_cust_acct_id Number) Is
150       Select pri.list_header_id , pri.currency_code
151       from HZ_CUST_ACCOUNTS cust, qp_list_headers_vl pri
152       where cust.cust_account_id = p_cust_acct_id
153       and cust.price_list_id = pri.list_header_id
154       and pri.list_type_code in ('PRL','AGR')
155       and pri.active_flag = 'Y'
156       and trunc(nvl(pri.start_date_active, sysdate)) <= trunc(sysdate)
157       and trunc(nvl(pri.end_date_active, sysdate)) >= trunc(sysdate);
158 
159       CURSOR C_Order_Type_PL(p_order_type_id Number) Is
160       Select pri.list_header_id, pri.currency_code
161       from OE_TRANSACTION_TYPES_ALL ord, qp_list_headers_vl pri
162       where ord.TRANSACTION_TYPE_ID = p_order_type_id
163       and ord.price_list_id = pri.list_header_id
164       and pri.list_type_code in ('PRL','AGR')
165       and pri.active_flag = 'Y'
166       and trunc(nvl(pri.start_date_active, sysdate)) <= trunc(sysdate)
167       and trunc(nvl(pri.end_date_active, sysdate)) >= trunc(sysdate);
168 
169       /* End : Code change done for Bug 12674665 */
170 
171       l_upd_qte_header_rec ASO_QUOTE_PUB.Qte_Header_Rec_Type := ASO_QUOTE_PUB.G_MISS_qte_header_rec;
172 	 l_control_rec    ASO_QUOTE_PUB.Control_Rec_Type;
173       x_qte_header_rec              aso_quote_pub.qte_header_rec_type;
174       x_qte_line_tbl                aso_quote_pub.qte_line_tbl_type;
175       x_qte_line_dtl_tbl            aso_quote_pub.qte_line_dtl_tbl_type;
176       x_hd_price_attributes_tbl     aso_quote_pub.price_attributes_tbl_type;
177       x_hd_payment_tbl              aso_quote_pub.payment_tbl_type;
178       x_hd_shipment_tbl             aso_quote_pub.shipment_tbl_type;
179       x_hd_freight_charge_tbl       aso_quote_pub.freight_charge_tbl_type;
180       x_hd_tax_detail_tbl           aso_quote_pub.tax_detail_tbl_type;
181       x_line_attr_ext_tbl           aso_quote_pub.line_attribs_ext_tbl_type;
182       x_line_rltship_tbl            aso_quote_pub.line_rltship_tbl_type;
183       x_price_adjustment_tbl        aso_quote_pub.price_adj_tbl_type;
184       x_price_adj_attr_tbl          aso_quote_pub.price_adj_attr_tbl_type;
185       x_price_adj_rltship_tbl       aso_quote_pub.price_adj_rltship_tbl_type;
186       x_ln_price_attributes_tbl     aso_quote_pub.price_attributes_tbl_type;
187       x_ln_payment_tbl              aso_quote_pub.payment_tbl_type;
188       x_ln_shipment_tbl             aso_quote_pub.shipment_tbl_type;
189       x_ln_freight_charge_tbl       aso_quote_pub.freight_charge_tbl_type;
190       x_ln_tax_detail_tbl           aso_quote_pub.tax_detail_tbl_type;
191       -- vtariker Price/Tax enh
192 
193       -- hyang new okc
194       l_terms_template_name               VARCHAR2(240);
195       l_target_doc_type                   VARCHAR2(30);
196       l_target_doc_id                     NUMBER;
197       -- end of hyang new okc
198       lx_jtf_note_context_id              NUMBER;
199       l_note_id                           NUMBER;
200       l_rsa                               varchar2(1);
201       l_copy_for_amendment                varchar2(1);
202 	 l_copy_abstract_yn                  varchar2(1);
203       l_has_terms                         varchar2(1):= 'N';
204 
205       /* Code change for Quoting Usability Sun ER Start */
206       CURSOR C_AGREEMENT(P_AGREEMENT_ID IN NUMBER,P_INVOICE_TO_CUSTOMER_ID IN NUMBER) IS
207       SELECT 'x'
208       FROM OE_AGREEMENTS_VL
209       WHERE AGREEMENT_ID = P_AGREEMENT_ID
210       AND  INVOICE_TO_CUSTOMER_ID = P_INVOICE_TO_CUSTOMER_ID;
211 
212       l_var varchar2(1);
213       l_sales_team_prof  VARCHAR2(30) := FND_PROFILE.value('ASO_AUTO_TEAM_ASSIGN');
214       /* Code change for Quoting Usability Sun ER End */
215 
216    BEGIN
217       -- Standard Start of API savepoint
218       SAVEPOINT COPY_QUOTE_PVT;
219 
220       -- Standard call to check for call compatibility.
221       IF NOT FND_API.Compatible_API_Call (
222                  l_api_version_number
223               , p_api_version_number
224               , l_api_name
225               , G_PKG_NAME
226               ) THEN
227          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
228       END IF;
229 
230       -- Initialize message list if p_init_msg_list is set to TRUE.
231       IF FND_API.to_Boolean ( p_init_msg_list ) THEN
232          FND_MSG_PUB.initialize;
233       END IF;
234 
235       -- Debug Message
236       IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW ) THEN
237          FND_MESSAGE.Set_Name ('ASO' , 'Copy Quote API: Start' );
238          FND_MSG_PUB.ADD;
239       END IF;
240 
241       --  Initialize API return status to success
242       l_return_status            := FND_API.G_RET_STS_SUCCESS;
243 
244 --
245 -- API body
246 --
247 -- ******************************************************************
248 -- Validate Environment
249 -- ******************************************************************
250       IF FND_GLOBAL.User_Id IS NULL THEN
251          IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
252             FND_MESSAGE.Set_Name ('ASO' , 'UT_CANNOT_GET_PROFILE_VALUE' );
253             FND_MESSAGE.Set_Token ('PROFILE' , 'USER_ID', FALSE );
254             FND_MSG_PUB.ADD;
255          END IF;
256          RAISE FND_API.G_EXC_ERROR;
257       END IF;
258 
259 -- ******************************************************************
260 
261 
262 
263       OPEN C_Validate_Quote ( P_Copy_Quote_Header_Rec.Quote_Header_Id );
264       FETCH C_Validate_Quote INTO l_val;
265 
266       IF C_Validate_Quote%NOTFOUND THEN
267          IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
268             FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_INVALID_ID' );
269             FND_MESSAGE.Set_Token ('COLUMN' , 'ORIGINAL_QUOTE_ID', FALSE );
270             FND_MESSAGE.Set_Token ( 'VALUE' , TO_CHAR ( P_Copy_Quote_Header_Rec.Quote_Header_Id ) , FALSE );
271             FND_MSG_PUB.ADD;
272          END IF;
273          CLOSE C_Validate_Quote;
274          RAISE FND_API.G_EXC_ERROR;
275       END IF;
276 
277       CLOSE C_Validate_Quote;
278 
279       IF aso_debug_pub.g_debug_flag = 'Y' THEN
280 	 aso_debug_pub.ADD ( 'Copy_Quote - Begin- ASO_COPY_QUOTE_PVT.Copy_Quote ' , 1 , 'Y' );
281       aso_debug_pub.ADD ( 'Copy_Quote - P_Copy_Quote_Header_Rec.Quote_Header_Id: ' || P_Copy_Quote_Header_Rec.Quote_Header_Id , 1 , 'N' );
282       aso_debug_pub.ADD ( 'Copy_Quote - P_Copy_Quote_Control_Rec.Copy_Header_Only ' || P_Copy_Quote_Control_Rec.Copy_Header_Only , 1 , 'N' );
283       aso_debug_pub.ADD ( 'Copy_Quote - P_Copy_Quote_Control_Rec.New_Version ' || P_Copy_Quote_Control_Rec.New_Version , 1 , 'N' );
284 
285       /* Code change for Quoting Usability Sun ER Start */
286       aso_debug_pub.ADD ( 'Copy_Quote - P_Copy_Quote_Control_Rec.Copy_Note: ' || P_Copy_Quote_Control_Rec.Copy_Note, 1 , 'N' );
287       aso_debug_pub.ADD ( 'Copy_Quote - P_Copy_Quote_Control_Rec.Copy_Task: ' || P_Copy_Quote_Control_Rec.Copy_Task, 1 , 'N' );
288       aso_debug_pub.ADD ( 'Copy_Quote - P_Copy_Quote_Control_Rec.Copy_Attachment: ' || P_Copy_Quote_Control_Rec.Copy_Attachment, 1 , 'N' );
289       aso_debug_pub.ADD ( 'Copy_Quote - P_Copy_Quote_Control_Rec.Copy_Shipping: ' || P_Copy_Quote_Control_Rec.Copy_Shipping, 1 , 'N' );
290       aso_debug_pub.ADD ( 'Copy_Quote - P_Copy_Quote_Control_Rec.Copy_Billing: ' || P_Copy_Quote_Control_Rec.Copy_Billing, 1 , 'N' );
291       aso_debug_pub.ADD ( 'Copy_Quote - P_Copy_Quote_Control_Rec.Copy_Payment: ' || P_Copy_Quote_Control_Rec.Copy_Payment, 1 , 'N' );
292       aso_debug_pub.ADD ( 'Copy_Quote - P_Copy_Quote_Control_Rec.Copy_End_Customer: ' || P_Copy_Quote_Control_Rec.Copy_End_Customer , 1 , 'N' );
293       aso_debug_pub.ADD ( 'Copy_Quote - P_Copy_Quote_Control_Rec.Copy_Sales_Supplement: ' || P_Copy_Quote_Control_Rec.Copy_Sales_Supplement , 1 , 'N' );
294       aso_debug_pub.ADD ( 'Copy_Quote - P_Copy_Quote_Control_Rec.Copy_Flexfield: ' || P_Copy_Quote_Control_Rec.Copy_Flexfield , 1 , 'N' );
295       aso_debug_pub.ADD ( 'Copy_Quote - P_Copy_Quote_Control_Rec.Copy_Sales_Credit: ' || P_Copy_Quote_Control_Rec.Copy_Sales_Credit, 1 , 'N' );
296       aso_debug_pub.ADD ( 'Copy_Quote - P_Copy_Quote_Control_Rec.Copy_Contract_Terms: ' || P_Copy_Quote_Control_Rec.Copy_Contract_Terms, 1 , 'N' );
297       aso_debug_pub.ADD ( 'Copy_Quote - P_Copy_Quote_Control_Rec.Copy_Sales_Team: ' || P_Copy_Quote_Control_Rec.Copy_Sales_Team, 1 , 'N' );
298       aso_debug_pub.ADD ( 'Copy_Quote - P_Copy_Quote_Control_Rec.Copy_Line_Shipping: ' || P_Copy_Quote_Control_Rec.Copy_Line_Shipping, 1 , 'N' );
299       aso_debug_pub.ADD ( 'Copy_Quote - P_Copy_Quote_Control_Rec.Copy_Line_Billing: ' || P_Copy_Quote_Control_Rec.Copy_Line_Billing, 1 , 'N' );
300       aso_debug_pub.ADD ( 'Copy_Quote - P_Copy_Quote_Control_Rec.Copy_Line_Payment: ' || P_Copy_Quote_Control_Rec.Copy_Line_Payment, 1 , 'N' );
301       aso_debug_pub.ADD ( 'Copy_Quote - P_Copy_Quote_Control_Rec.Copy_Line_End_Customer: ' || P_Copy_Quote_Control_Rec.Copy_Line_End_Customer, 1 , 'N' );
302       aso_debug_pub.ADD ( 'Copy_Quote - P_Copy_Quote_Control_Rec.Copy_Line_Sales_Supplement: ' || P_Copy_Quote_Control_Rec.Copy_Line_Sales_Supplement, 1 , 'N' );
303       aso_debug_pub.ADD ( 'Copy_Quote - P_Copy_Quote_Control_Rec.Copy_Line_Attachment: ' || P_Copy_Quote_Control_Rec.Copy_Line_Attachment, 1 , 'N' );
304       aso_debug_pub.ADD ( 'Copy_Quote - P_Copy_Quote_Control_Rec.Copy_Line_Flexfield: ' || P_Copy_Quote_Control_Rec.Copy_Line_Flexfield, 1 , 'N' );
305       aso_debug_pub.ADD ( 'Copy_Quote - P_Copy_Quote_Control_Rec.Copy_Line_Sales_Credit: ' || P_Copy_Quote_Control_Rec.Copy_Line_Sales_Credit, 1 , 'N' );
306       aso_debug_pub.ADD ( 'Copy_Quote - P_Copy_Quote_Control_Rec.Copy_To_Same_Customer: ' || P_Copy_Quote_Control_Rec.Copy_To_Same_Customer, 1 , 'N' );
307       /* Code change for Quoting Usability Sun ER End */
308 
309       aso_debug_pub.ADD ( 'Copy_Quote - P_Copy_Quote_Header_Rec.Quote_Number ' || P_Copy_Quote_Header_Rec.Quote_Number , 1 , 'N' );
310       aso_debug_pub.ADD ( 'Copy_Quote - P_Copy_Quote_Header_Rec.Resource_Id ' || P_Copy_Quote_Header_Rec.Resource_Id , 1 , 'N' );
311       aso_debug_pub.ADD ( 'Copy_Quote - P_Copy_Quote_Header_Rec.Resource_Grp_Id ' || P_Copy_Quote_Header_Rec.Resource_Grp_Id , 1 , 'N' );
312       aso_debug_pub.ADD ( 'Copy_Quote - P_Copy_Quote_Header_Rec.Quote_Name ' || P_Copy_Quote_Header_Rec.Quote_Name , 1 , 'N' );
313 
314       END IF;
315 
316       l_qte_header_rec := ASO_UTILITY_PVT.Query_Header_Row ( P_Copy_Quote_Header_Rec.Quote_Header_Id );
317 
318       /* Code change for Quoting Usability Sun ER Start */
319       If P_Copy_Quote_Control_Rec.Copy_To_Same_Customer = FND_API.G_FALSE Then
320 
321          IF aso_debug_pub.g_debug_flag = 'Y' THEN
322 	    aso_debug_pub.ADD ( 'Copy_Quote - P_Copy_Quote_Control_Rec.Copy_To_Same_Customer is False ', 1 , 'N' );
323 	 END IF;
324 
325          -- for change customer , initializing quote header attributes with defaulted input header values
326 
327          l_qte_header_rec.CUST_ACCOUNT_ID                := P_Qte_Header_Rec.CUST_ACCOUNT_ID;
328 	 l_qte_header_rec.CUST_PARTY_ID                  := P_Qte_Header_Rec.CUST_PARTY_ID;
329 	 l_qte_header_rec.PARTY_ID                       := P_Qte_Header_Rec.PARTY_ID;
330 	 l_qte_header_rec.SOLD_TO_PARTY_SITE_ID          := P_Qte_Header_Rec.SOLD_TO_PARTY_SITE_ID;
331 	 l_qte_header_rec.PHONE_ID                       := P_Qte_Header_Rec.PHONE_ID;
332 
333 	 l_qte_header_rec.INVOICE_TO_CUST_ACCOUNT_ID     := P_Qte_Header_Rec.INVOICE_TO_CUST_ACCOUNT_ID ;
334 	 l_qte_header_rec.INVOICE_TO_CUST_PARTY_ID       := P_Qte_Header_Rec.INVOICE_TO_CUST_PARTY_ID;
335 	 l_qte_header_rec.INVOICE_TO_PARTY_ID            := P_Qte_Header_Rec.INVOICE_TO_PARTY_ID;
336 	 l_qte_header_rec.INVOICE_TO_PARTY_SITE_ID       := P_Qte_Header_Rec.INVOICE_TO_PARTY_SITE_ID;
337 	 l_qte_header_rec.INVOICE_TO_PARTY_NAME          := P_Qte_Header_Rec.INVOICE_TO_PARTY_NAME;
338 	 l_qte_header_rec.INVOICE_TO_CONTACT_FIRST_NAME  := P_Qte_Header_Rec.INVOICE_TO_CONTACT_FIRST_NAME;
339 	 l_qte_header_rec.INVOICE_TO_CONTACT_MIDDLE_NAME := P_Qte_Header_Rec.INVOICE_TO_CONTACT_MIDDLE_NAME;
340 	 l_qte_header_rec.INVOICE_TO_CONTACT_LAST_NAME   := P_Qte_Header_Rec.INVOICE_TO_CONTACT_LAST_NAME;
341 	 l_qte_header_rec.INVOICE_TO_ADDRESS1            := P_Qte_Header_Rec.INVOICE_TO_ADDRESS1;
342 	 l_qte_header_rec.INVOICE_TO_ADDRESS2            := P_Qte_Header_Rec.INVOICE_TO_ADDRESS2;
343 	 l_qte_header_rec.INVOICE_TO_ADDRESS3            := P_Qte_Header_Rec.INVOICE_TO_ADDRESS3;
344 	 l_qte_header_rec.INVOICE_TO_ADDRESS4            := P_Qte_Header_Rec.INVOICE_TO_ADDRESS4;
345 	 l_qte_header_rec.INVOICE_TO_COUNTRY_CODE        := P_Qte_Header_Rec.INVOICE_TO_COUNTRY_CODE;
346 	 l_qte_header_rec.INVOICE_TO_COUNTRY             := P_Qte_Header_Rec.INVOICE_TO_COUNTRY;
347 	 l_qte_header_rec.INVOICE_TO_CITY                := P_Qte_Header_Rec.INVOICE_TO_CITY;
348 	 l_qte_header_rec.INVOICE_TO_POSTAL_CODE         := P_Qte_Header_Rec.INVOICE_TO_POSTAL_CODE;
349 	 l_qte_header_rec.INVOICE_TO_STATE               := P_Qte_Header_Rec.INVOICE_TO_STATE;
350 	 l_qte_header_rec.INVOICE_TO_PROVINCE            := P_Qte_Header_Rec.INVOICE_TO_PROVINCE;
351 	 l_qte_header_rec.INVOICE_TO_COUNTY              := P_Qte_Header_Rec.INVOICE_TO_COUNTY;
352 
353 	 l_qte_header_rec.END_CUSTOMER_PARTY_ID          := P_Qte_Header_Rec.END_CUSTOMER_PARTY_ID;
354 	 l_qte_header_rec.END_CUSTOMER_PARTY_SITE_ID     := P_Qte_Header_Rec.END_CUSTOMER_PARTY_SITE_ID;
355 	 l_qte_header_rec.END_CUSTOMER_CUST_ACCOUNT_ID   := P_Qte_Header_Rec.END_CUSTOMER_CUST_ACCOUNT_ID;
356 	 l_qte_header_rec.END_CUSTOMER_CUST_PARTY_ID     := P_Qte_Header_Rec.END_CUSTOMER_CUST_PARTY_ID;
357 
358 	 l_qte_header_rec.MARKETING_SOURCE_CODE_ID       := P_Qte_Header_Rec.MARKETING_SOURCE_CODE_ID;
359 	 l_qte_header_rec.MARKETING_SOURCE_NAME          := P_Qte_Header_Rec.MARKETING_SOURCE_NAME;
360 	 l_qte_header_rec.MARKETING_SOURCE_CODE          := P_Qte_Header_Rec.MARKETING_SOURCE_CODE;
361 
362 	 -- l_qte_header_rec.PRICE_LIST_ID                  := P_Qte_Header_Rec.PRICE_LIST_ID; commented for Bug 12674665
363 
364          /* commented for bug Bug 12674665
365 	 If (P_Qte_Header_Rec.CURRENCY_CODE Is Not Null And
366 	     P_Qte_Header_Rec.currency_code <> FND_API.G_MISS_CHAR) Then
367 	     l_qte_header_rec.CURRENCY_CODE := P_Qte_Header_Rec.CURRENCY_CODE;
368          End If; */
369 
370          -- Check for Pricing Agreement
371 	 IF (l_qte_header_rec.contract_id IS NOT NULL AND
372 	     l_qte_header_rec.contract_id <> FND_API.G_MISS_NUM) THEN
373 
374              IF aso_debug_pub.g_debug_flag = 'Y' THEN
375 	        aso_debug_pub.ADD ( 'Copy_Quote - l_qte_header_rec.contract_id : '||l_qte_header_rec.contract_id, 1 , 'N' );
376 		aso_debug_pub.ADD ( 'Copy_Quote - l_qte_header_rec.INVOICE_TO_CUST_ACCOUNT_ID : '||l_qte_header_rec.INVOICE_TO_CUST_ACCOUNT_ID, 1 , 'N' );
377 	     END IF;
378 
379              Open C_AGREEMENT(l_qte_header_rec.CONTRACT_ID,l_qte_header_rec.INVOICE_TO_CUST_ACCOUNT_ID);
380 	     Fetch C_AGREEMENT Into l_var;
381 
382 	     If C_AGREEMENT%Found Then
383 	        l_qte_header_rec.CONTRACT_ID := P_Qte_Header_Rec.CONTRACT_ID;
384 	     End If;
385 	     Close C_AGREEMENT; -- added as per bug 11735688
386          End If;
387 
388 	 /* Start : Code change done for Bug 12674665 */
389 
390          IF aso_debug_pub.g_debug_flag = 'Y' THEN
391 	    aso_debug_pub.ADD ( 'Copy_Quote - Price List defaulting starting', 1 , 'N' );
392 	    aso_debug_pub.ADD ( 'Copy_Quote - Agreement Id : '||l_qte_header_rec.CONTRACT_ID, 1 , 'N' );
393 	    aso_debug_pub.ADD ( 'Copy_Quote - Customer Account Id : '||l_qte_header_rec.CUST_ACCOUNT_ID, 1 , 'N' );
394             aso_debug_pub.ADD ( 'Copy_Quote - Order Type Id : '||l_qte_header_rec.ORDER_TYPE_ID, 1 , 'N' );
395          END IF;
396 
397          Open C_Agreement_PL(l_qte_header_rec.CONTRACT_ID);
398          Fetch C_Agreement_PL Into l_qte_header_rec.PRICE_LIST_ID,l_qte_header_rec.CURRENCY_CODE;
399 
400 	 If C_Agreement_PL%FOUND then
401 
402 	    IF aso_debug_pub.g_debug_flag = 'Y' THEN
403 	       aso_debug_pub.ADD ( 'Copy_Quote - Price List is defaulted based on Agreement', 1 , 'N' );
404             END IF;
405 
406 	 ElsIf C_Agreement_PL%NOTFOUND then
407 
408 	    Open C_Customer_PL(l_qte_header_rec.CUST_ACCOUNT_ID);
409             Fetch C_Customer_PL Into l_qte_header_rec.PRICE_LIST_ID,l_qte_header_rec.CURRENCY_CODE;
410 
411             If C_Customer_PL%FOUND then
412 
413                IF aso_debug_pub.g_debug_flag = 'Y' THEN
414 	          aso_debug_pub.ADD ( 'Copy_Quote - Price List is defaulted based on Customer Account', 1 , 'N' );
415                END IF;
416 
417 	    ElsIf C_Customer_PL%NOTFOUND then
418 
419 	       Open C_Order_Type_PL(l_qte_header_rec.ORDER_TYPE_ID);
420 	       Fetch C_Order_Type_PL Into l_qte_header_rec.PRICE_LIST_ID,l_qte_header_rec.CURRENCY_CODE;
421 
422                If C_Order_Type_PL%FOUND then
423 		  IF aso_debug_pub.g_debug_flag = 'Y' THEN
424 	             aso_debug_pub.ADD ( 'Copy_Quote - Price List is defaulted based on Order Type', 1 , 'N' );
425                   END IF;
426 	       End If;
427 	       Close C_Order_Type_PL;
428 
429             End If;
430 	    Close C_Customer_PL;
431 
432          End If;
433 	 Close C_Agreement_PL;
434 
435 	 IF aso_debug_pub.g_debug_flag = 'Y' THEN
436 	    aso_debug_pub.ADD ( 'Copy_Quote - l_qte_header_rec.PRICE_LIST_ID : '||l_qte_header_rec.PRICE_LIST_ID, 1 , 'N' );
437 	    aso_debug_pub.ADD ( 'Copy_Quote - l_qte_header_rec.CURRENCY_CODE : '||l_qte_header_rec.CURRENCY_CODE, 1 , 'N' );
438          END IF;
439 
440 	 /* End : Code change done for Bug 12674665 */
441 
442          If (l_sales_team_prof = 'FULL' OR l_sales_team_prof = 'PARTIAL') Then
443              If (P_Qte_Header_Rec.RESOURCE_ID IS NOT NULL AND P_Qte_Header_Rec.RESOURCE_ID <> FND_API.G_MISS_NUM) Then
444 
445                  IF aso_debug_pub.g_debug_flag = 'Y' THEN
446 	            aso_debug_pub.ADD ( 'Copy_Quote - P_Qte_Header_Rec.RESOURCE_ID : '||P_Qte_Header_Rec.RESOURCE_ID, 1 , 'N' );
447 		    aso_debug_pub.ADD ( 'Copy_Quote - P_Qte_Header_Rec.RESOURCE_GRP_ID : '||P_Qte_Header_Rec.RESOURCE_GRP_ID, 1 , 'N' );
448 	         END IF;
449 
450                  l_qte_header_rec.RESOURCE_ID     := P_Qte_Header_Rec.RESOURCE_ID;
451 	         l_qte_header_rec.RESOURCE_GRP_ID := P_Qte_Header_Rec.RESOURCE_GRP_ID;
452              End If;
453          End If;
454        End If;
455       /* Code change for Quoting Usability Sun ER End */
456 
457       IF ( P_Copy_Quote_Control_Rec.New_Version = FND_API.G_FALSE ) THEN
458          IF (    P_Copy_Quote_Header_Rec.Quote_Number IS NULL
459              OR P_Copy_Quote_Header_Rec.Quote_Number = FND_API.G_MISS_NUM
460              ) THEN
461             IF ( NVL ( FND_PROFILE.VALUE ('ASO_AUTO_NUMBERING' ), 'Y' ) = 'Y' ) THEN
462                IF aso_debug_pub.g_debug_flag = 'Y' THEN
463 			aso_debug_pub.ADD ( 'Copy_Quote - AUTO_NUMBERING is Y ' , 1 , 'N' );
464 			END IF;
465 
466                OPEN C_Qte_Number;
467                FETCH C_Qte_Number INTO l_qte_header_rec.quote_number;
468                CLOSE C_Qte_Number;
469 
470                l_qte_header_rec.quote_version := 1;
471                l_qte_header_rec.max_version_flag := 'Y';
472             ELSE
473                IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
474                   FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_MISSING_COLUMN' );
475                   FND_MESSAGE.Set_Token ('COLUMN' , 'QUOTE_NUMBER', FALSE );
476                   FND_MSG_PUB.ADD;
477                END IF;
478                RAISE FND_API.G_EXC_ERROR;
479             END IF; -- profile auto numbering
480          ELSE
481 
482             OPEN C_Qte_Number_Exists ( P_Copy_Quote_Header_Rec.Quote_Number );
483             FETCH C_Qte_Number_Exists INTO l_qte_num;
484             CLOSE C_Qte_Number_Exists;
485 
486             IF l_qte_num = P_Copy_Quote_Header_Rec.Quote_Number THEN
487                IF aso_debug_pub.g_debug_flag = 'Y' THEN
488 			aso_debug_pub.ADD ( 'Copy_Quote - AUTO_NUMBERING is N ' , 1 , 'N' );
489 			END IF;
490                IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
491                   FND_MESSAGE.Set_Name ('ASO' , 'ASO_CANNOT_COPY_QTE' );
492                   FND_MSG_PUB.ADD;
493                END IF;
494                RAISE FND_API.G_EXC_ERROR;
495             ELSE
496                l_qte_header_rec.quote_number := P_Copy_Quote_Header_Rec.Quote_Number;
497                l_qte_header_rec.quote_version := 1;
498                l_qte_header_rec.max_version_flag := 'Y';
499             END IF;
500          END IF; -- p_qte_number is null
501 
502 -- Qte_Exp_Date
503          IF P_Copy_Quote_Header_Rec.Quote_Expiration_Date = FND_API.G_MISS_DATE THEN
504             ASO_COPY_QUOTE_PVT.Get_Quote_Exp_Date (
505                 X_Quote_Exp_Date =>             l_qte_header_rec.quote_expiration_date
506              , X_Return_Status =>               l_return_status
507              , X_Msg_Count =>                   x_msg_count
508              , X_Msg_Data =>                    x_msg_data
509              );
510             IF ( l_return_status = FND_API.G_RET_STS_ERROR ) THEN
511                x_return_status            := FND_API.G_RET_STS_ERROR;
512                RAISE FND_API.G_EXC_ERROR;
513             END IF;
514          END IF;
515 
516 -- Quote_Exp_Date
517 
518       ELSE -- new_version is TRUE
519 
520         -- hyang: for bug 2692785
521         ASO_CONC_REQ_INT.Lock_Exists(
522           p_quote_header_id => P_Copy_Quote_Header_Rec.Quote_Header_Id,
523           x_status          => lx_status);
524 
525         IF (lx_status = FND_API.G_TRUE) THEN
526           IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
527             FND_MESSAGE.Set_Name('ASO', 'ASO_CONC_REQUEST_RUNNING');
528             FND_MSG_PUB.ADD;
529           END IF;
530           RAISE FND_API.G_EXC_ERROR;
531         END IF;
532 
533          IF      P_Copy_Quote_Header_Rec.Quote_Number IS NOT NULL
534              AND P_Copy_Quote_Header_Rec.Quote_Number <> FND_API.G_MISS_NUM THEN
535 
536             OPEN C_Qte_Number_Exists ( P_Copy_Quote_Header_Rec.Quote_Number );
537             FETCH C_Qte_Number_Exists INTO l_qte_num;
538 
539             IF C_Qte_Number_Exists%NOTFOUND THEN
540                IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
541                   FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_INVALID_ID' );
542                   FND_MESSAGE.Set_Token ('COLUMN' , 'QUOTE_NUMBER', FALSE );
543                   FND_MSG_PUB.ADD;
544                END IF;
545                CLOSE C_Qte_Number_Exists;
546                RAISE FND_API.G_EXC_ERROR;
547             ELSE
548                IF aso_debug_pub.g_debug_flag = 'Y' THEN
549 			aso_debug_pub.ADD ( 'Copy_Quote - P_Qte_Number Exists' , 1 , 'N' );
550 			END IF;
551                l_qte_header_rec.quote_number := P_Copy_Quote_Header_Rec.Quote_Number;
552                CLOSE C_Qte_Number_Exists;
553             END IF;
554 
555          END IF; -- qte_number not null
556 
557          OPEN C_Curr_Qte_Info ( l_qte_header_rec.quote_number );
558          FETCH C_Curr_Qte_Info INTO l_qte_status_id
559                                   , l_qte_header_id
560                                   , l_qte_header_rec.quote_version;
561          CLOSE C_Curr_Qte_Info;
562 
563          IF aso_debug_pub.g_debug_flag = 'Y' THEN
564 	    aso_debug_pub.ADD ( 'Copy_Quote - l_qte_status_id ' || l_qte_status_id , 1 , 'N' );
565          aso_debug_pub.ADD ( 'Copy_Quote - l_qte_header_id ' || l_qte_header_id , 1 , 'N' );
566          aso_debug_pub.ADD ( 'Copy_Quote - l_qte_header_rec.quote_version ' || l_qte_header_rec.quote_version , 1 , 'N' );
567 	    END IF;
568 
569          OPEN C_Check_Qte_Status ( l_qte_status_id );
570          FETCH C_Check_Qte_Status INTO l_dummy;
571 
572          IF C_Check_Qte_Status%NOTFOUND THEN
573             IF aso_debug_pub.g_debug_flag = 'Y' THEN
574 		  aso_debug_pub.ADD ('Copy_Quote - invalid status ' , 1, 'N' );
575 		  END IF;
576             IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
577                FND_MESSAGE.Set_Name ('ASO' , 'ASO_CANNOT_COPY_FOR_STATUS' );
578                FND_MSG_PUB.ADD;
579             END IF;
580             CLOSE C_Check_Qte_Status;
581             RAISE FND_API.G_EXC_ERROR;
582          END IF;
583 
584          CLOSE C_Check_Qte_Status;
585 
586          l_qte_header_rec.quote_version := NVL ( l_qte_header_rec.quote_version, 0 ) + 1;
587          l_qte_header_rec.max_version_flag := 'Y';
588 
589          UPDATE ASO_QUOTE_HEADERS_ALL
590             SET Max_Version_Flag = 'N'
591               ,last_update_date =sysdate
592               ,last_updated_by = G_USER_ID
593               ,last_update_login = G_LOGIN_ID
594 
595           WHERE Quote_Header_Id = l_qte_header_id;
596 
597       END IF; -- p_new_version
598 
599       OPEN c_qte_status_id ( fnd_profile.VALUE ('ASO_DEFAULT_STATUS_CODE' ) );
600       FETCH c_qte_status_id INTO l_qte_header_rec.quote_status_id;
601 
602       IF c_qte_status_id%NOTFOUND THEN
603          x_return_status            := FND_API.G_RET_STS_ERROR;
604          IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
605             FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_NO_PROFILE_VALUE' );
606             FND_MESSAGE.Set_Token ( 'PROFILE' , 'ASO_DEFAULT_STATUS_CODE' , FALSE );
607             FND_MSG_PUB.ADD;
608          END IF;
609          CLOSE c_qte_status_id;
610          RAISE FND_API.G_EXC_ERROR;
611       END IF;
612 
613       CLOSE c_qte_status_id;
614 
615       IF P_Copy_Quote_Header_Rec.Quote_Name <> FND_API.G_MISS_CHAR THEN
616          l_qte_header_rec.Quote_Name := P_Copy_Quote_Header_Rec.Quote_Name;
617 
618       ELSE
619           -- since the quote name is not passed in, set the quote name
620         IF ( P_Copy_Quote_Control_Rec.New_Version = FND_API.G_FALSE ) THEN
621          IF (l_qte_header_rec.quote_name is not null and l_qte_header_rec.quote_name <> fnd_api.g_miss_char) then
622             l_qte_header_rec.quote_name := 'Copy Of '||substr(l_qte_header_rec.quote_name,1,232);
623          Else
624             l_qte_header_rec.quote_name := 'Copy Of ';
625          end if;
626         end if;
627 
628       END IF;
629 
630       IF P_Copy_Quote_Header_Rec.Quote_Source_Code <> FND_API.G_MISS_CHAR THEN
631          l_qte_header_rec.Quote_Source_Code := P_Copy_Quote_Header_Rec.Quote_Source_Code;
632       END IF;
633 
634       IF P_Copy_Quote_Header_Rec.Quote_Expiration_Date <> FND_API.G_MISS_DATE THEN
635          l_qte_header_rec.Quote_Expiration_Date := P_Copy_Quote_Header_Rec.Quote_Expiration_Date;
636       END IF;
637 
638       IF P_Copy_Quote_Header_Rec.Resource_Id <> FND_API.G_MISS_NUM THEN
639          l_qte_header_rec.Resource_Id := P_Copy_Quote_Header_Rec.Resource_Id;
640       END IF;
641 
642       IF P_Copy_Quote_Header_Rec.Resource_Grp_Id <> FND_API.G_MISS_NUM THEN
643          l_qte_header_rec.Resource_Grp_Id := P_Copy_Quote_Header_Rec.Resource_Grp_Id;
644       END IF;
645 
646   -- added four new fields as per changes to the copy quote header rec
647       IF P_Copy_Quote_Header_Rec.pricing_status_indicator <> FND_API.G_MISS_CHAR THEN
648          l_qte_header_rec.pricing_status_indicator := P_Copy_Quote_Header_Rec.pricing_status_indicator;
649       END IF;
650 
651       IF P_Copy_Quote_Header_Rec.tax_status_indicator <> FND_API.G_MISS_CHAR THEN
652          l_qte_header_rec.tax_status_indicator := P_Copy_Quote_Header_Rec.tax_status_indicator;
653       END IF;
654 
655       IF P_Copy_Quote_Header_Rec.price_updated_date <> FND_API.G_MISS_DATE THEN
656          l_qte_header_rec.price_updated_date := P_Copy_Quote_Header_Rec.price_updated_date;
657       END IF;
658 
659       IF P_Copy_Quote_Header_Rec.tax_updated_date <> FND_API.G_MISS_DATE THEN
660          l_qte_header_rec.tax_updated_date := P_Copy_Quote_Header_Rec.tax_updated_date;
661       END IF;
662 
663       IF aso_debug_pub.g_debug_flag = 'Y' THEN
664 	 aso_debug_pub.ADD ('Copy_Quote - Begin- before copy_rows ' , 1, 'Y' );
665 	 END IF;
666       Copy_Header_Rows (
667           P_Api_Version_Number =>         1.0
668        , P_Init_Msg_List =>               FND_API.G_FALSE
669        , P_Commit =>                      FND_API.G_FALSE
670        , P_qte_Header_Rec =>              l_qte_header_rec
671        /* Code change for Quoting Usability Sun ER Start */
672        , P_Hd_Shipment_Rec         => P_Hd_Shipment_Rec
673        , P_hd_Payment_Tbl          => P_hd_Payment_Tbl
674        , P_hd_Tax_Detail_Tbl       => P_hd_Tax_Detail_Tbl
675        /* Code change for Quoting Usability Sun ER End */
676        , P_Copy_Quote_Control_Rec =>      P_Copy_Quote_Control_Rec
677        , X_Qte_Header_id =>               x_qte_header_id
678        , X_Price_Index_Link_Tbl =>        lx_Price_Index_Link_Tbl
679        , X_Return_Status =>               l_return_status
680        , X_Msg_Count =>                   x_msg_count
681        , X_Msg_Data =>                    x_msg_data
682        );
683       IF aso_debug_pub.g_debug_flag = 'Y' THEN
684 	 aso_debug_pub.ADD ( 'Copy_Quote - After copy_rows ' || l_return_status , 1 , 'Y' );
685 	 END IF;
686 
687       IF ( l_return_status = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
688          x_return_status            := FND_API.G_RET_STS_UNEXP_ERROR;
689          IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
690             FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_UNEXP_ERROR' );
691             FND_MESSAGE.Set_Token ('ROW' , 'ASO_QUOTE_HEADER', TRUE );
692             FND_MSG_PUB.ADD;
693          END IF;
694          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
695       ELSIF ( l_return_status = FND_API.G_RET_STS_ERROR ) THEN
696          x_return_status            := FND_API.G_RET_STS_ERROR;
697          RAISE FND_API.G_EXC_ERROR;
698       END IF;
699 
700       IF P_Copy_Quote_Control_Rec.Copy_Header_Only <> FND_API.G_TRUE THEN
701 
702          IF aso_debug_pub.g_debug_flag = 'Y' THEN
703 	    aso_debug_pub.ADD ('Copy_Quote - Begin- before copy_rows ' , 1, 'Y' );
704 	    END IF;
705 
706 
707 	    l_copy_line_qte_header_rec.batch_price_flag := FND_API.G_FALSE;
708 
709          Copy_Line_Rows (
710             P_Api_Version_Number =>         1.0
711           , P_Init_Msg_List =>               FND_API.G_FALSE
712           , P_Commit =>                      FND_API.G_FALSE
713           , P_qte_Header_Id =>               P_Copy_Quote_Header_Rec.Quote_Header_Id
714           , P_new_qte_header_id =>           x_qte_header_id
715           , P_Qte_Line_Id =>                 FND_API.G_MISS_NUM
716           , P_Price_Index_Link_Tbl =>        lx_Price_Index_Link_Tbl
717           , P_Copy_Quote_Control_Rec =>      P_Copy_Quote_Control_Rec
718           , P_Qte_Header_Rec         =>   l_copy_line_qte_header_rec
719           , P_Control_Rec            =>   ASO_QUOTE_PUB.G_MISS_Control_Rec
720           , X_Qte_Line_Id            =>  X_New_Qte_Line_Id
721           , X_Return_Status =>               l_return_status
722           , X_Msg_Count =>                   x_msg_count
723           , X_Msg_Data =>                    x_msg_data
724           );
725          IF aso_debug_pub.g_debug_flag = 'Y' THEN
726 	    aso_debug_pub.ADD ( 'Copy_Quote - After copy_rows ' || l_return_status , 1 , 'Y' );
727 	    END IF;
728       END IF;
729 -- ER 3177722
730  /*      if (l_return_status =FND_API.G_RET_STS_SUCCESS) then
731 
732 
733          if l_copy_config_profile='N' then
734 	         aso_debug_pub.add('Copy Quote -before   ASO_QUOTE_PUB.validate_model_configuration return status:  ', 1, 'N');
735 
736       ASO_QUOTE_PUB.validate_model_configuration
737 			(
738 			P_Api_Version_Number  => 1.0,
739 			P_Init_Msg_List       => FND_API.G_FALSE,
740 			P_Commit              => FND_API.G_FALSE,
741                P_Quote_header_id     =>x_qte_header_id,
742 			P_UPDATE_QUOTE        =>'T',
743 			P_CONFIG_EFFECTIVE_DATE      => sysdate,
744 			P_CONFIG_model_lookup_DATE   => sysdate,
745 			X_Config_tbl          => lx_config_tbl,
746 			X_Return_Status       => l_return_status,
747 			X_Msg_Count           => x_msg_count,
748 			X_Msg_Data            => x_msg_data
749                );
750 
751       if l_Return_Status=FND_API.G_RET_STS_SUCCESS then
752                        commit work;
753 		      aso_debug_pub.add('rassharm Copy Quote -after   ASO_QUOTE_PUB.validate_model_configuration committing data return status:  ', 1, 'N');
754 
755 		    end if;
756 
757       IF aso_debug_pub.g_debug_flag = 'Y' THEN
758 			aso_debug_pub.add('Copy Quote -After  ASO_QUOTE_PUB.validate_model_configuration return status:  '||l_Return_Status, 1, 'N');
759 			aso_debug_pub.add('Copy Quote -After  ASO_QUOTE_PUB.validate_model_configuration lx_config_tbl:  '||lx_config_tbl.count, 1, 'N');
760 		    END IF;
761 
762 
763 
764             end if; -- profile
765        end if; -- success
766 */
767       IF ( l_return_status = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
768          x_return_status            := FND_API.G_RET_STS_UNEXP_ERROR;
769          IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
770             FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_UNEXP_ERROR' );
771             FND_MESSAGE.Set_Token ('ROW' , 'ASO_QUOTE_HEADER', TRUE );
772             FND_MSG_PUB.ADD;
773          END IF;
774          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
775       ELSIF ( l_return_status = FND_API.G_RET_STS_ERROR ) THEN
776          x_return_status            := FND_API.G_RET_STS_ERROR;
777          RAISE FND_API.G_EXC_ERROR;
778       END IF;
779 
780       OPEN C_Get_Qte_Num ( x_qte_header_id );
781       FETCH C_Get_Qte_Num INTO x_qte_number;
782       CLOSE C_Get_Qte_Num;
783 --bug8975090
784        -- create header relationship
785 
786       ASO_HEADER_RELATIONSHIPS_PKG.Insert_Row (
787           px_HEADER_RELATIONSHIP_ID =>    l_HEADER_RELATIONSHIP_ID
788        , p_CREATION_DATE =>               SYSDATE
789        , p_CREATED_BY =>                  G_USER_ID
790        , p_LAST_UPDATE_DATE =>            SYSDATE
791        , p_LAST_UPDATED_BY =>             G_USER_ID
792        , p_LAST_UPDATE_LOGIN =>           G_LOGIN_ID
793        , p_REQUEST_ID =>                  NULL
794        , p_PROGRAM_APPLICATION_ID =>      NULL
795        , p_PROGRAM_ID =>                  NULL
796        , p_PROGRAM_UPDATE_DATE =>         NULL
797        , p_QUOTE_HEADER_ID =>             P_Copy_Quote_Header_Rec.quote_header_id
798        , p_RELATED_HEADER_ID =>           x_qte_header_id
799        , p_RELATIONSHIP_TYPE_CODE =>      'COPY'
800        , p_RECIPROCAL_FLAG =>             NULL
801        ,p_OBJECT_VERSION_NUMBER =>         NULL
802 
803        );
804       IF aso_debug_pub.g_debug_flag = 'Y' THEN
805 	 aso_debug_pub.ADD ( 'Copy_Quote - After header_relationships,insert: END ' , 1 , 'Y' );
806 	 END IF;
807 --8975090
808 
809     --  IF P_Copy_Quote_Control_Rec.New_Version = FND_API.G_TRUE THEN code commented for Quoting Usability Sun ER
810 
811          If P_Copy_Quote_Control_Rec.Copy_Sales_Supplement = FND_API.G_TRUE Then  -- Code change for Quoting Usability Sun ER
812 
813          COPY_SALES_SUPPLEMENT (
814              P_Api_Version_Number =>         1.0
815           , P_Init_Msg_List =>               FND_API.G_FALSE
816           , P_Commit =>                      FND_API.G_FALSE
817           , p_old_quote_header_id =>         P_Copy_Quote_Header_Rec.quote_header_id
818           , p_new_quote_header_id =>         x_qte_header_id
819           , X_Return_Status =>               l_return_status
820           , X_Msg_Count =>                   x_msg_count
821           , X_Msg_Data =>                    x_msg_data
822           );
823          IF ( l_return_status = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
824             x_return_status            := FND_API.G_RET_STS_UNEXP_ERROR;
825             IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
826                FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_UNEXP_ERROR' );
827                FND_MESSAGE.Set_Token ('ROW' , 'ASO_QUOTE_HEADER', TRUE );
828                FND_MSG_PUB.ADD;
829             END IF;
830             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
831          ELSIF ( l_return_status = FND_API.G_RET_STS_ERROR ) THEN
832             x_return_status            := FND_API.G_RET_STS_ERROR;
833             RAISE FND_API.G_EXC_ERROR;
834          END IF;
835 
836 	 End If;  -- Code change for Quoting Usability Sun ER
837 
838        IF P_Copy_Quote_Control_Rec.New_Version = FND_API.G_TRUE THEN  -- Code change for Quoting Usability Sun ER
839 
840 	    IF aso_debug_pub.g_debug_flag = 'Y' THEN
841 	    aso_debug_pub.ADD ( 'Copy_Quote - Before Copy_Opp_Quote: ' , 1 , 'N' );
842 	    END IF;
843          ASO_COPY_QUOTE_PVT.Copy_Opp_Quote(
844                p_api_version_number  => 1.0,
845                p_qte_header_id       => P_Copy_Quote_Header_Rec.quote_header_id,
846                p_new_qte_header_id   => x_qte_header_id,
847                X_Return_Status       => l_return_status,
848                X_Msg_Count           => x_msg_count,
849                X_Msg_Data            => x_msg_data
850              );
851           IF aso_debug_pub.g_debug_flag = 'Y' THEN
852 		aso_debug_pub.ADD ( 'Copy_Quote - After Copy_Opp_Quote: l_return_status '||l_return_status , 1 , 'N' );
853 		END IF;
854           IF ( l_return_status <> FND_API.G_RET_STS_SUCCESS ) THEN
855              x_return_status            := l_return_status;
856              RAISE FND_API.G_EXC_ERROR;
857           END IF;
858 
859       END IF;
860 
861       -- vtariker Price/Tax Enh
862       IF aso_debug_pub.g_debug_flag = 'Y' THEN
863       aso_debug_pub.ADD ( 'Copy_Quote - P_Copy_Quote_Control_Rec.Pricing_Request_Type'||
864 					  P_Copy_Quote_Control_Rec.Pricing_Request_Type , 1 , 'N' );
865       aso_debug_pub.ADD ( 'Copy_Quote - P_Copy_Quote_Control_Rec.Header_Pricing_Event'||
866 					  P_Copy_Quote_Control_Rec.Header_Pricing_Event , 1 , 'N' );
867       aso_debug_pub.ADD ( 'Copy_Quote - P_Copy_Quote_Control_Rec.Price_Mode'||
868 					  P_Copy_Quote_Control_Rec.Price_Mode , 1 , 'N' );
869       aso_debug_pub.ADD ( 'Copy_Quote - P_Copy_Quote_Control_Rec.Calculate_Tax_Flag'||
870 					  P_Copy_Quote_Control_Rec.Calculate_Tax_Flag , 1 , 'N' );
871       aso_debug_pub.ADD ( 'Copy_Quote - P_Copy_Quote_Control_Rec.Calculate_Freight_Charge_Flag'||
872 					  P_Copy_Quote_Control_Rec.Calculate_Freight_Charge_Flag , 1 , 'N' );
873       END IF;
874 
875       IF (P_Copy_Quote_Control_Rec.Header_Pricing_Event <> FND_API.G_MISS_CHAR
876           AND P_Copy_Quote_Control_Rec.Header_Pricing_Event IS NOT NULL) OR
877          P_Copy_Quote_Control_Rec.Calculate_Tax_Flag = 'Y' THEN
878 
879          IF P_Copy_Quote_Control_Rec.Header_Pricing_Event <> FND_API.G_MISS_CHAR
880             AND P_Copy_Quote_Control_Rec.Header_Pricing_Event IS NOT NULL THEN
881 
882              l_control_rec.pricing_request_type := P_Copy_Quote_Control_Rec.Pricing_Request_Type;
883              l_control_rec.header_pricing_event := P_Copy_Quote_Control_Rec.Header_Pricing_Event;
884              l_control_rec.price_mode           := P_Copy_Quote_Control_Rec.Price_Mode;
885              l_control_rec.Calculate_Freight_Charge_Flag
886 							   := P_Copy_Quote_Control_Rec.Calculate_Freight_Charge_Flag;
887             -- l_control_rec.calculate_tax_flag   := 'N'; -- Code change for Quoting Usability Sun ER
888          END IF;
889 
890          IF P_Copy_Quote_Control_Rec.Calculate_Tax_Flag = 'Y' THEN
891              l_control_rec.calculate_tax_flag   :=  'Y';
892          /* Code change for Quoting Usability Sun ER Start */
893          ElsIf P_Copy_Quote_Control_Rec.Calculate_Tax_Flag = 'N' THEN
894              l_control_rec.calculate_tax_flag   :=  'N';
895 	 /* Code change for Quoting Usability Sun ER End */
896          END IF;
897 
898          l_control_rec.auto_version_flag            :=  FND_API.G_TRUE;
899 
900          OPEN C_Get_Last_Upd_Date ( x_qte_header_id );
901          FETCH C_Get_Last_Upd_Date INTO l_upd_qte_header_rec.last_update_date;
902          CLOSE C_Get_Last_Upd_Date;
903 
904          l_upd_qte_header_rec.quote_header_id := x_qte_header_id;
905 
906          IF aso_debug_pub.g_debug_flag = 'Y' THEN
907          aso_debug_pub.ADD ( 'Copy_Quote - Before Update_Qte: x_qte_header_id '||x_qte_header_id , 1 , 'N' );
908          END IF;
909          aso_quote_pub.update_quote (
910             p_api_version_number         => 1.0,
911             p_init_msg_list              => fnd_api.g_false,
912             p_commit                     => fnd_api.g_false,
913             p_control_rec                => l_control_rec,
914             p_qte_header_rec             => l_upd_qte_header_rec,
915             p_hd_price_attributes_tbl    => aso_quote_pub.g_miss_price_attributes_tbl,
916             p_hd_payment_tbl             => aso_quote_pub.g_miss_payment_tbl,
917             p_hd_shipment_tbl            => aso_quote_pub.g_miss_shipment_tbl,
918             p_hd_freight_charge_tbl      => aso_quote_pub.g_miss_freight_charge_tbl,
919             p_hd_tax_detail_tbl          => aso_quote_pub.g_miss_tax_detail_tbl,
920             p_qte_line_tbl               => aso_quote_pub.g_miss_qte_line_tbl,
921             p_qte_line_dtl_tbl           => aso_quote_pub.g_miss_qte_line_dtl_tbl,
922             p_line_attr_ext_tbl          => aso_quote_pub.g_miss_Line_Attribs_Ext_TBL,
923             p_line_rltship_tbl           => aso_quote_pub.g_miss_line_rltship_tbl,
924             p_price_adjustment_tbl       => aso_quote_pub.g_miss_price_adj_tbl,
925             p_price_adj_attr_tbl         => aso_quote_pub.g_miss_price_adj_attr_tbl,
926             p_price_adj_rltship_tbl      => aso_quote_pub.g_miss_price_adj_rltship_tbl,
927             p_ln_price_attributes_tbl    => aso_quote_pub.g_miss_price_attributes_tbl,
928             p_ln_payment_tbl             => aso_quote_pub.g_miss_payment_tbl,
929             p_ln_shipment_tbl            => aso_quote_pub.g_miss_shipment_tbl,
930             p_ln_freight_charge_tbl      => aso_quote_pub.g_miss_freight_charge_tbl,
931             p_ln_tax_detail_tbl          => aso_quote_pub.g_miss_tax_detail_tbl,
932             x_qte_header_rec             => x_qte_header_rec,
933             x_qte_line_tbl               => x_qte_line_tbl,
934             x_qte_line_dtl_tbl           => x_qte_line_dtl_tbl,
935             x_hd_price_attributes_tbl    => x_hd_price_attributes_tbl,
936             x_hd_payment_tbl             => x_hd_payment_tbl,
937             x_hd_shipment_tbl            => x_hd_shipment_tbl,
938             x_hd_freight_charge_tbl      => x_hd_freight_charge_tbl,
939             x_hd_tax_detail_tbl          => x_hd_tax_detail_tbl,
940             x_line_attr_ext_tbl          => x_line_attr_ext_tbl,
941             x_line_rltship_tbl           => x_line_rltship_tbl,
942             x_price_adjustment_tbl       => x_price_adjustment_tbl,
943             x_price_adj_attr_tbl         => x_price_adj_attr_tbl,
944             x_price_adj_rltship_tbl      => x_price_adj_rltship_tbl,
945             x_ln_price_attributes_tbl    => x_ln_price_attributes_tbl,
946             x_ln_payment_tbl             => x_ln_payment_tbl,
947             x_ln_shipment_tbl            => x_ln_shipment_tbl,
948             x_ln_freight_charge_tbl      => x_ln_freight_charge_tbl,
949             x_ln_tax_detail_tbl          => x_ln_tax_detail_tbl,
950             x_return_status              => l_return_status,
951             x_msg_count                  => x_msg_count,
952             x_msg_data                   => x_msg_data
953           );
954 
955           IF aso_debug_pub.g_debug_flag = 'Y' THEN
956           aso_debug_pub.ADD ( 'Copy_Quote - After Update_Quote (Reprice/tax): l_return_status '||
957 						 l_return_status , 1 ,'N' );
958           END IF;
959           IF ( l_return_status <> FND_API.G_RET_STS_SUCCESS ) THEN
960              x_return_status            := l_return_status;
961              RAISE FND_API.G_EXC_ERROR;
962           END IF;
963 
964       END IF; -- Header_pricing_event/Tax_flag = TRUE
965 
966       -- hyang new okc
967 
968       IF NVL(FND_PROFILE.Value('OKC_ENABLE_SALES_CONTRACTS'),'N') = 'Y'
969       THEN
970 
971         IF aso_debug_pub.g_debug_flag = 'Y' THEN
972   	      aso_debug_pub.add(
973   	        'Copy_Quote - Checking whether the old quote has terms associated with.',
974   	        1,
975   	        'Y');
976   	    END IF;
977         -- bug 5314615
978         l_has_terms := OKC_TERMS_UTIL_GRP.has_terms('QUOTE', p_copy_quote_header_rec.quote_header_id);
979 
980         IF aso_debug_pub.g_debug_flag = 'Y' THEN
981   	      aso_debug_pub.add(
982   	        'Copy_Quote - l_has_terms ' || l_has_terms,
983   	        1,
984   	        'Y');
985   	    END IF;
986 
987 
988         IF l_has_terms  = 'Y'
989         THEN
990 
991           l_target_doc_type := 'QUOTE';
992           l_target_doc_Id   := x_qte_header_id;
993 
994           IF aso_debug_pub.g_debug_flag = 'Y' THEN
995     	      aso_debug_pub.add(
996     	        'Copy_Quote - P_Source_Doc_ID ' ||  P_Copy_Quote_Header_Rec.Quote_Header_Id,
997     	        1,
998     	        'Y');
999     	      aso_debug_pub.add(
1000     	        'Copy_Quote - P_Target_Doc_ID ' ||  l_target_doc_Id,
1001     	        1,
1002     	        'Y');
1003     	      aso_debug_pub.add(
1004     	        'Copy_Quote - P_Target_Doc_Type ' ||  l_target_doc_type,
1005     	        1,
1006     	        'Y');
1007     	    END IF;
1008 
1009          -- bug 4932493,always copying the contract documents
1010             IF aso_debug_pub.g_debug_flag = 'Y' THEN
1011       	      aso_debug_pub.add(
1012       	        'Copy_Quote - Copying terms, as well as contract documents',
1013       	        1,
1014       	        'Y');
1015             END IF;
1016          -- bug 5314615
1017 	    IF P_Copy_Quote_Control_Rec.New_Version = FND_API.G_TRUE THEN
1018             l_copy_for_amendment := 'Y';
1019 		  l_copy_abstract_yn   := 'Y';
1020 	    ELSE
1021             l_copy_for_amendment := 'N';
1022 		  l_copy_abstract_yn   := 'N';
1023          END IF;
1024 
1025 	      If P_Copy_Quote_Control_Rec.Copy_Contract_Terms = FND_API.G_TRUE Then  -- Code change for Quoting Usability Sun ER
1026 
1027     	      OKC_TERMS_COPY_GRP.Copy_Doc (
1028                  P_Api_Version			   => 1.0,
1029 	            P_Source_doc_Type		        => 'QUOTE',
1030                  P_Source_Doc_ID			   => P_Copy_Quote_Header_Rec.Quote_Header_Id,
1031           	  P_Target_Doc_ID			   => l_target_doc_Id,
1032           	  P_Target_Doc_Type		        => l_target_doc_type,
1033            	  P_Keep_Version			   => 'Y',
1034           	  P_Article_Effective_Date	   => NULL,
1035           	  P_Copy_Deliverables		   => 'N',
1036           	  P_Copy_Doc_Attachments	        => 'Y',
1037                  P_copy_for_amendment           => l_copy_for_amendment,
1038 		       P_copy_abstract_yn             => l_copy_abstract_yn,
1039                  X_Return_Status        	   => X_Return_Status,
1040                  X_Msg_Count             	   => X_Msg_Count,
1041                  X_Msg_Data              	   => X_Msg_Data
1042             );
1043 
1044 
1045           IF x_return_status<>FND_API.G_RET_STS_SUCCESS THEN
1046             IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1047               FND_MESSAGE.Set_Name('ASO', 'ASO_API_ERROR_COPY_DOC');
1048               FND_MSG_PUB.ADD;
1049             END IF;
1050 
1051             IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1052                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1053             ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
1054                 RAISE FND_API.G_EXC_ERROR;
1055             END IF;
1056           END IF;
1057 
1058 	      End If;  -- Code change for Quoting Usability Sun ER
1059 
1060         END IF; -- has_terms
1061 
1062       END IF;  -- profile
1063 
1064       -- end of hyang new okc
1065 
1066       -- vtariker Price/Tax Enh
1067 
1068       -- bug 5162246
1069 	 OPEN C_Get_RSA(x_qte_header_id);
1070 	 FETCH C_Get_RSA INTO l_rsa;
1071 	 CLOSE C_Get_RSA;
1072 
1073 	 IF aso_debug_pub.g_debug_flag = 'Y' THEN
1074 	 aso_debug_pub.ADD ( 'Copy_Quote - l_rsa: '|| l_rsa  , 1 , 'Y' );
1075 	 END IF;
1076 
1077 	 IF  ( (P_Copy_Quote_Control_Rec.New_Version = FND_API.G_TRUE) and (nvl(l_rsa,'N') = 'Y') ) then
1078 
1079         -- get the note id for the original quote
1080         OPEN get_note_id(P_Copy_Quote_Header_Rec.quote_header_id);
1081 	   FETCH get_note_id into l_note_id;
1082 	   CLOSE get_note_id;
1083 
1084 	    IF aso_debug_pub.g_debug_flag = 'Y' THEN
1085 	       aso_debug_pub.ADD ( 'Copy_Quote - l_note_id: '|| l_note_id  , 1 , 'Y' );
1086 	       aso_debug_pub.ADD ( 'Copy_Quote - Before Calling JTF_NOTES_PUB.Create_Note_Context', 1 , 'Y' );
1087 	    END IF;
1088 
1089         JTF_NOTES_PUB.Create_Note_Context(
1090                p_validation_level      => FND_API.G_VALID_LEVEL_NONE,
1091                x_return_status         => x_return_status           ,
1092                p_jtf_note_id           => l_note_id                 ,
1093                p_last_update_date      => sysdate                   ,
1094                p_last_updated_by       => FND_Global.USER_ID        ,
1095                p_creation_date         => sysdate                   ,
1096                p_created_by            => FND_Global.USER_ID        ,
1097                p_last_update_login     => FND_GLOBAL.LOGIN_ID       ,
1098                p_note_context_type_id  => x_qte_header_id           ,
1099                p_note_context_type     => 'ASO_QUOTE'               ,
1100                x_note_context_id       => lx_jtf_note_context_id
1101                );
1102 
1103 	     IF aso_debug_pub.g_debug_flag = 'Y' THEN
1104 	       aso_debug_pub.ADD ( 'Copy_Quote - After Calling JTF_NOTES_PUB.Create_Note_Context', 1 , 'Y' );
1105 	       aso_debug_pub.ADD ( 'Copy_Quote - x_return_status       : ' || x_return_status, 1 , 'Y' );
1106 	       aso_debug_pub.ADD ( 'Copy_Quote - lx_jtf_note_context_id: ' || lx_jtf_note_context_id, 1 , 'Y' );
1107 	     END IF;
1108           IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1109             RAISE FND_API.G_EXC_ERROR;
1110           ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1111             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1112           END IF;
1113 
1114       END IF; -- end if for the new version and rsa check
1115 
1116      -- ER 3177722
1117      if l_copy_config_profile='N' then
1118            IF aso_debug_pub.g_debug_flag = 'Y' THEN
1119 	         aso_debug_pub.add('Copy Quote -before   ASO_QUOTE_PUB.validate_model_configuration x_qte_header_id:  '||x_qte_header_id, 1, 'N');
1120             end if;
1121 
1122       ASO_QUOTE_PUB.validate_model_configuration
1123 			(
1124 			P_Api_Version_Number  => 1.0,
1125 			P_Init_Msg_List       => FND_API.G_FALSE,
1126 			P_Commit              => FND_API.G_FALSE,
1127                P_Quote_header_id     =>x_qte_header_id,
1128 			P_UPDATE_QUOTE        =>'T',
1129 			P_CONFIG_EFFECTIVE_DATE      => sysdate,
1130 			P_CONFIG_model_lookup_DATE   => sysdate,
1131 			X_Config_tbl          => lx_config_tbl,
1132 			X_Return_Status       => l_return_status,
1133 			X_Msg_Count           => x_msg_count,
1134 			X_Msg_Data            => x_msg_data
1135                );
1136 
1137          IF aso_debug_pub.g_debug_flag = 'Y' THEN
1138 			aso_debug_pub.add('Copy Quote -After  ASO_QUOTE_PUB.validate_model_configuration return status:  '||l_Return_Status, 1, 'N');
1139 			aso_debug_pub.add('Copy Quote -After  ASO_QUOTE_PUB.validate_model_configuration lx_config_tbl:  '||lx_config_tbl.count, 1, 'N');
1140 			aso_debug_pub.add('Copy Quote -After  ASO_QUOTE_PUB.validate_model_configuration x_msg_count:  '||x_msg_count, 1, 'N');
1141       END IF;
1142 	 /* if (l_Return_Status=FND_API.G_RET_STS_SUCCESS) and (lx_config_tbl.count>0) then
1143                        commit work;
1144 		      aso_debug_pub.add('rassharm Copy Quote -after   ASO_QUOTE_PUB.validate_model_configuration committing data return status:  ', 1, 'N');
1145 
1146 		    end if;
1147        */
1148 
1149 if (l_Return_Status=FND_API.G_RET_STS_SUCCESS)  then
1150     x_return_status            := FND_API.G_RET_STS_SUCCESS;
1151 
1152 elsIF ( l_return_status = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
1153          x_return_status            := FND_API.G_RET_STS_UNEXP_ERROR;
1154          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1155 ELSIF ( l_return_status = FND_API.G_RET_STS_ERROR ) THEN
1156          x_return_status            := FND_API.G_RET_STS_ERROR;
1157          RAISE FND_API.G_EXC_ERROR;
1158 END IF;
1159 
1160 end if; -- profile
1161 
1162 
1163 	 IF aso_debug_pub.g_debug_flag = 'Y' THEN
1164 	 aso_debug_pub.ADD ( 'Copy_Quote - END ' , 1 , 'Y' );
1165 	 END IF;
1166 
1167       x_return_status            := FND_API.G_RET_STS_SUCCESS;
1168 
1169       --
1170       -- End of API body
1171       --
1172 
1173       -- Standard check for p_commit
1174       IF FND_API.to_Boolean ( p_commit ) THEN
1175          COMMIT WORK;
1176       END IF;
1177       -- Standard call to get message count and if count is 1, get message info.
1178       FND_MSG_PUB.Count_And_Get (
1179           p_count =>                      x_msg_count
1180        , p_data =>                        x_msg_data
1181        );
1182 
1183    EXCEPTION
1184       WHEN FND_API.G_EXC_ERROR THEN
1185          ASO_UTILITY_PVT.HANDLE_EXCEPTIONS (
1186              P_API_NAME =>                   L_API_NAME
1187           , P_PKG_NAME =>                    G_PKG_NAME
1188           , P_EXCEPTION_LEVEL =>             FND_MSG_PUB.G_MSG_LVL_ERROR
1189           , P_PACKAGE_TYPE =>                ASO_UTILITY_PVT.G_PVT
1190           , X_MSG_COUNT =>                   X_MSG_COUNT
1191           , X_MSG_DATA =>                    X_MSG_DATA
1192           , X_RETURN_STATUS =>               X_RETURN_STATUS
1193           );
1194 
1195       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1196          ASO_UTILITY_PVT.HANDLE_EXCEPTIONS (
1197              P_API_NAME =>                   L_API_NAME
1198           , P_PKG_NAME =>                    G_PKG_NAME
1199           , P_EXCEPTION_LEVEL =>             FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
1200           , P_PACKAGE_TYPE =>                ASO_UTILITY_PVT.G_PVT
1201           , X_MSG_COUNT =>                   X_MSG_COUNT
1202           , X_MSG_DATA =>                    X_MSG_DATA
1203           , X_RETURN_STATUS =>               X_RETURN_STATUS
1204           );
1205 
1206       WHEN OTHERS THEN
1207          ASO_UTILITY_PVT.HANDLE_EXCEPTIONS (
1208              P_API_NAME =>                   L_API_NAME
1209           , P_PKG_NAME =>                    G_PKG_NAME
1210           , P_SQLCODE =>                     SQLCODE
1211           , P_SQLERRM =>                     SQLERRM
1212           , P_EXCEPTION_LEVEL =>             ASO_UTILITY_PVT.G_EXC_OTHERS
1213           , P_PACKAGE_TYPE =>                ASO_UTILITY_PVT.G_PVT
1214           , X_MSG_COUNT =>                   X_MSG_COUNT
1215           , X_MSG_DATA =>                    X_MSG_DATA
1216           , X_RETURN_STATUS =>               X_RETURN_STATUS
1217           );
1218 
1219    END Copy_Quote;
1220 
1221 
1222    PROCEDURE Copy_Header_Rows (
1223        P_Api_Version_Number IN NUMBER
1224     , P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE
1225     , P_Commit IN VARCHAR2 := FND_API.G_FALSE
1226     , P_Qte_Header_Rec IN ASO_QUOTE_PUB.qte_header_rec_Type
1227     /* Code change for Quoting Usability Sun ER Start */
1228     , P_Hd_Shipment_REC         IN  ASO_QUOTE_PUB.Shipment_Rec_Type          := ASO_QUOTE_PUB.G_MISS_Shipment_Rec
1229     , P_hd_Payment_Tbl	        IN  ASO_QUOTE_PUB.Payment_Tbl_Type           := ASO_QUOTE_PUB.G_MISS_PAYMENT_TBL
1230     , P_hd_Tax_Detail_Tbl	IN  ASO_QUOTE_PUB.Tax_Detail_Tbl_Type        := ASO_QUOTE_PUB.G_Miss_Tax_Detail_Tbl
1231     /* Code change for Quoting Usability Sun ER End */
1232     , P_Copy_Quote_Control_Rec IN ASO_COPY_QUOTE_PUB.Copy_Quote_Control_Rec_Type
1233     , X_Qte_Header_Id OUT NOCOPY /* file.sql.39 change */   NUMBER
1234     , X_Price_Index_Link_Tbl OUT NOCOPY /* file.sql.39 change */   ASO_QUOTE_HEADERS_PVT.Index_Link_Tbl_Type
1235     , X_Return_Status OUT NOCOPY /* file.sql.39 change */   VARCHAR2
1236     , X_Msg_Count OUT NOCOPY /* file.sql.39 change */   NUMBER
1237     , X_Msg_Data OUT NOCOPY /* file.sql.39 change */   VARCHAR2
1238     ) IS
1239 
1240       l_qte_header_id NUMBER := P_qte_Header_Rec.quote_header_id;
1241       l_old_qte_header_id NUMBER := P_qte_Header_Rec.quote_header_id;
1242       l_qte_header_rec ASO_QUOTE_PUB.Qte_Header_Rec_Type := P_qte_Header_Rec;
1243       l_payment_tbl ASO_QUOTE_PUB.Payment_Tbl_Type;
1244       l_shipment_tbl ASO_QUOTE_PUB.Shipment_Tbl_Type;
1245       l_shipment_rec ASO_QUOTE_PUB.Shipment_Rec_Type;
1246       l_freight_charge_tbl ASO_QUOTE_PUB.Freight_Charge_Tbl_Type;
1247       l_tax_detail_tbl ASO_QUOTE_PUB.Tax_Detail_Tbl_Type;
1248       l_Price_Attr_Tbl ASO_QUOTE_PUB.Price_Attributes_Tbl_Type;
1249       l_Price_Adj_Tbl ASO_QUOTE_PUB.Price_Adj_Tbl_Type;
1250       l_Price_Adj_Attr_Tbl ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type;
1251       lx_hd_Price_Adj_Tbl ASO_QUOTE_PUB.Price_Adj_Tbl_Type;
1252       l_control_rec ASO_QUOTE_PUB.Control_Rec_Type;
1253       X_hd_Attr_Ext_Tbl ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type;
1254       X_Sales_Credit_Tbl ASO_QUOTE_PUB.Sales_Credit_Tbl_Type;
1255       X_Quote_Party_Tbl ASO_QUOTE_PUB.Quote_Party_Tbl_Type;
1256       l_hd_Attr_Ext_Tbl ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type;
1257       l_quote_party_tbl ASO_QUOTE_PUB.Quote_Party_Tbl_Type;
1258       l_quote_party_rec ASO_QUOTE_PUB.Quote_Party_rec_Type;
1259       l_sales_credit_tbl ASO_QUOTE_PUB.Sales_Credit_Tbl_Type;
1260       l_sales_credit_rec ASO_QUOTE_PUB.Sales_Credit_rec_Type;
1261       l_Line_Attr_Ext_Tbl ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type;
1262       l_api_version CONSTANT NUMBER := 1.0;
1263       l_return_status VARCHAR2 ( 1 );
1264       l_api_name CONSTANT VARCHAR2 ( 30 ) := 'Copy_Header_Rows';
1265       l_api_version_number CONSTANT NUMBER := 1.0;
1266 
1267 
1268       l_qte_header_rec_out ASO_QUOTE_PUB.Qte_Header_Rec_Type;
1269       l_Price_Attr_Tbl_out ASO_QUOTE_PUB.Price_Attributes_Tbl_Type;
1270 	 l_Price_Adj_Attr_Tbl_out ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type;
1271 	 l_freight_charge_tbl_out ASO_QUOTE_PUB.Freight_Charge_Tbl_Type;
1272 	 l_tax_detail_tbl_out ASO_QUOTE_PUB.Tax_Detail_Tbl_Type;
1273       l_payment_tbl_out ASO_QUOTE_PUB.Payment_Tbl_Type;
1274 
1275       l_old_qte_num                   NUMBER;
1276       l_sequence                      NUMBER := null;
1277       l_sales_team_prof               VARCHAR2(30) := FND_PROFILE.value('ASO_AUTO_TEAM_ASSIGN');
1278 
1279 	 --BC4J Fix
1280       l_dup_Price_Adj_Tbl ASO_QUOTE_PUB.Price_Adj_Tbl_Type;
1281 
1282       CURSOR C_Get_Sales_Team (l_qte_num NUMBER) IS
1283        SELECT RESOURCE_ID,
1284               RESOURCE_GRP_ID,
1285               REQUEST_ID,
1286               PROGRAM_APPLICATION_ID,
1287               PROGRAM_ID,
1288               PROGRAM_UPDATE_DATE,
1289               KEEP_FLAG,
1290               UPDATE_ACCESS_FLAG,
1291               CREATED_BY_TAP_FLAG,
1292               TERRITORY_ID,
1293               TERRITORY_SOURCE_FLAG,
1294               ROLE_ID,
1295               ATTRIBUTE_CATEGORY,
1296               ATTRIBUTE1,
1297               ATTRIBUTE2,
1298               ATTRIBUTE3,
1299               ATTRIBUTE4,
1300               ATTRIBUTE5,
1301               ATTRIBUTE6,
1302               ATTRIBUTE7,
1303               ATTRIBUTE8,
1304               ATTRIBUTE9,
1305               ATTRIBUTE10,
1306               ATTRIBUTE11,
1307               ATTRIBUTE12,
1308               ATTRIBUTE13,
1309               ATTRIBUTE14,
1310               ATTRIBUTE15,
1311 		    ATTRIBUTE16,
1312 		    ATTRIBUTE17,
1313 		    ATTRIBUTE18,
1314 		    ATTRIBUTE19,
1315 		    ATTRIBUTE20,
1316 		    OBJECT_VERSION_NUMBER
1317        FROM ASO_QUOTE_ACCESSES
1318        WHERE QUOTE_NUMBER = l_qte_num;
1319 
1320       CURSOR C_Get_Old_Qte (l_hdr_id NUMBER) IS
1321        SELECT Quote_Number
1322        FROM ASO_QUOTE_HEADERS_ALL
1323        WHERE QUote_Header_Id = l_hdr_id;
1324 
1325 	 l_qte_access_tbl    aso_quote_pub.qte_access_tbl_type  := aso_quote_pub.g_miss_qte_access_tbl;
1326 	 x_qte_access_tbl    aso_quote_pub.qte_access_tbl_type;
1327    BEGIN
1328 
1329       -- Standard Start of API savepoint
1330       SAVEPOINT COPY_HEADER_ROWS_PVT;
1331 
1332       -- Standard call to check for call compatibility.
1333       IF NOT FND_API.Compatible_API_Call (
1334                  l_api_version_number
1335               , p_api_version_number
1336               , l_api_name
1337               , G_PKG_NAME
1338               ) THEN
1339          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1340       END IF;
1341 
1342       -- Initialize message list if p_init_msg_list is set to TRUE.
1343       IF FND_API.to_Boolean ( p_init_msg_list ) THEN
1344          FND_MSG_PUB.initialize;
1345       END IF;
1346 
1347       -- Debug Message
1348       IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW ) THEN
1349          FND_MESSAGE.Set_Name ('ASO' , 'Copy Quote Header API: Start' );
1350          FND_MSG_PUB.ADD;
1351       END IF;
1352 
1353       --  Initialize API return status to success
1354       l_return_status            := FND_API.G_RET_STS_SUCCESS;
1355 
1356       --
1357       -- API body
1358       --
1359 
1360       /* Code change for Quoting Usability Sun ER Start */
1361 
1362       l_shipment_tbl := ASO_UTILITY_PVT.Query_Shipment_Rows (
1363                         p_qte_header_id => l_qte_header_id,
1364                         p_qte_line_id   => NULL );
1365 
1366       IF aso_debug_pub.g_debug_flag = 'Y' THEN
1367 	 aso_debug_pub.ADD ( 'Copy_Header_Rows - l_shipment_tbl.count: ' || TO_CHAR ( l_shipment_tbl.COUNT ) , 1 , 'N' );
1368       END IF;
1369 
1370       l_freight_charge_tbl  := ASO_UTILITY_PVT.Query_Freight_Charge_Rows (
1371                                P_Shipment_Tbl =>  l_shipment_tbl );
1372 
1373       IF aso_debug_pub.g_debug_flag = 'Y' THEN
1374 	 aso_debug_pub.ADD ( 'Copy_Header_Rows - l_freight_charge_tbl.count: ' || TO_CHAR ( l_freight_charge_tbl.COUNT ) , 1 , 'N' );
1375       END IF;
1376 
1377       l_tax_detail_tbl := ASO_UTILITY_PVT.Query_Tax_Detail_Rows (
1378                           p_qte_header_id => l_qte_header_id,
1379                           p_qte_line_id   => NULL,
1380                           p_shipment_tbl  => ASO_QUOTE_PUB.g_miss_shipment_tbl );
1381 
1382       IF aso_debug_pub.g_debug_flag = 'Y' THEN
1383 	 aso_debug_pub.ADD ( 'Copy_Header_Rows - l_tax_detail_tbl.count: ' || TO_CHAR ( l_tax_detail_tbl.COUNT ) , 1 , 'N' );
1384       END IF;
1385       /* Code change for Quoting Usability Sun ER End */
1386 
1387       If P_Copy_Quote_Control_Rec.Copy_To_Same_Customer = FND_API.G_TRUE Then  -- Code change for Quoting Usability Sun ER
1388 
1389       IF aso_debug_pub.g_debug_flag = 'Y' THEN
1390 	 aso_debug_pub.ADD ( 'Copy_Header_Rows - P_Copy_Quote_Control_Rec.Copy_To_Same_Customer is True ', 1 , 'N' );
1391       END IF;
1392 
1393       l_price_adj_tbl            :=
1394             ASO_UTILITY_PVT.Query_Price_Adj_Rows (
1395                 p_qte_header_id =>              l_qte_header_id
1396              , p_qte_line_id =>                 NULL
1397              );
1398 
1399       l_dup_Price_Adj_Tbl := l_price_adj_tbl;
1400 
1401       l_price_adj_attr_tbl       :=
1402             ASO_UTILITY_PVT.Query_Price_Adj_Attr_Rows (
1403                 p_price_adj_tbl =>              l_price_adj_tbl
1404              );
1405 
1406       l_price_attr_tbl           :=
1407             ASO_UTILITY_PVT.Query_Price_Attr_Rows (
1408                 p_qte_header_id =>              l_qte_header_id
1409              , p_qte_line_id =>                 NULL
1410              );
1411 
1412       /* l_payment_tbl              :=
1413             ASO_UTILITY_PVT.Query_Payment_Rows (
1414                 p_qte_header_id =>              l_qte_header_id
1415              , p_qte_line_id =>                 NULL
1416              );
1417 
1418       IF aso_debug_pub.g_debug_flag = 'Y' THEN
1419 	 aso_debug_pub.ADD ( 'Copy_Rows - payment_tbl.count: ' || TO_CHAR ( l_payment_tbl.COUNT ) , 1 , 'N' );
1420 	 END IF;  */
1421 
1422       /* Code change for Quoting Usability Sun ER Start */
1423 
1424       If P_Copy_Quote_Control_Rec.Copy_Shipping = FND_API.G_FALSE Then
1425          l_shipment_tbl(1).SHIP_TO_CUST_ACCOUNT_ID := Null;
1426 	 l_shipment_tbl(1).SHIP_TO_CUST_PARTY_ID := Null;
1427 	 l_shipment_tbl(1).SHIP_TO_PARTY_ID := Null;
1428 	 l_shipment_tbl(1).SHIP_TO_PARTY_SITE_ID := Null;
1429 	 l_shipment_tbl(1).SHIP_TO_PARTY_NAME := Null;
1430 	 l_shipment_tbl(1).SHIP_TO_CONTACT_FIRST_NAME := Null;
1431 	 l_shipment_tbl(1).SHIP_TO_CONTACT_MIDDLE_NAME := Null;
1432 	 l_shipment_tbl(1).SHIP_TO_CONTACT_LAST_NAME := Null;
1433 	 l_shipment_tbl(1).SHIP_TO_ADDRESS1 := Null;
1434 	 l_shipment_tbl(1).SHIP_TO_ADDRESS2 := Null;
1435 	 l_shipment_tbl(1).SHIP_TO_ADDRESS3 := Null;
1436 	 l_shipment_tbl(1).SHIP_TO_ADDRESS4 := Null;
1437 	 l_shipment_tbl(1).SHIP_TO_COUNTRY_CODE := Null;
1438 	 l_shipment_tbl(1).SHIP_TO_COUNTRY := Null;
1439 	 l_shipment_tbl(1).SHIP_TO_CITY := Null;
1440 	 l_shipment_tbl(1).SHIP_TO_POSTAL_CODE := Null;
1441 	 l_shipment_tbl(1).SHIP_TO_STATE := Null;
1442 	 l_shipment_tbl(1).SHIP_TO_PROVINCE := Null;
1443 	 l_shipment_tbl(1).SHIP_TO_COUNTY := Null;
1444 	 l_shipment_tbl(1).SHIP_METHOD_CODE := Null;
1445          l_shipment_tbl(1).FREIGHT_TERMS_CODE := Null;
1446 	 l_shipment_tbl(1).FOB_CODE := Null;
1447 	 l_shipment_tbl(1).DEMAND_CLASS_CODE := Null;
1448 	 l_shipment_tbl(1).REQUEST_DATE_TYPE := Null;
1449 	 l_shipment_tbl(1).REQUEST_DATE := Null;
1450 	 l_shipment_tbl(1).SHIPMENT_PRIORITY_CODE := Null;
1451 	 l_shipment_tbl(1).SHIPPING_INSTRUCTIONS := Null;
1452 	 l_shipment_tbl(1).PACKING_INSTRUCTIONS := Null;
1453       End If;
1454 
1455       If P_Copy_Quote_Control_Rec.Copy_Billing = FND_API.G_FALSE Then
1456           l_qte_header_rec.INVOICE_TO_CUST_ACCOUNT_ID := Null;
1457 	  l_qte_header_rec.INVOICE_TO_CUST_PARTY_ID := Null;
1458 	  l_qte_header_rec.INVOICE_TO_PARTY_ID := Null;
1459 	  l_qte_header_rec.INVOICE_TO_PARTY_SITE_ID := Null;
1460 	  l_qte_header_rec.INVOICE_TO_PARTY_NAME := Null;
1461 	  l_qte_header_rec.INVOICE_TO_CONTACT_FIRST_NAME := Null;
1462 	  l_qte_header_rec.INVOICE_TO_CONTACT_MIDDLE_NAME := Null;
1463 	  l_qte_header_rec.INVOICE_TO_CONTACT_LAST_NAME := Null;
1464 	  l_qte_header_rec.INVOICE_TO_ADDRESS1 := Null;
1465 	  l_qte_header_rec.INVOICE_TO_ADDRESS2 := Null;
1466 	  l_qte_header_rec.INVOICE_TO_ADDRESS3 := Null;
1467 	  l_qte_header_rec.INVOICE_TO_ADDRESS4 := Null;
1468 	  l_qte_header_rec.INVOICE_TO_COUNTRY_CODE := Null;
1469 	  l_qte_header_rec.INVOICE_TO_COUNTRY := Null;
1470 	  l_qte_header_rec.INVOICE_TO_CITY := Null;
1471 	  l_qte_header_rec.INVOICE_TO_POSTAL_CODE := Null;
1472 	  l_qte_header_rec.INVOICE_TO_STATE := Null;
1473 	  l_qte_header_rec.INVOICE_TO_PROVINCE := Null;
1474 	  l_qte_header_rec.INVOICE_TO_COUNTY := Null;
1475       End If;
1476 
1477       If P_Copy_Quote_Control_Rec.Copy_End_Customer = FND_API.G_FALSE Then
1478          l_qte_header_rec.END_CUSTOMER_PARTY_ID :=  Null;
1479 	 l_qte_header_rec.END_CUSTOMER_PARTY_SITE_ID :=  Null;
1480 	 l_qte_header_rec.END_CUSTOMER_CUST_ACCOUNT_ID :=  Null;
1481 	 l_qte_header_rec.END_CUSTOMER_CUST_PARTY_ID :=  Null;
1482       End If;
1483 
1484       If P_Copy_Quote_Control_Rec.Copy_Sales_Credit = FND_API.G_TRUE Then
1485          l_sales_credit_tbl :=  ASO_UTILITY_PVT.Query_Sales_Credit_Row (
1486                                 P_qte_header_Id => l_qte_header_id ,
1487                                 P_qte_line_id   => NULL );
1488 
1489          IF aso_debug_pub.g_debug_flag = 'Y' THEN
1490 	    aso_debug_pub.ADD ( 'Copy_Header_Rows - l_sales_credit_tbl.count: ' || TO_CHAR ( l_sales_credit_tbl.COUNT ) , 1 , 'N' );
1491          END IF;
1492       End If;
1493 
1494       ElsIf P_Copy_Quote_Control_Rec.Copy_To_Same_Customer = FND_API.G_FALSE Then
1495 
1496         IF aso_debug_pub.g_debug_flag = 'Y' THEN
1497 	   aso_debug_pub.ADD ( 'Copy_Header_Rows - P_Copy_Quote_Control_Rec.Copy_To_Same_Customer is False ', 1 , 'N' );
1498 	END IF;
1499 
1500 	l_shipment_tbl(1).SHIP_TO_CUST_ACCOUNT_ID     := P_Hd_Shipment_Rec.SHIP_TO_CUST_ACCOUNT_ID;
1501 	l_shipment_tbl(1).SHIP_TO_CUST_PARTY_ID       := P_Hd_Shipment_Rec.SHIP_TO_CUST_PARTY_ID;
1502 	l_shipment_tbl(1).SHIP_TO_PARTY_ID            := P_Hd_Shipment_Rec.SHIP_TO_PARTY_ID;
1503 	l_shipment_tbl(1).SHIP_TO_PARTY_SITE_ID       := P_Hd_Shipment_Rec.SHIP_TO_PARTY_SITE_ID;
1504 	l_shipment_tbl(1).SHIP_TO_PARTY_NAME          := P_Hd_Shipment_Rec.SHIP_TO_PARTY_NAME;
1505 	l_shipment_tbl(1).SHIP_TO_CONTACT_FIRST_NAME  := P_Hd_Shipment_Rec.SHIP_TO_CONTACT_FIRST_NAME;
1506 	l_shipment_tbl(1).SHIP_TO_CONTACT_MIDDLE_NAME := P_Hd_Shipment_Rec.SHIP_TO_CONTACT_MIDDLE_NAME;
1507 	l_shipment_tbl(1).SHIP_TO_CONTACT_LAST_NAME   := P_Hd_Shipment_Rec.SHIP_TO_CONTACT_LAST_NAME;
1508 	l_shipment_tbl(1).SHIP_TO_ADDRESS1            := P_Hd_Shipment_Rec.SHIP_TO_ADDRESS1;
1509 	l_shipment_tbl(1).SHIP_TO_ADDRESS2            := P_Hd_Shipment_Rec.SHIP_TO_ADDRESS2;
1510 	l_shipment_tbl(1).SHIP_TO_ADDRESS3            := P_Hd_Shipment_Rec.SHIP_TO_ADDRESS3;
1511 	l_shipment_tbl(1).SHIP_TO_ADDRESS4            := P_Hd_Shipment_Rec.SHIP_TO_ADDRESS4;
1512 	l_shipment_tbl(1).SHIP_TO_COUNTRY_CODE        := P_Hd_Shipment_Rec.SHIP_TO_COUNTRY_CODE;
1513 	l_shipment_tbl(1).SHIP_TO_COUNTRY             := P_Hd_Shipment_Rec.SHIP_TO_COUNTRY;
1514 	l_shipment_tbl(1).SHIP_TO_CITY                := P_Hd_Shipment_Rec.SHIP_TO_CITY;
1515 	l_shipment_tbl(1).SHIP_TO_POSTAL_CODE         := P_Hd_Shipment_Rec.SHIP_TO_POSTAL_CODE;
1516 	l_shipment_tbl(1).SHIP_TO_STATE               := P_Hd_Shipment_Rec.SHIP_TO_STATE;
1517 	l_shipment_tbl(1).SHIP_TO_PROVINCE            := P_Hd_Shipment_Rec.SHIP_TO_PROVINCE;
1518 	l_shipment_tbl(1).SHIP_TO_COUNTY              := P_Hd_Shipment_Rec.SHIP_TO_COUNTY;
1519 
1520 	If P_Copy_Quote_Control_Rec.Copy_Shipping = FND_API.G_FALSE Then
1521            l_shipment_tbl(1).SHIP_METHOD_CODE := Null;
1522            l_shipment_tbl(1).FREIGHT_TERMS_CODE := Null;
1523 	   l_shipment_tbl(1).FOB_CODE := Null;
1524 	   l_shipment_tbl(1).DEMAND_CLASS_CODE := Null;
1525 	   l_shipment_tbl(1).REQUEST_DATE_TYPE := Null;
1526 	   l_shipment_tbl(1).REQUEST_DATE := Null;
1527 	   l_shipment_tbl(1).SHIPMENT_PRIORITY_CODE := Null;
1528 	   l_shipment_tbl(1).SHIPPING_INSTRUCTIONS := Null;
1529 	   l_shipment_tbl(1).PACKING_INSTRUCTIONS := Null;
1530 	End If;
1531 
1532 	-- If Tax Handling is Exempt then don't copy following values
1533 	FOR j IN 1 .. l_tax_detail_tbl.COUNT LOOP
1534             If l_tax_detail_tbl(j).TAX_EXEMPT_FLAG = 'E' Then
1535 	       l_tax_detail_tbl(j).TAX_EXEMPT_FLAG        := P_hd_Tax_Detail_Tbl(j).TAX_EXEMPT_FLAG;
1536 	       l_tax_detail_tbl(j).TAX_EXEMPT_NUMBER      := P_hd_Tax_Detail_Tbl(j).TAX_EXEMPT_FLAG;
1537 	       l_tax_detail_tbl(j).TAX_EXEMPT_REASON_CODE := P_hd_Tax_Detail_Tbl(j).TAX_EXEMPT_REASON_CODE;
1538             End If;
1539 	END LOOP;
1540 
1541         l_price_adj_tbl      := aso_quote_pub.g_miss_price_adj_tbl;
1542 
1543         l_dup_Price_Adj_Tbl  := l_price_adj_tbl;
1544 
1545         l_price_adj_attr_tbl := aso_quote_pub.g_miss_price_adj_attr_tbl;
1546 
1547         l_price_attr_tbl     := aso_quote_pub.g_miss_price_attributes_tbl;
1548 
1549 	l_sales_credit_tbl :=  ASO_UTILITY_PVT.Query_Sales_Credit_Row (
1550                                 P_qte_header_Id => l_qte_header_id ,
1551                                 P_qte_line_id   => NULL );
1552 
1553         IF aso_debug_pub.g_debug_flag = 'Y' THEN
1554 	   aso_debug_pub.ADD ( 'Copy_Header_Rows - l_sales_credit_tbl.count: ' || TO_CHAR ( l_sales_credit_tbl.COUNT ) , 1 , 'N' );
1555         END IF;
1556 
1557       End If;
1558 
1559       If P_Copy_Quote_Control_Rec.Copy_Flexfield = FND_API.G_FALSE Then
1560           l_qte_header_rec.ATTRIBUTE1 :=  Null;
1561 	  l_qte_header_rec.ATTRIBUTE2 :=  Null;
1562 	  l_qte_header_rec.ATTRIBUTE3 :=  Null;
1563 	  l_qte_header_rec.ATTRIBUTE4 :=  Null;
1564 	  l_qte_header_rec.ATTRIBUTE5 :=  Null;
1565 	  l_qte_header_rec.ATTRIBUTE6 :=  Null;
1566 	  l_qte_header_rec.ATTRIBUTE7 :=  Null;
1567 	  l_qte_header_rec.ATTRIBUTE8 :=  Null;
1568 	  l_qte_header_rec.ATTRIBUTE9 :=  Null;
1569 	  l_qte_header_rec.ATTRIBUTE10 := Null;
1570 	  l_qte_header_rec.ATTRIBUTE11 := Null;
1571 	  l_qte_header_rec.ATTRIBUTE12 := Null;
1572 	  l_qte_header_rec.ATTRIBUTE13 := Null;
1573 	  l_qte_header_rec.ATTRIBUTE14 := Null;
1574 	  l_qte_header_rec.ATTRIBUTE15 := Null;
1575 	  l_qte_header_rec.ATTRIBUTE16 := Null;
1576 	  l_qte_header_rec.ATTRIBUTE17 := Null;
1577 	  l_qte_header_rec.ATTRIBUTE18 := Null;
1578 	  l_qte_header_rec.ATTRIBUTE19 := Null;
1579 	  l_qte_header_rec.ATTRIBUTE20 := Null;
1580       End If;
1581       /* Code change for Quoting Usability Sun ER End */
1582 
1583       l_Line_Attr_Ext_Tbl        :=
1584             ASO_UTILITY_PVT.Query_Line_Attribs_header_Rows (
1585                 P_Qte_header_Id =>              l_qte_header_id
1586              );
1587 /*
1588       l_sales_credit_tbl         :=
1589             ASO_UTILITY_PVT.Query_Sales_Credit_Row (
1590                 P_qte_header_Id =>              l_qte_header_id
1591              , P_qte_line_id =>                 NULL
1592              );
1593 */
1594       l_quote_party_tbl          :=
1595             ASO_UTILITY_PVT.Query_Quote_Party_Row (
1596                 P_Qte_header_Id =>              l_qte_header_id
1597              , P_qte_line_id =>                 NULL
1598              );
1599 
1600       IF P_Copy_Quote_Control_Rec.Copy_Header_Only = FND_API.G_TRUE THEN
1601          l_qte_header_rec.TOTAL_LIST_PRICE := NULL;
1602          l_qte_header_rec.TOTAL_ADJUSTED_AMOUNT := NULL;
1603          l_qte_header_rec.TOTAL_ADJUSTED_PERCENT := NULL;
1604          l_qte_header_rec.TOTAL_TAX := NULL;
1605          l_qte_header_rec.TOTAL_SHIPPING_CHARGE := NULL;
1606          l_qte_header_rec.SURCHARGE := NULL;
1607          l_qte_header_rec.TOTAL_QUOTE_PRICE := NULL;
1608          l_qte_header_rec.PAYMENT_AMOUNT := NULL;
1609          l_qte_header_rec.ORDERED_DATE := NULL;
1610       END IF;
1611 
1612       l_qte_header_rec.PUBLISH_FLAG := NULL;
1613       l_qte_header_rec.ORDER_ID  := NULL;
1614       l_qte_header_rec.ORDER_NUMBER := NULL;
1615       l_qte_header_rec.quote_header_id := NULL;
1616       l_qte_header_rec.price_updated_date := NULL;
1617 	 l_qte_header_rec.tax_updated_date := NULL;
1618       l_qte_header_rec.price_request_id := NULL;
1619       l_qte_header_rec.price_frozen_date := NULL;
1620 
1621 -- hyang new okc
1622     l_qte_header_rec.Customer_Name_And_Title := NULL;
1623     l_qte_header_rec.Customer_Signature_Date := NULL;
1624     l_qte_header_rec.Supplier_Name_And_Title := NULL;
1625     l_qte_header_rec.Supplier_Signature_Date := NULL;
1626 -- end of hyang new okc
1627 
1628    -- bug 5159758
1629         IF ( P_Copy_Quote_Control_Rec.New_Version = FND_API.G_FALSE ) THEN
1630             l_qte_header_rec.ASSISTANCE_REQUESTED := null;
1631             l_qte_header_rec.ASSISTANCE_REASON_CODE := null;
1632             IF aso_debug_pub.g_debug_flag = 'Y' THEN
1633 	          aso_debug_pub.ADD ( 'Copy_Rows - Nulled out the ASSISTANCE_REQUESTED and ASSISTANCE_REASON_CODE' , 1 , 'N' );
1634 	       END IF;
1635         END IF;
1636 
1637 
1638 
1639 --BC4J Primary Key Fix
1640 
1641 
1642                FOR j IN 1 .. l_price_adj_tbl.COUNT LOOP
1643                   l_price_adj_tbl ( j ).price_adjustment_id := null;
1644                   l_price_adj_tbl ( j ).object_version_number := FND_API.G_MISS_NUM;
1645 			END LOOP;
1646 
1647                FOR j IN 1 .. l_price_adj_attr_tbl.COUNT LOOP
1648                   l_price_adj_attr_tbl(j).price_adj_attrib_id := null;
1649                   l_price_adj_attr_tbl(j).object_version_number := FND_API.G_MISS_NUM;
1650 			END LOOP;
1651 
1652                FOR j IN 1 .. l_price_attr_tbl.COUNT LOOP
1653                   l_price_attr_tbl ( j ).price_attribute_id := null;
1654                   l_price_attr_tbl ( j ).object_version_number := FND_API.G_MISS_NUM;
1655 			END LOOP;
1656 
1657                /*
1658                FOR j IN 1 .. l_payment_tbl.COUNT LOOP
1659                   l_payment_tbl ( j ).CREDIT_CARD_APPROVAL_CODE := NULL;
1660                   l_payment_tbl ( j ).CREDIT_CARD_APPROVAL_DATE := NULL;
1661                   l_payment_tbl ( j ).payment_id := NULL;
1662                   l_payment_tbl ( j ).object_version_number := FND_API.G_MISS_NUM;
1663 			END LOOP; */
1664 
1665                FOR j IN 1 .. l_shipment_tbl.COUNT LOOP
1666                   l_shipment_tbl ( j ).shipment_id := null;
1667                   l_shipment_tbl ( j ).object_version_number := FND_API.G_MISS_NUM;
1668 			END LOOP;
1669 
1670                FOR j IN 1 .. l_sales_credit_tbl.COUNT LOOP
1671                   l_sales_credit_tbl(j).sales_credit_id := null;
1672 			   l_sales_credit_tbl(j).object_version_number := FND_API.G_MISS_NUM;
1673                END LOOP;
1674 
1675                FOR j IN 1 .. l_quote_party_tbl.COUNT LOOP
1676                   l_quote_party_tbl(j).QUOTE_PARTY_ID  := null;
1677                   l_quote_party_tbl(j).object_version_number := FND_API.G_MISS_NUM;
1678 			END LOOP;
1679 
1680                FOR j IN 1 .. l_tax_detail_tbl.COUNT LOOP
1681                   l_tax_detail_tbl(j).tax_detail_id  := null;
1682                   l_tax_detail_tbl(j).object_version_number := FND_API.G_MISS_NUM;
1683 			END LOOP;
1684 
1685                FOR j IN 1 .. l_Line_Attr_Ext_Tbl.COUNT LOOP
1686                   l_Line_Attr_Ext_Tbl(j).line_attribute_id  := null;
1687                   l_Line_Attr_Ext_Tbl(j).object_version_number := FND_API.G_MISS_NUM;
1688 			END LOOP;
1689 
1690 			l_qte_header_rec.object_version_number := FND_API.G_MISS_NUM;
1691 
1692        --End of BC4J Primary Key Fix
1693 
1694          IF aso_debug_pub.g_debug_flag = 'Y' THEN
1695 	    aso_debug_pub.ADD ( 'Copy_Header_Rows - Before insert_rows ', 1 , 'Y' );
1696 	 END IF;
1697 
1698       ASO_QUOTE_HEADERS_PVT.Insert_Rows (
1699           p_qte_header_rec =>             l_qte_header_rec
1700        , p_Price_Attributes_Tbl =>        l_price_attr_tbl
1701        , P_Price_Adjustment_Tbl =>        l_price_adj_tbl
1702        , P_Price_Adj_Attr_Tbl =>          l_price_adj_attr_tbl
1703        , P_Payment_Tbl =>                 l_payment_tbl
1704        , P_Shipment_Tbl =>                l_shipment_tbl
1705        , P_Freight_Charge_Tbl =>          l_freight_charge_tbl
1706        , P_Tax_Detail_Tbl =>              l_tax_detail_tbl
1707        , P_hd_Attr_Ext_Tbl =>             l_Line_Attr_Ext_Tbl
1708        , P_Sales_Credit_Tbl =>            l_sales_credit_tbl
1709        , P_Quote_Party_Tbl =>             l_Quote_Party_Tbl
1710        , P_qte_access_Tbl =>              l_qte_access_tbl
1711 	  , x_qte_header_rec =>              l_qte_header_rec_out
1712        , x_Price_Attributes_Tbl =>        l_price_attr_tbl_out
1713        , x_Price_Adjustment_Tbl =>        lx_hd_Price_Adj_Tbl
1714        , x_Price_Adj_Attr_Tbl =>          l_price_adj_attr_tbl_out
1715        , x_Payment_Tbl =>                 l_payment_tbl_out
1716        , x_Shipment_Rec =>                l_shipment_rec
1717        , x_Freight_Charge_Tbl =>          l_freight_charge_tbl_out
1718        , x_Tax_Detail_Tbl =>              l_tax_detail_tbl_out
1719        , x_hd_Attr_Ext_Tbl =>             x_hd_Attr_Ext_Tbl
1720        , x_sales_credit_tbl =>            x_sales_credit_tbl
1721        , x_quote_party_tbl =>             x_quote_party_tbl
1722        , x_qte_access_Tbl =>              x_qte_access_tbl
1723        , X_Return_Status =>               l_return_status
1724        , X_Msg_Count =>                   x_msg_count
1725        , X_Msg_Data =>                    x_msg_data
1726        );
1727 
1728 
1729 
1730       l_qte_header_rec :=l_qte_header_rec_out ;
1731       l_Price_Attr_Tbl := l_Price_Attr_Tbl_out ;
1732       l_Price_Adj_Attr_Tbl := l_Price_Adj_Attr_Tbl_out ;
1733       l_freight_charge_tbl :=l_freight_charge_tbl_out ;
1734       l_tax_detail_tbl := l_tax_detail_tbl_out ;
1735 	 l_payment_tbl := l_payment_tbl_out;
1736 
1737 
1738 	 IF aso_debug_pub.g_debug_flag = 'Y' THEN
1739 	 aso_debug_pub.ADD ( 'Copy_Header_Rows - After insert_rows - status: ' || l_return_status , 1 , 'Y' );
1740 	 END IF;
1741 
1742       IF ( l_return_status = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
1743          x_return_status            := FND_API.G_RET_STS_UNEXP_ERROR;
1744          IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
1745             FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_UNEXP_ERROR' );
1746             FND_MESSAGE.Set_Token ( 'ROW' , 'ASO_COPYHEADER AFTER_INSERT' , TRUE );
1747             FND_MSG_PUB.ADD;
1748          END IF;
1749          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1750       ELSIF ( l_return_status = FND_API.G_RET_STS_ERROR ) THEN
1751          x_return_status            := FND_API.G_RET_STS_ERROR;
1752          RAISE FND_API.G_EXC_ERROR;
1753       END IF;
1754 
1755       x_qte_header_id            := l_qte_header_rec.quote_header_id;
1756 
1757       -- Copy the header payment record
1758       l_payment_tbl := ASO_UTILITY_PVT.Query_Payment_Rows(p_qte_header_id =>l_qte_header_id,p_qte_line_id =>NULL);
1759 
1760     IF l_payment_tbl.count > 0 then
1761 
1762        FOR j IN 1 .. l_payment_tbl.COUNT LOOP
1763           l_payment_tbl ( j ).quote_header_id := l_qte_header_rec.quote_header_id;
1764 		l_payment_tbl ( j ).CREDIT_CARD_APPROVAL_CODE := NULL;
1765           l_payment_tbl ( j ).CREDIT_CARD_APPROVAL_DATE := NULL;
1766           l_payment_tbl ( j ).payment_id := NULL;
1767           l_payment_tbl ( j ).object_version_number := FND_API.G_MISS_NUM;
1768 	  /* Code change for Quoting Usability Sun ER Start */
1769           If P_Copy_Quote_Control_Rec.Copy_To_Same_Customer = FND_API.G_TRUE Then
1770 	     If P_Copy_Quote_Control_Rec.Copy_Payment = FND_API.G_FALSE Then
1771                 l_payment_tbl ( j ).CUST_PO_NUMBER := Null;
1772 	        l_payment_tbl ( j ).PAYMENT_TERM_ID := Null;
1773 		l_payment_tbl ( j ).PAYMENT_TYPE_CODE := NULL;
1774 		l_payment_tbl ( j ).PAYMENT_REF_NUMBER := Null;
1775 		l_payment_tbl ( j ).CREDIT_CARD_CODE := Null;
1776 		l_payment_tbl ( j ).CREDIT_CARD_HOLDER_NAME := Null;
1777 		l_payment_tbl ( j ).CREDIT_CARD_EXPIRATION_DATE := Null;
1778 	     End If;
1779 	  ElsIf P_Copy_Quote_Control_Rec.Copy_To_Same_Customer = FND_API.G_FALSE Then
1780 	     If l_payment_tbl ( j ).PAYMENT_TYPE_CODE In ('CHECK','CREDIT_CARD') Then
1781        		-- Not required to pass credit card details since these details are not stored in ASO tables anymore bug 16591499
1782 		 If l_payment_tbl ( j ).PAYMENT_TYPE_CODE = 'CREDIT_CARD' Then
1783 		   l_payment_tbl ( j ).CREDIT_CARD_CODE            := null;--P_hd_Payment_Tbl(j).CREDIT_CARD_CODE;
1784 		   l_payment_tbl ( j ).CREDIT_CARD_HOLDER_NAME     := null;--P_hd_Payment_Tbl(j).CREDIT_CARD_HOLDER_NAME;
1785 		   l_payment_tbl ( j ).CREDIT_CARD_EXPIRATION_DATE := null;--P_hd_Payment_Tbl(j).CREDIT_CARD_EXPIRATION_DATE;
1786 		End If;
1787 		l_payment_tbl ( j ).PAYMENT_TYPE_CODE  := null;--P_hd_Payment_Tbl(j).PAYMENT_TYPE_CODE;
1788 		l_payment_tbl ( j ).PAYMENT_REF_NUMBER := null;--P_hd_Payment_Tbl(j).PAYMENT_REF_NUMBER; -- bug 16591499
1789              End If;
1790 	     l_payment_tbl ( j ).CUST_PO_NUMBER  := null;--P_hd_Payment_Tbl(j).CUST_PO_NUMBER;
1791 	     l_payment_tbl ( j ).PAYMENT_TERM_ID := null;--P_hd_Payment_Tbl(j).PAYMENT_TERM_ID;
1792 
1793           End If;
1794 	  l_payment_tbl ( j ).cvv2 := Null;
1795 	  /* Code change for Quoting Usability Sun ER End */
1796        END LOOP;
1797 
1798        If P_Copy_Quote_Control_Rec.Copy_Payment = FND_API.G_TRUE Then  -- Code change for Quoting Usability Sun ER
1799 
1800        IF aso_debug_pub.g_debug_flag = 'Y' THEN
1801           aso_debug_pub.add('Copy_Header: Before  call to copy_payment_row ', 1, 'Y');
1802        END IF;
1803 
1804          aso_copy_quote_pvt.copy_payment_row(p_payment_rec => l_payment_tbl(1)  ,
1805                                              x_return_status => l_return_status,
1806                                              x_msg_count     => x_msg_count,
1807                                              x_msg_data      => x_msg_data);
1808 
1809        IF aso_debug_pub.g_debug_flag = 'Y' THEN
1810           aso_debug_pub.add('Copy_Header: After call to copy_payment_row: x_return_status: '||l_return_status, 1, 'Y');
1811        END IF;
1812       IF ( l_return_status = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
1813          x_return_status            := FND_API.G_RET_STS_UNEXP_ERROR;
1814          IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
1815             FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_UNEXP_ERROR' );
1816             FND_MESSAGE.Set_Token ( 'ROW' , 'ASO_COPYHEADER AFTER_INSERT' , TRUE );
1817             FND_MSG_PUB.ADD;
1818          END IF;
1819          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1820       ELSIF ( l_return_status = FND_API.G_RET_STS_ERROR ) THEN
1821          x_return_status            := FND_API.G_RET_STS_ERROR;
1822          RAISE FND_API.G_EXC_ERROR;
1823       END IF;
1824 
1825    END IF;
1826 
1827    End If; -- Code change for Quoting Usability Sun ER
1828 
1829      -- End Copy payment record
1830 
1831       -- Copy Notes,Task and Attachment related to quote header only if the control_rec flag is set
1832       IF P_Copy_Quote_Control_Rec.Copy_Note = FND_API.G_TRUE THEN
1833 
1834 	  -- Checking the new version flag, if new version then creating reference otherwise creating new note
1835 	  -- see bug3805575 for more details
1836 
1837 	  IF P_Copy_Quote_Control_Rec.New_Version = FND_API.G_TRUE THEN
1838 
1839 	    IF aso_debug_pub.g_debug_flag = 'Y' THEN
1840 	    aso_debug_pub.ADD ( 'Copy_Rows - Begin- before copy_notes-l_old_qte_header_id ' || l_old_qte_header_id , 1 , 'N' );
1841 	    aso_debug_pub.ADD ( 'Copy_Rows - Begin- before copy_notes-x_qte_header_id ' || x_qte_header_id , 1 , 'N' );
1842          aso_debug_pub.ADD ('Copy_Rows - Begin- before copy_notes ' , 1, 'N' );
1843 	    aso_debug_pub.ADD ('Copy_Rows - Begin- creating new reference for note ' , 1, 'N' );
1844 	    END IF;
1845 
1846          ASO_NOTES_INT.COPY_NOTES (
1847              p_api_version =>                l_api_version
1848           , p_init_msg_list =>               FND_API.G_FALSE
1849           , p_commit =>                      FND_API.G_FALSE
1850           , x_return_status =>               l_return_status
1851           , x_msg_count =>                   x_msg_count
1852           , x_msg_data =>                    x_msg_data
1853           , p_old_object_id =>               l_old_qte_header_id
1854           , p_new_object_id =>               x_qte_header_id
1855           , p_old_object_type_code =>        'ASO_QUOTE'
1856           , p_new_object_type_code =>        'ASO_QUOTE'
1857           );
1858          IF aso_debug_pub.g_debug_flag = 'Y' THEN
1859 	    aso_debug_pub.ADD ( 'Copy_Rows - after copy_notes status' || l_return_status , 1 , 'Y' );
1860 	    END IF;
1861 
1862          IF ( l_return_status = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
1863             x_return_status            := FND_API.G_RET_STS_UNEXP_ERROR;
1864             IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
1865                FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_UNEXP_ERROR' );
1866                FND_MESSAGE.Set_Token ( 'ROW' , 'ASO_COPYHEADER AFTER_NOTES' , TRUE );
1867                FND_MSG_PUB.ADD;
1868             END IF;
1869             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1870          ELSIF ( l_return_status = FND_API.G_RET_STS_ERROR ) THEN
1871             x_return_status            := FND_API.G_RET_STS_ERROR;
1872             RAISE FND_API.G_EXC_ERROR;
1873          END IF;
1874 
1875        ELSE  -- this means new quote is being created
1876 	    IF aso_debug_pub.g_debug_flag = 'Y' THEN
1877          aso_debug_pub.ADD ('Copy_Rows - Begin- creating new note ' , 1, 'N' );
1878          END IF;
1879          ASO_NOTES_INT.Copy_Notes_copy_quote (
1880             p_api_version =>                l_api_version
1881           , p_init_msg_list =>               FND_API.G_FALSE
1882           , p_commit =>                      FND_API.G_FALSE
1883           , p_old_object_id =>               l_old_qte_header_id
1884           , p_new_object_id =>               x_qte_header_id
1885           , p_old_object_type_code =>        'ASO_QUOTE'
1886           , p_new_object_type_code =>        'ASO_QUOTE'
1887           , x_return_status =>               l_return_status
1888           , x_msg_count =>                   x_msg_count
1889           , x_msg_data =>                    x_msg_data
1890           );
1891          IF aso_debug_pub.g_debug_flag = 'Y' THEN
1892          aso_debug_pub.ADD ( 'Copy_Rows - after Copy_Notes_copy_quote  status' || l_return_status , 1 , 'Y' );
1893          END IF;
1894 
1895          IF ( l_return_status = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
1896             x_return_status            := FND_API.G_RET_STS_UNEXP_ERROR;
1897             IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
1898                FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_UNEXP_ERROR' );
1899                FND_MESSAGE.Set_Token ( 'ROW' , 'ASO_COPYHEADER AFTER_NOTES' , TRUE );
1900                FND_MSG_PUB.ADD;
1901             END IF;
1902             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1903          ELSIF ( l_return_status = FND_API.G_RET_STS_ERROR ) THEN
1904             x_return_status            := FND_API.G_RET_STS_ERROR;
1905             RAISE FND_API.G_EXC_ERROR;
1906          END IF;
1907 
1908 	  END IF; -- end if for new version flag
1909 
1910       END IF;  -- end if for copy notes flag
1911 
1912       IF P_Copy_Quote_Control_Rec.Copy_Task = FND_API.G_TRUE THEN
1913          IF aso_debug_pub.g_debug_flag = 'Y' THEN
1914 	    aso_debug_pub.ADD ('Copy_Rows - Begin- before copy_tasks ' , 1, 'Y' );
1915 	    END IF;
1916 
1917          ASO_TASK_INT.COPY_TASKS (
1918              p_api_version =>                l_api_version
1919           , p_init_msg_list =>               FND_API.G_FALSE
1920           , p_commit =>                      FND_API.G_FALSE
1921           , x_return_status =>               l_return_status
1922           , x_msg_count =>                   x_msg_count
1923           , x_msg_data =>                    x_msg_data
1924           , p_old_object_id =>               l_old_qte_header_id
1925           , p_new_object_id =>               x_qte_header_id
1926           , p_old_object_type_code =>        'ASO_QUOTE'
1927           , p_new_object_type_code =>        'ASO_QUOTE'
1928           , p_new_object_name =>                l_qte_header_rec.quote_number
1929                                              || FND_GLOBAL.local_chr ( 45 )
1930                                              || l_qte_header_rec.quote_version ,
1931 		p_quote_version_flag  =>          P_Copy_Quote_Control_Rec.New_Version
1932           );
1933          IF aso_debug_pub.g_debug_flag = 'Y' THEN
1934 	    aso_debug_pub.ADD ( 'Copy_Rows - after  copy_tasks status' || l_return_status , 1 , 'Y' );
1935 	    END IF;
1936 
1937          IF ( l_return_status = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
1938             x_return_status            := FND_API.G_RET_STS_UNEXP_ERROR;
1939             IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
1940                FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_UNEXP_ERROR' );
1941                FND_MESSAGE.Set_Token ( 'ROW' , 'ASO_COPYHEADER AFTER_TASKS' , TRUE );
1942                FND_MSG_PUB.ADD;
1943             END IF;
1944             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1945          ELSIF ( l_return_status = FND_API.G_RET_STS_ERROR ) THEN
1946             x_return_status            := FND_API.G_RET_STS_ERROR;
1947             RAISE FND_API.G_EXC_ERROR;
1948          END IF;
1949 
1950       END IF;
1951 
1952       IF P_Copy_Quote_Control_Rec.Copy_Attachment = FND_API.G_TRUE THEN
1953          IF aso_debug_pub.g_debug_flag = 'Y' THEN
1954 	    aso_debug_pub.ADD ( 'Copy_Rows - Begin- before copy_attch  ' , 1 , 'Y' );
1955 	    END IF;
1956 
1957          ASO_ATTACHMENT_INT.COPY_ATTACHMENTS(
1958             p_api_version         =>  l_api_version,
1959             p_old_object_code     => 'ASO_QUOTE_HEADERS_ALL',
1960             p_new_object_code     => 'ASO_QUOTE_HEADERS_ALL',
1961             p_old_object_id       =>  l_old_qte_header_id,
1962             p_new_object_id       =>  x_qte_header_id,
1963             x_return_status       =>  l_return_status,
1964             x_msg_count           =>  x_msg_count,
1965             x_msg_data            =>  x_msg_data
1966           );
1967          IF aso_debug_pub.g_debug_flag = 'Y' THEN
1968 	    aso_debug_pub.ADD ( 'Copy_Rows -After copy_attch ' || l_return_status , 1 , 'Y' );
1969 	    END IF;
1970 
1971          IF ( l_return_status = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
1972             x_return_status            := FND_API.G_RET_STS_UNEXP_ERROR;
1973             IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
1974                FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_UNEXP_ERROR' );
1975                FND_MESSAGE.Set_Token ( 'ROW' , 'ASO_COPYHEADER AFTER_ATTACHMENTS' , TRUE );
1976                FND_MSG_PUB.ADD;
1977             END IF;
1978             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1979          ELSIF ( l_return_status = FND_API.G_RET_STS_ERROR ) THEN
1980             x_return_status            := FND_API.G_RET_STS_ERROR;
1981             RAISE FND_API.G_EXC_ERROR;
1982          END IF;
1983 
1984       END IF;
1985 
1986       FOR j IN 1 .. l_price_adj_tbl.COUNT LOOP
1987          IF aso_debug_pub.g_debug_flag = 'Y' THEN
1988 	    aso_debug_pub.ADD ( 'Copy_Header_Rows: lx_hd_price_adj_tbl(j).price_adjustment_id' || lx_hd_price_adj_tbl ( j ).price_adjustment_id , 1 , 'Y' );
1989 	    END IF;
1990 
1991          X_Price_Index_Link_Tbl ( l_dup_price_adj_tbl ( j ).price_adjustment_id ) :=
1992                                 lx_hd_price_adj_tbl ( j ).price_adjustment_id;
1993       END LOOP;
1994 
1995 -- Requirement CPQ-5
1996 
1997       IF P_Copy_Quote_Control_Rec.New_Version = FND_API.G_FALSE THEN
1998          -- security changes
1999 
2000          IF aso_debug_pub.g_debug_flag = 'Y' THEN
2001 	    aso_debug_pub.ADD ( 'Copy_Header_Rows: value of ASO_API_ENABLE_SECURITY: ' || FND_PROFILE.VALUE ('ASO_API_ENABLE_SECURITY' ) , 1 , 'Y' );
2002 	    END IF;
2003 
2004 	    l_qte_header_rec.batch_price_flag := FND_API.G_FALSE;
2005 
2006 	    IF NVL ( FND_PROFILE.VALUE ('ASO_API_ENABLE_SECURITY' ), 'N' ) = 'Y' THEN
2007 
2008               IF aso_debug_pub.g_debug_flag = 'Y' THEN
2009                 aso_debug_pub.ADD ( 'Copy_Header_Rows: Sales_Team: l_sales_team_prof: ' || l_sales_team_prof , 1 , 'N' );
2010               END IF;
2011 
2012             If (P_Copy_Quote_Control_Rec.Copy_To_Same_Customer = FND_API.G_TRUE And
2013 	        P_Copy_Quote_Control_Rec.Copy_Sales_Team = FND_API.G_TRUE) Then   -- Code change for Quoting Usability Sun ER
2014 
2015 		IF aso_debug_pub.g_debug_flag = 'Y' THEN
2016 	           aso_debug_pub.ADD ( 'Copy_Header_Rows - Copy_To_Same_Customer is True and Copy_Sales_Team is True ', 1 , 'N' );
2017                 END IF;
2018 
2019             IF l_sales_team_prof = 'FULL' OR l_sales_team_prof = 'PARTIAL' THEN
2020 
2021               OPEN C_Get_Old_Qte (l_old_qte_header_id);
2022               FETCH C_Get_Old_Qte INTO l_old_qte_num;
2023               CLOSE C_Get_Old_Qte;
2024 
2025               IF aso_debug_pub.g_debug_flag = 'Y' THEN
2026                 aso_debug_pub.ADD ( 'Copy_Header_Rows: Sales_Team: l_old_qte_num: ' || l_old_qte_num , 1 , 'N' );
2027               END IF;
2028               FOR C_Sales_Team_Rec IN C_Get_Sales_Team(l_old_qte_num) LOOP
2029 
2030 		IF aso_debug_pub.g_debug_flag = 'Y' THEN
2031                    aso_debug_pub.ADD ( 'Copy_Header_Rows: Sales_Team: Add Res: Resource_Id: ' || C_Sales_Team_Rec.Resource_Id , 1 , 'N' );
2032 		   aso_debug_pub.ADD ( 'Copy_Header_Rows: Sales_Team: Add Res: Resource_Grp_Id: ' || C_Sales_Team_Rec.Resource_Grp_Id , 1 , 'N' );
2033 		   aso_debug_pub.ADD ( 'Copy_Header_Rows: Sales_Team: Add Res: l_qte_header_rec.Quote_Number: ' || l_qte_header_rec.Quote_Number , 1 , 'N' );
2034                 END IF;
2035 
2036 		l_sequence := NULL;
2037 
2038                 ASO_QUOTE_ACCESSES_PKG.Insert_Row(
2039                 px_ACCESS_ID             => l_sequence,
2040                 p_QUOTE_NUMBER           => l_qte_header_rec.Quote_Number,
2041                 p_RESOURCE_ID            => C_Sales_Team_Rec.Resource_Id,
2042                 p_RESOURCE_GRP_ID        => C_Sales_Team_Rec.Resource_Grp_Id,
2043 	        p_CREATED_BY             => G_USER_ID,
2044                 p_CREATION_DATE          => SYSDATE,
2045                 p_LAST_UPDATED_BY        => G_USER_ID,
2046                 p_LAST_UPDATE_LOGIN      => G_LOGIN_ID,
2047                 p_LAST_UPDATE_DATE       => SYSDATE,
2048                 p_REQUEST_ID             => C_Sales_Team_Rec.Request_Id,
2049                 p_PROGRAM_APPLICATION_ID => C_Sales_Team_Rec.Program_Application_Id,
2050                 p_PROGRAM_ID             => C_Sales_Team_Rec.Program_Id,
2051                 p_PROGRAM_UPDATE_DATE    => C_Sales_Team_Rec.Program_Update_Date,
2052                 p_KEEP_FLAG              => C_Sales_Team_Rec.Keep_Flag,
2053                 p_UPDATE_ACCESS_FLAG     => C_Sales_Team_Rec.Update_Access_Flag,
2054                 p_CREATED_BY_TAP_FLAG    => C_Sales_Team_Rec.Created_By_Tap_Flag,
2055                 p_TERRITORY_ID           => C_Sales_Team_Rec.Territory_Id,
2056                 p_TERRITORY_SOURCE_FLAG  => C_Sales_Team_Rec.Territory_Source_Flag,
2057                 p_ROLE_ID                => C_Sales_Team_Rec.Role_Id,
2058                 p_ATTRIBUTE_CATEGORY     => C_Sales_Team_Rec.ATTRIBUTE_CATEGORY,
2059                 p_ATTRIBUTE1             => C_Sales_Team_Rec.ATTRIBUTE1,
2060                 p_ATTRIBUTE2             => C_Sales_Team_Rec.ATTRIBUTE2,
2061                 p_ATTRIBUTE3             => C_Sales_Team_Rec.ATTRIBUTE3,
2062                 p_ATTRIBUTE4             => C_Sales_Team_Rec.ATTRIBUTE4,
2063                 p_ATTRIBUTE5             => C_Sales_Team_Rec.ATTRIBUTE5,
2064                 p_ATTRIBUTE6             => C_Sales_Team_Rec.ATTRIBUTE6,
2065                 p_ATTRIBUTE7             => C_Sales_Team_Rec.ATTRIBUTE7,
2066                 p_ATTRIBUTE8             => C_Sales_Team_Rec.ATTRIBUTE8,
2067                 p_ATTRIBUTE9             => C_Sales_Team_Rec.ATTRIBUTE9,
2068                 p_ATTRIBUTE10            => C_Sales_Team_Rec.ATTRIBUTE10,
2069                 p_ATTRIBUTE11            => C_Sales_Team_Rec.ATTRIBUTE11,
2070                 p_ATTRIBUTE12            => C_Sales_Team_Rec.ATTRIBUTE12,
2071                 p_ATTRIBUTE13            => C_Sales_Team_Rec.ATTRIBUTE13,
2072                 p_ATTRIBUTE14            => C_Sales_Team_Rec.ATTRIBUTE14,
2073                 p_ATTRIBUTE15            => C_Sales_Team_Rec.ATTRIBUTE15,
2074 			 p_ATTRIBUTE16            => C_Sales_Team_Rec.ATTRIBUTE16,
2075 			 p_ATTRIBUTE17            => C_Sales_Team_Rec.ATTRIBUTE17,
2076 			 p_ATTRIBUTE18            => C_Sales_Team_Rec.ATTRIBUTE18,
2077 			 p_ATTRIBUTE19            => C_Sales_Team_Rec.ATTRIBUTE19,
2078 			 p_ATTRIBUTE20            => C_Sales_Team_Rec.ATTRIBUTE20,
2079 			 p_Object_Version_Number => C_Sales_Team_Rec.OBJECT_VERSION_NUMBER
2080                 );
2081 
2082               END LOOP;
2083 
2084             ELSE
2085 
2086                 IF aso_debug_pub.g_debug_flag = 'Y' THEN
2087                    aso_debug_pub.ADD ( 'Copy_Header_Rows: Sales_Team: l_sales_team_prof : ' || l_sales_team_prof , 1 , 'N' );
2088                 END IF;
2089 
2090               ASO_SECURITY_INT.Add_SalesRep_QuoteCreator (
2091                   p_init_msg_list =>              FND_API.G_FALSE
2092                , p_commit =>                      FND_API.G_FALSE
2093                , p_Qte_Header_Rec =>              l_qte_header_rec
2094                , x_return_status =>               x_return_status
2095                , x_msg_count =>                   x_msg_count
2096                , x_msg_data =>                    x_msg_data
2097                );
2098               IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2099                  RAISE FND_API.G_EXC_ERROR;
2100               END IF;
2101               IF aso_debug_pub.g_debug_flag = 'Y' THEN
2102                 aso_debug_pub.ADD ( 'Copy_Header_Rows: After Add Salesrep: x_return_status: ' || x_return_status , 1 , 'N' );
2103               END IF;
2104             END IF; -- sales_team_prof
2105 
2106 	    /* Code change for Quoting Usability Sun ER Start */
2107 	    ElsIf (P_Copy_Quote_Control_Rec.Copy_To_Same_Customer = FND_API.G_TRUE And
2108 	           P_Copy_Quote_Control_Rec.Copy_Sales_Team = FND_API.G_FALSE) Then
2109 
2110 		   IF aso_debug_pub.g_debug_flag = 'Y' THEN
2111 	              aso_debug_pub.ADD ( 'Copy_Header_Rows - Copy_To_Same_Customer is True and Copy_Sales_Team is False ', 1 , 'N' );
2112                    END IF;
2113 
2114 		ASO_SECURITY_INT.Add_SalesRep_QuoteCreator (
2115                   p_init_msg_list =>              FND_API.G_FALSE
2116                , p_commit =>                      FND_API.G_FALSE
2117                , p_Qte_Header_Rec =>              l_qte_header_rec
2118                , x_return_status =>               x_return_status
2119                , x_msg_count =>                   x_msg_count
2120                , x_msg_data =>                    x_msg_data
2121                );
2122               IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2123                  RAISE FND_API.G_EXC_ERROR;
2124               END IF;
2125               IF aso_debug_pub.g_debug_flag = 'Y' THEN
2126                 aso_debug_pub.ADD ( 'Copy_Header_Rows: After Add Salesrep: x_return_status: ' || x_return_status , 1 , 'N' );
2127               END IF;
2128 
2129             ElsIf (P_Copy_Quote_Control_Rec.Copy_To_Same_Customer = FND_API.G_FALSE) Then
2130 
2131 	           IF aso_debug_pub.g_debug_flag = 'Y' THEN
2132 	              aso_debug_pub.ADD ( 'Copy_Header_Rows - Copy_To_Same_Customer is False in Copy Sales Team flow', 1 , 'N' );
2133                    END IF;
2134 
2135 		   IF l_sales_team_prof = 'FULL' OR l_sales_team_prof = 'PARTIAL' THEN
2136 
2137 		        IF aso_debug_pub.g_debug_flag = 'Y' THEN
2138 		           aso_debug_pub.ADD ( 'Copy_Header_Rows: Before calling ASO_SECURITY_INT.Add_SalesRep_QuoteCreator ' , 1 , 'N' );
2139                         END IF;
2140 
2141 	                  ASO_SECURITY_INT.Add_SalesRep_QuoteCreator (
2142                           p_init_msg_list =>               FND_API.G_FALSE
2143                         , p_commit =>                      FND_API.G_FALSE
2144                         , p_Qte_Header_Rec =>              l_qte_header_rec
2145                         , x_return_status =>               x_return_status
2146                         , x_msg_count =>                   x_msg_count
2147                         , x_msg_data =>                    x_msg_data );
2148 
2149                         IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2150                            RAISE FND_API.G_EXC_ERROR;
2151                         END IF;
2152                         IF aso_debug_pub.g_debug_flag = 'Y' THEN
2153                            aso_debug_pub.ADD ( 'Copy_Header_Rows: After Add Salesrep: x_return_status: ' || x_return_status , 1 , 'N' );
2154                         END IF;
2155 		   Else
2156                        IF aso_debug_pub.g_debug_flag = 'Y' THEN
2157                           aso_debug_pub.ADD ( 'Copy_Header_Rows: Sales_Team: l_sales_team_prof : ' || l_sales_team_prof , 1 , 'N' );
2158                        END IF;
2159 
2160 		       OPEN C_Get_Old_Qte (l_old_qte_header_id);
2161                        FETCH C_Get_Old_Qte INTO l_old_qte_num;
2162                        CLOSE C_Get_Old_Qte;
2163 
2164                        IF aso_debug_pub.g_debug_flag = 'Y' THEN
2165                           aso_debug_pub.ADD ( 'Copy_Header_Rows: Sales_Team: l_old_qte_num: ' || l_old_qte_num , 1 , 'N' );
2166                        END IF;
2167 
2168 		       FOR C_Sales_Team_Rec IN C_Get_Sales_Team(l_old_qte_num) LOOP
2169 
2170 		           IF aso_debug_pub.g_debug_flag = 'Y' THEN
2171 			      aso_debug_pub.ADD ( 'Copy_Header_Rows: Sales_Team: Add Res: C_Sales_Team_Rec.Resource_Id: ' || C_Sales_Team_Rec.Resource_Id , 1 , 'N' );
2172 		              aso_debug_pub.ADD ( 'Copy_Header_Rows: Sales_Team: Add Res: C_Sales_Team_Rec.Resource_Grp_Id: ' || C_Sales_Team_Rec.Resource_Grp_Id , 1 , 'N' );
2173 			      aso_debug_pub.ADD ( 'Copy_Header_Rows: Sales_Team: Add Res: l_qte_header_rec.Quote_Number: ' || l_qte_header_rec.Quote_Number , 1 , 'N' );
2174                            END IF;
2175 
2176 		           l_sequence := NULL;
2177 
2178                            ASO_QUOTE_ACCESSES_PKG.Insert_Row(
2179                            px_ACCESS_ID             => l_sequence,
2180                            p_QUOTE_NUMBER           => l_qte_header_rec.Quote_Number,
2181  	                   p_RESOURCE_ID            => C_Sales_Team_Rec.Resource_Id,
2182 	                   p_RESOURCE_GRP_ID        => C_Sales_Team_Rec.Resource_Grp_Id,
2183                            p_CREATED_BY             => G_USER_ID,
2184                            p_CREATION_DATE          => SYSDATE,
2185                            p_LAST_UPDATED_BY        => G_USER_ID,
2186                            p_LAST_UPDATE_LOGIN      => G_LOGIN_ID,
2187                            p_LAST_UPDATE_DATE       => SYSDATE,
2188                            p_REQUEST_ID             => C_Sales_Team_Rec.Request_Id,
2189                            p_PROGRAM_APPLICATION_ID => C_Sales_Team_Rec.Program_Application_Id,
2190                            p_PROGRAM_ID             => C_Sales_Team_Rec.Program_Id,
2191                            p_PROGRAM_UPDATE_DATE    => C_Sales_Team_Rec.Program_Update_Date,
2192                            p_KEEP_FLAG              => C_Sales_Team_Rec.Keep_Flag,
2193                            p_UPDATE_ACCESS_FLAG     => C_Sales_Team_Rec.Update_Access_Flag,
2194                            p_CREATED_BY_TAP_FLAG    => C_Sales_Team_Rec.Created_By_Tap_Flag,
2195                            p_TERRITORY_ID           => C_Sales_Team_Rec.Territory_Id,
2196                            p_TERRITORY_SOURCE_FLAG  => C_Sales_Team_Rec.Territory_Source_Flag,
2197                            p_ROLE_ID                => C_Sales_Team_Rec.Role_Id,
2198                            p_ATTRIBUTE_CATEGORY     => C_Sales_Team_Rec.ATTRIBUTE_CATEGORY,
2199                            p_ATTRIBUTE1             => C_Sales_Team_Rec.ATTRIBUTE1,
2200                            p_ATTRIBUTE2             => C_Sales_Team_Rec.ATTRIBUTE2,
2201                            p_ATTRIBUTE3             => C_Sales_Team_Rec.ATTRIBUTE3,
2202                            p_ATTRIBUTE4             => C_Sales_Team_Rec.ATTRIBUTE4,
2203                            p_ATTRIBUTE5             => C_Sales_Team_Rec.ATTRIBUTE5,
2204                            p_ATTRIBUTE6             => C_Sales_Team_Rec.ATTRIBUTE6,
2205                            p_ATTRIBUTE7             => C_Sales_Team_Rec.ATTRIBUTE7,
2206                            p_ATTRIBUTE8             => C_Sales_Team_Rec.ATTRIBUTE8,
2207                            p_ATTRIBUTE9             => C_Sales_Team_Rec.ATTRIBUTE9,
2208                            p_ATTRIBUTE10            => C_Sales_Team_Rec.ATTRIBUTE10,
2209                            p_ATTRIBUTE11            => C_Sales_Team_Rec.ATTRIBUTE11,
2210                            p_ATTRIBUTE12            => C_Sales_Team_Rec.ATTRIBUTE12,
2211                            p_ATTRIBUTE13            => C_Sales_Team_Rec.ATTRIBUTE13,
2212                            p_ATTRIBUTE14            => C_Sales_Team_Rec.ATTRIBUTE14,
2213                            p_ATTRIBUTE15            => C_Sales_Team_Rec.ATTRIBUTE15,
2214 			   p_ATTRIBUTE16            => C_Sales_Team_Rec.ATTRIBUTE16,
2215 			   p_ATTRIBUTE17            => C_Sales_Team_Rec.ATTRIBUTE17,
2216 			   p_ATTRIBUTE18            => C_Sales_Team_Rec.ATTRIBUTE18,
2217 			   p_ATTRIBUTE19            => C_Sales_Team_Rec.ATTRIBUTE19,
2218 			   p_ATTRIBUTE20            => C_Sales_Team_Rec.ATTRIBUTE20,
2219 			   p_Object_Version_Number  => C_Sales_Team_Rec.OBJECT_VERSION_NUMBER);
2220                        END LOOP;
2221 		   End If;	-- l_sales_team_prof is None
2222 	    End If;
2223 	    /* Code change for Quoting Usability Sun ER End */
2224          END IF;
2225       -- end security changes
2226 
2227       END IF;
2228 
2229       x_return_status            := FND_API.G_RET_STS_SUCCESS;
2230 
2231       --
2232       -- End of API body
2233       --
2234 
2235       -- Standard check for p_commit
2236       IF FND_API.to_Boolean ( p_commit ) THEN
2237          COMMIT WORK;
2238       END IF;
2239 
2240       -- Standard call to get message count and if count is 1, get message info.
2241       FND_MSG_PUB.Count_And_Get (
2242           p_count =>                      x_msg_count
2243        , p_data =>                        x_msg_data
2244        );
2245 
2246    EXCEPTION
2247 
2248       WHEN FND_API.G_EXC_ERROR THEN
2249          ASO_UTILITY_PVT.HANDLE_EXCEPTIONS (
2250              P_API_NAME =>                   L_API_NAME
2251           , P_PKG_NAME =>                    G_PKG_NAME
2252           , P_EXCEPTION_LEVEL =>             FND_MSG_PUB.G_MSG_LVL_ERROR
2253           , P_PACKAGE_TYPE =>                ASO_UTILITY_PVT.G_PVT
2254           , X_MSG_COUNT =>                   X_MSG_COUNT
2255           , X_MSG_DATA =>                    X_MSG_DATA
2256           , X_RETURN_STATUS =>               X_RETURN_STATUS
2257           );
2258 
2259       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2260          ASO_UTILITY_PVT.HANDLE_EXCEPTIONS (
2261              P_API_NAME =>                   L_API_NAME
2262           , P_PKG_NAME =>                    G_PKG_NAME
2263           , P_EXCEPTION_LEVEL =>             FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
2264           , P_PACKAGE_TYPE =>                ASO_UTILITY_PVT.G_PVT
2265           , X_MSG_COUNT =>                   X_MSG_COUNT
2266           , X_MSG_DATA =>                    X_MSG_DATA
2267           , X_RETURN_STATUS =>               X_RETURN_STATUS
2268           );
2269 
2270       WHEN OTHERS THEN
2271          ASO_UTILITY_PVT.HANDLE_EXCEPTIONS (
2272              P_API_NAME =>                   L_API_NAME
2273           , P_PKG_NAME =>                    G_PKG_NAME
2274           , P_SQLCODE =>                     SQLCODE
2275           , P_SQLERRM =>                     SQLERRM
2276           , P_EXCEPTION_LEVEL =>             ASO_UTILITY_PVT.G_EXC_OTHERS
2277           , P_PACKAGE_TYPE =>                ASO_UTILITY_PVT.G_PVT
2278           , X_MSG_COUNT =>                   X_MSG_COUNT
2279           , X_MSG_DATA =>                    X_MSG_DATA
2280           , X_RETURN_STATUS =>               X_RETURN_STATUS
2281           );
2282 
2283    END Copy_Header_Rows;
2284 
2285 
2286    PROCEDURE Copy_Line_Rows (
2287        P_Api_Version_Number IN NUMBER
2288     , P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE
2289     , P_Commit IN VARCHAR2 := FND_API.G_FALSE
2290     , P_Qte_Header_Id IN NUMBER
2291     , P_New_Qte_Header_Id IN NUMBER
2292     , P_Qte_Line_Id     IN   NUMBER   := FND_API.G_MISS_NUM
2293     , P_Price_Index_Link_Tbl IN ASO_QUOTE_HEADERS_PVT.Index_Link_Tbl_Type
2294     , P_Copy_Quote_Control_Rec IN ASO_COPY_QUOTE_PUB.Copy_Quote_Control_Rec_Type
2295     , P_Qte_Header_Rec         IN   ASO_QUOTE_PUB.Qte_Header_Rec_Type
2296     , P_Control_Rec            IN   ASO_QUOTE_PUB.Control_Rec_Type
2297     , X_Qte_Line_Id            OUT NOCOPY /* file.sql.39 change */    NUMBER
2298     , X_Return_Status OUT NOCOPY /* file.sql.39 change */   VARCHAR2
2299     , X_Msg_Count OUT NOCOPY /* file.sql.39 change */   NUMBER
2300     , X_Msg_Data OUT NOCOPY /* file.sql.39 change */   VARCHAR2
2301     ) IS
2302 
2303       CURSOR c_line_relation (
2304           x_quote_header_id NUMBER
2305        ) IS
2306          SELECT LINE_RELATIONSHIP_ID, CREATION_DATE, CREATED_BY
2307               , LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
2308               , REQUEST_ID, PROGRAM_APPLICATION_ID, PROGRAM_ID
2309               , PROGRAM_UPDATE_DATE, QUOTE_LINE_ID, RELATED_QUOTE_LINE_ID
2310               , RELATIONSHIP_TYPE_CODE, RECIPROCAL_FLAG, OBJECT_VERSION_NUMBER
2311          FROM   ASO_LINE_RELATIONSHIPS
2312          WHERE  quote_line_id IN ( SELECT quote_line_id
2313                                   FROM   aso_quote_lines_all
2314                                   WHERE  quote_header_id = x_quote_header_id )
2315          AND    relationship_type_code <> 'SERVICE';
2316 
2317       CURSOR c_price_adj_rel (
2318           x_quote_header_id NUMBER
2319        ) IS
2320          SELECT apr.ADJ_RELATIONSHIP_ID, apr.CREATION_DATE, apr.CREATED_BY
2321               , apr.LAST_UPDATE_DATE, apr.LAST_UPDATED_BY
2322               , apr.LAST_UPDATE_LOGIN, apr.PROGRAM_APPLICATION_ID
2323               , apr.PROGRAM_ID, apr.PROGRAM_UPDATE_DATE, apr.REQUEST_ID
2324               , apr.QUOTE_LINE_ID, apr.PRICE_ADJUSTMENT_ID
2325               , apr.RLTD_PRICE_ADJ_ID , apr.OBJECT_VERSION_NUMBER
2326          FROM   ASO_PRICE_ADJ_RELATIONSHIPS apr
2327               , ASO_PRICE_ADJUSTMENTS apa
2328          WHERE  apr.price_adjustment_id = apa.price_adjustment_id
2329          AND    apa.quote_header_id = x_quote_header_id
2330          AND    EXISTS (  SELECT 'x'
2331                          FROM   aso_quote_lines_all aql
2332                          WHERE  aql.quote_header_id = x_quote_header_id
2333                          AND    apr.quote_line_id = aql.quote_line_id );
2334 
2335       CURSOR C_Serviceable_Product (
2336           l_organization_id NUMBER
2337        , l_inv_item_id NUMBER
2338        ) IS
2339          SELECT serviceable_product_flag, service_item_flag
2340          FROM   MTL_SYSTEM_ITEMS_VL
2341          WHERE  inventory_item_id = l_inv_item_id
2342          AND    organization_id = l_organization_id;
2343 
2344 	 CURSOR C_Get_Ship_Id (
2345           lc_line_id NUMBER
2346        ) IS
2347          SELECT shipment_id
2348          FROM   ASO_SHIPMENTS
2349          WHERE  quote_line_id = lc_line_id;
2350 
2351       l_qte_line_rec ASO_QUOTE_PUB.Qte_Line_Rec_Type;
2352       l_qte_line_tbl ASO_QUOTE_PUB.Qte_Line_Tbl_Type;
2353       l_payment_tbl ASO_QUOTE_PUB.Payment_Tbl_Type;
2354       l_shipment_tbl ASO_QUOTE_PUB.Shipment_Tbl_Type;
2355       l_shipment_rec ASO_QUOTE_PUB.Shipment_Rec_Type;
2356       l_freight_charge_tbl ASO_QUOTE_PUB.Freight_Charge_Tbl_Type;
2357       l_tax_detail_tbl ASO_QUOTE_PUB.Tax_Detail_Tbl_Type;
2358       l_Price_Attr_Tbl ASO_QUOTE_PUB.Price_Attributes_Tbl_Type;
2359       l_Price_Adj_Tbl ASO_QUOTE_PUB.Price_Adj_Tbl_Type;
2360       l_Price_Adj_Attr_Tbl ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type;
2361       l_qte_line_dtl_tbl ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type;
2362       l_Line_Attr_Ext_Tbl ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type;
2363       lx_ln_Price_Adj_Tbl ASO_QUOTE_PUB.Price_Adj_Tbl_Type;
2364       lx_qte_line_rec ASO_QUOTE_PUB.Qte_Line_Rec_Type;
2365       l_control_rec ASO_QUOTE_PUB.Control_Rec_Type  := p_control_rec; -- Code change for Quoting Usability Sun ER
2366       l_price_index_link_tbl ASO_QUOTE_HEADERS_PVT.Index_Link_Tbl_Type
2367                                                     := P_Price_Index_Link_Tbl;
2368       l_line_index_link_tbl ASO_QUOTE_HEADERS_PVT.Index_Link_Tbl_Type;
2369       l_qte_line_id NUMBER;
2370       l_index NUMBER;
2371       l_index_2 NUMBER;
2372       l_service_ref_line_id NUMBER;
2373       l_config_control_rec ASO_CFG_INT.Control_Rec_Type
2374                                             := ASO_CFG_INT.G_MISS_Control_Rec;
2375       l_old_config_header_id NUMBER;
2376       l_old_config_revision_num NUMBER;
2377       l_config_hdr_id NUMBER;
2378       l_config_rev_nbr NUMBER;
2379       LX_PRICE_ADJ_RLTSHIP_ID NUMBER;
2380       LX_LINE_RELATIONSHIP_ID NUMBER;
2381       X_hd_Attr_Ext_Tbl ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type;
2382       X_Sales_Credit_Tbl ASO_QUOTE_PUB.Sales_Credit_Tbl_Type;
2383       X_Quote_Party_Tbl ASO_QUOTE_PUB.Quote_Party_Tbl_Type;
2384       l_hd_Attr_Ext_Tbl ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type;
2385       l_quote_party_tbl ASO_QUOTE_PUB.Quote_Party_Tbl_Type;
2386       l_quote_party_rec ASO_QUOTE_PUB.Quote_Party_rec_Type;
2387       l_sales_credit_tbl ASO_QUOTE_PUB.Sales_Credit_Tbl_Type;
2388       l_sales_credit_rec ASO_QUOTE_PUB.Sales_Credit_rec_Type;
2389       l_api_version CONSTANT NUMBER := 1.0;
2390       l_api_name CONSTANT VARCHAR2 ( 30 ) := 'Copy_Line_Rows';
2391       l_service_item_flag VARCHAR2 ( 1 );
2392       l_serviceable_product_flag VARCHAR2 ( 1 );
2393       l_return_status VARCHAR2 ( 1 );
2394       l_api_version_number CONSTANT NUMBER := 1.0;
2395       G_USER_ID NUMBER := FND_GLOBAL.USER_ID;
2396       G_LOGIN_ID NUMBER := FND_GLOBAL.CONC_LOGIN_ID;
2397       l_ship_id NUMBER;
2398       l_orig_item_id_tbl CZ_API_PUB.number_tbl_type;
2399       l_new_item_id_tbl CZ_API_PUB.number_tbl_type;
2400       -- hyang: for bug 2692785
2401       lx_status                     VARCHAR2(1);
2402 
2403       l_dup_Price_Adj_Tbl ASO_QUOTE_PUB.Price_Adj_Tbl_Type;
2404 
2405   --- New Code added for Copy Quote Line Functionality
2406 
2407       CURSOR C_Validate_Quote_Line (
2408           x_qte_header_id NUMBER,
2409           x_qte_line_id NUMBER
2410        ) IS
2411          SELECT 'X'
2412          FROM   ASO_QUOTE_LINES_ALL
2413          WHERE  quote_header_id = x_qte_header_id
2414          AND quote_line_id = x_qte_line_id;
2415 
2416       CURSOR c_line_relation_from_line_id (
2417           x_quote_line_id NUMBER
2418        ) IS
2419          SELECT LINE_RELATIONSHIP_ID, CREATION_DATE, CREATED_BY
2420               , LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
2421               , REQUEST_ID, PROGRAM_APPLICATION_ID, PROGRAM_ID
2422               , PROGRAM_UPDATE_DATE, QUOTE_LINE_ID, RELATED_QUOTE_LINE_ID
2423               , RELATIONSHIP_TYPE_CODE, RECIPROCAL_FLAG, OBJECT_VERSION_NUMBER
2424          FROM   ASO_LINE_RELATIONSHIPS
2425          WHERE  relationship_type_code <> 'SERVICE'
2426 	    CONNECT BY PRIOR related_quote_line_id = quote_line_id
2427          START WITH quote_line_id = x_quote_line_id;
2428 
2429       CURSOR c_price_adj_rel_from_line_id (
2430             x_quote_line_id NUMBER
2431        ) IS
2432          SELECT apr.ADJ_RELATIONSHIP_ID, apr.CREATION_DATE, apr.CREATED_BY
2433               , apr.LAST_UPDATE_DATE, apr.LAST_UPDATED_BY
2434               , apr.LAST_UPDATE_LOGIN, apr.PROGRAM_APPLICATION_ID
2435               , apr.PROGRAM_ID, apr.PROGRAM_UPDATE_DATE, apr.REQUEST_ID
2436               , apr.QUOTE_LINE_ID, apr.PRICE_ADJUSTMENT_ID
2437               , apr.RLTD_PRICE_ADJ_ID
2438 		    , apr.OBJECT_VERSION_NUMBER
2439          FROM   ASO_PRICE_ADJ_RELATIONSHIPS apr
2440 		    , ASO_PRICE_ADJUSTMENTS apa
2441          WHERE  apr.price_adjustment_id = apa.price_adjustment_id
2442          AND    apr.quote_line_id = x_quote_line_id
2443          AND    apa.quote_line_id = x_quote_line_id
2444          AND    apa.modifier_line_type_code <> 'PRG';
2445 
2446          l_val varchar2(1);
2447          l_appl_param_rec   CZ_API_PUB.appl_param_rec_type;
2448          l_last_update_date   DATE;
2449          l_line_number        NUMBER;
2450 
2451 
2452     Cursor C_Get_quote(c_QUOTE_HEADER_ID Number) IS
2453     Select
2454         LAST_UPDATE_DATE
2455     From  ASO_QUOTE_HEADERS_ALL
2456     Where QUOTE_HEADER_ID = c_QUOTE_HEADER_ID;
2457 
2458     Cursor Get_Max_Line_Number ( c_QUOTE_HEADER_ID Number) IS
2459     Select Max(Line_number)
2460     From ASO_QUOTE_LINES_ALL
2461     WHERE quote_header_id = c_QUOTE_HEADER_ID;
2462 
2463     x_qte_header_rec              aso_quote_pub.qte_header_rec_type;
2464     x_qte_line_tbl                aso_quote_pub.qte_line_tbl_type;
2465     x_qte_line_dtl_tbl            aso_quote_pub.qte_line_dtl_tbl_type;
2466     x_hd_price_attributes_tbl     aso_quote_pub.price_attributes_tbl_type;
2467     x_hd_payment_tbl              aso_quote_pub.payment_tbl_type;
2468     x_hd_shipment_tbl             aso_quote_pub.shipment_tbl_type;
2469     x_hd_freight_charge_tbl       aso_quote_pub.freight_charge_tbl_type;
2470     x_hd_tax_detail_tbl           aso_quote_pub.tax_detail_tbl_type;
2471     x_line_attr_ext_tbl           aso_quote_pub.line_attribs_ext_tbl_type;
2472     x_line_rltship_tbl            aso_quote_pub.line_rltship_tbl_type;
2473     x_price_adjustment_tbl        aso_quote_pub.price_adj_tbl_type;
2474     x_price_adj_attr_tbl          aso_quote_pub.price_adj_attr_tbl_type;
2475     x_price_adj_rltship_tbl       aso_quote_pub.price_adj_rltship_tbl_type;
2476     x_ln_price_attributes_tbl     aso_quote_pub.price_attributes_tbl_type;
2477     x_ln_payment_tbl              aso_quote_pub.payment_tbl_type;
2478     x_ln_shipment_tbl             aso_quote_pub.shipment_tbl_type;
2479     x_ln_freight_charge_tbl       aso_quote_pub.freight_charge_tbl_type;
2480     x_ln_tax_detail_tbl           aso_quote_pub.tax_detail_tbl_type;
2481     l_Qte_Header_Rec              ASO_QUOTE_PUB.Qte_Header_Rec_Type :=  ASO_QUOTE_PUB.G_MISS_Qte_Header_Rec;
2482 
2483       l_quote_party_tbl_out      ASO_QUOTE_PUB.Quote_Party_Tbl_Type;
2484       l_sales_credit_tbl_out     ASO_QUOTE_PUB.Sales_Credit_Tbl_Type;
2485       l_tax_detail_tbl_out       ASO_QUOTE_PUB.Tax_Detail_Tbl_Type;
2486       l_freight_charge_tbl_out   ASO_QUOTE_PUB.Freight_Charge_Tbl_Type;
2487       l_shipment_tbl_out         ASO_QUOTE_PUB.Shipment_Tbl_Type;
2488       l_payment_tbl_out          ASO_QUOTE_PUB.Payment_Tbl_Type;
2489       l_Price_Adj_Attr_Tbl_out   ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type;
2490       l_Price_Attr_Tbl_out       ASO_QUOTE_PUB.Price_Attributes_Tbl_Type;
2491       l_qte_line_dtl_tbl_out     ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type;
2492       l_Line_Attr_Ext_Tbl_out    ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type;
2493       l_ato_model                VARCHAR2(1) := FND_API.G_FALSE;
2494 
2495       /* Code change for Quoting Usability Sun ER Start */
2496       CURSOR c_header_org IS
2497       SELECT org_id FROM aso_quote_headers_all
2498       WHERE quote_header_id = P_Qte_Header_Id;
2499 
2500       l_header_org_id        NUMBER;
2501 
2502       l_copy_flag            VARCHAR2(1) := 'T';
2503       l_def_control_rec      ASO_DEFAULTING_INT.Control_Rec_Type  := ASO_DEFAULTING_INT.G_MISS_CONTROL_REC;
2504       l_db_object_name       VARCHAR2(30);
2505       l_payment_rec          ASO_QUOTE_PUB.Payment_Rec_Type       := ASO_QUOTE_PUB.G_MISS_Payment_REC;
2506       lx_hd_shipment_rec     ASO_QUOTE_PUB.Shipment_Rec_Type;
2507       lx_hd_payment_rec      ASO_QUOTE_PUB.Payment_Rec_Type;
2508       lx_hd_tax_detail_rec   ASO_QUOTE_PUB.Tax_Detail_Rec_Type;
2509       lx_hd_misc_rec         ASO_DEFAULTING_INT.Header_Misc_Rec_Type;
2510       lx_ln_misc_rec         ASO_DEFAULTING_INT.Line_Misc_Rec_Type;
2511       lx_ln_shipment_rec     ASO_QUOTE_PUB.Shipment_Rec_Type;
2512       lx_ln_payment_rec      ASO_QUOTE_PUB.Payment_Rec_Type;
2513       lx_ln_tax_detail_rec   ASO_QUOTE_PUB.Tax_Detail_Rec_Type;
2514       lx_changed_flag        VARCHAR2(1);
2515       l_def_Qte_Line_Rec     ASO_QUOTE_PUB.Qte_Line_Rec_Type    := ASO_QUOTE_PUB.G_MISS_qte_line_REC;
2516 
2517       l_check_service_rec ASO_SERVICE_CONTRACTS_INT.CHECK_SERVICE_REC_TYPE;
2518 
2519       x_available_yn   Varchar2(1);
2520 
2521       cursor c_service_ref_quote (P_Quote_line_id number) is
2522       select service_ref_line_id
2523       from aso_quote_line_Details
2524       where quote_line_id=  P_Quote_line_id
2525       and service_ref_type_code ='QUOTE';
2526 
2527       l_return_value  Varchar2(1);
2528 
2529       CURSOR C_AGREEMENT(P_AGREEMENT_ID IN NUMBER,P_INVOICE_TO_CUSTOMER_ID IN NUMBER) IS
2530       SELECT 'x'
2531       FROM OE_AGREEMENTS_VL
2532       WHERE AGREEMENT_ID = P_AGREEMENT_ID
2533       AND  INVOICE_TO_CUSTOMER_ID = P_INVOICE_TO_CUSTOMER_ID;
2534 
2535       l_var varchar2(1);
2536 
2537       /* Code change for Quoting Usability Sun ER End */
2538 
2539    BEGIN
2540 
2541       -- Standard Start of API savepoint
2542       SAVEPOINT COPY_LINE_ROWS_PVT;
2543 
2544       -- Standard call to check for call compatibility.
2545       IF NOT FND_API.Compatible_API_Call (
2546                  l_api_version_number
2547               , p_api_version_number
2548               , l_api_name
2549               , G_PKG_NAME
2550               ) THEN
2551          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2552       END IF;
2553 
2554       -- Initialize message list if p_init_msg_list is set to TRUE.
2555       IF FND_API.to_Boolean ( p_init_msg_list ) THEN
2556          FND_MSG_PUB.initialize;
2557       END IF;
2558 
2559       -- Debug Message
2560       IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW ) THEN
2561          FND_MESSAGE.Set_Name ('ASO' , 'Copy Quote Lines API: Start' );
2562          FND_MSG_PUB.ADD;
2563       END IF;
2564 
2565       --  Initialize API return status to success
2566       x_return_status            := FND_API.G_RET_STS_SUCCESS;
2567 
2568       --
2569       -- API body
2570       --
2571 
2572       IF aso_debug_pub.g_debug_flag = 'Y' THEN
2573 	 aso_debug_pub.ADD ('Copy_Rows - Header and Lines' , 1, 'N' );
2574 	 END IF;
2575 
2576     -- hyang: for bug 2692785
2577   IF  P_Qte_Header_Rec.batch_price_flag <> FND_API.G_FALSE THEN
2578 
2579     ASO_CONC_REQ_INT.Lock_Exists(
2580       p_quote_header_id => p_qte_header_id,
2581       x_status          => lx_status);
2582 
2583     IF (lx_status = FND_API.G_TRUE) THEN
2584       IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2585         FND_MESSAGE.Set_Name('ASO', 'ASO_CONC_REQUEST_RUNNING');
2586         FND_MSG_PUB.ADD;
2587       END IF;
2588       RAISE FND_API.G_EXC_ERROR;
2589     END IF;
2590 
2591   END IF;
2592 
2593 
2594       l_qte_line_tbl             :=
2595                        ASO_UTILITY_PVT.Query_Qte_Line_Rows ( p_qte_header_id );
2596 
2597       /* Code change for Quoting Usability Sun ER Start */
2598 
2599       If P_Copy_Quote_Control_Rec.Copy_To_Same_Customer = FND_API.G_FALSE Then
2600 
2601          IF aso_debug_pub.g_debug_flag = 'Y' THEN
2602             aso_debug_pub.add('Copy_Line_Rows - P_Copy_Quote_Control_Rec.Copy_To_Same_Customer is FALSE ', 1, 'Y');
2603          END IF ;
2604 
2605          OPEN c_header_org;
2606          FETCH c_header_org INTO l_header_org_id;
2607          CLOSE c_header_org;
2608 
2609 	 FOR i in 1..l_qte_line_tbl.count LOOP
2610 
2611 	     l_qte_line_tbl ( i ).INVOICE_TO_PARTY_SITE_ID := Null;
2612              l_qte_line_tbl ( i ).INVOICE_TO_PARTY_ID := Null;
2613 	     l_qte_line_tbl ( i ).INVOICE_TO_CUST_ACCOUNT_ID := Null;
2614 	     l_qte_line_tbl ( i ).INVOICE_TO_CUST_PARTY_ID := Null;
2615 
2616 	     l_qte_line_tbl ( i ).END_CUSTOMER_PARTY_ID := Null;
2617 	     l_qte_line_tbl ( i ).END_CUSTOMER_PARTY_SITE_ID := Null;
2618 	     l_qte_line_tbl ( i ).END_CUSTOMER_CUST_ACCOUNT_ID := Null;
2619 	     l_qte_line_tbl ( i ).END_CUSTOMER_CUST_PARTY_ID := Null;
2620 
2621 	     l_qte_line_tbl( i ).PRICE_LIST_ID := Null;
2622 	     l_qte_line_tbl( i ).CURRENCY_CODE := Null;
2623 
2624 	     IF (l_qte_line_tbl(i).AGREEMENT_ID IS NOT NULL AND
2625                  l_qte_line_tbl(i).AGREEMENT_ID <> FND_API.G_MISS_NUM) THEN
2626 
2627 		 IF aso_debug_pub.g_debug_flag = 'Y' THEN
2628                     aso_debug_pub.add('Copy_Line_Rows - l_qte_line_tbl('||i||').AGREEMENT_ID : '||l_qte_line_tbl(i).AGREEMENT_ID, 1, 'Y');
2629 		    aso_debug_pub.add('Copy_Line_Rows - l_qte_line_tbl('||i||').INVOICE_TO_CUST_ACCOUNT_ID : '||l_qte_line_tbl(i).INVOICE_TO_CUST_ACCOUNT_ID, 1, 'Y');
2630                  END IF ;
2631 
2632 	         Open C_AGREEMENT(l_qte_line_tbl(i).AGREEMENT_ID,l_qte_line_tbl(i).INVOICE_TO_CUST_ACCOUNT_ID);
2633 	         Fetch C_AGREEMENT Into l_var;
2634 	         Close C_AGREEMENT;
2635 
2636 	         If C_AGREEMENT%Found Then
2637 	            l_qte_line_tbl(i).AGREEMENT_ID := Null;
2638 	         End If;
2639 	     End If;
2640 
2641 	     l_shipment_tbl := ASO_UTILITY_PVT.Query_Shipment_Rows(l_qte_line_tbl(i).quote_header_id,l_qte_line_tbl(i).quote_line_id);
2642 
2643              IF (l_shipment_tbl.COUNT > 0) then
2644 	         l_shipment_tbl(1).SHIP_TO_CUST_ACCOUNT_ID := Null;
2645 	         l_shipment_tbl(1).SHIP_TO_CUST_PARTY_ID := Null;
2646 	         l_shipment_tbl(1).SHIP_TO_PARTY_ID := Null;
2647 	         l_shipment_tbl(1).SHIP_TO_PARTY_SITE_ID := Null;
2648 	         l_shipment_tbl(1).SHIP_TO_PARTY_NAME := Null;
2649 	         l_shipment_tbl(1).SHIP_TO_CONTACT_FIRST_NAME := Null;
2650 	         l_shipment_tbl(1).SHIP_TO_CONTACT_MIDDLE_NAME := Null;
2651 	         l_shipment_tbl(1).SHIP_TO_CONTACT_LAST_NAME := Null;
2652 	         l_shipment_tbl(1).SHIP_TO_ADDRESS1 := Null;
2653 	         l_shipment_tbl(1).SHIP_TO_ADDRESS2 := Null;
2654 	         l_shipment_tbl(1).SHIP_TO_ADDRESS3 := Null;
2655 	         l_shipment_tbl(1).SHIP_TO_ADDRESS4 := Null;
2656 	         l_shipment_tbl(1).SHIP_TO_COUNTRY_CODE := Null;
2657 	         l_shipment_tbl(1).SHIP_TO_COUNTRY := Null;
2658 	         l_shipment_tbl(1).SHIP_TO_CITY := Null;
2659 	         l_shipment_tbl(1).SHIP_TO_POSTAL_CODE := Null;
2660 	         l_shipment_tbl(1).SHIP_TO_STATE := Null;
2661 	         l_shipment_tbl(1).SHIP_TO_PROVINCE := Null;
2662 	         l_shipment_tbl(1).SHIP_TO_COUNTY := Null;
2663              END IF;
2664 
2665 	     l_payment_tbl := ASO_UTILITY_PVT.Query_Payment_Rows(l_qte_line_tbl(i).quote_header_id,l_qte_line_tbl(i).quote_line_id);
2666 
2667 	     IF (l_payment_tbl.COUNT > 0) then
2668 	         If l_payment_tbl(1).PAYMENT_TYPE_CODE In ('CHECK','CREDIT_CARD') Then
2669        		    If l_payment_tbl(1).PAYMENT_TYPE_CODE = 'CREDIT_CARD' Then
2670 		       l_payment_tbl(1).CREDIT_CARD_CODE := Null;
2671 		       l_payment_tbl(1).CREDIT_CARD_HOLDER_NAME := Null;
2672 		       l_payment_tbl(1).CREDIT_CARD_EXPIRATION_DATE := Null;
2673 		       l_payment_tbl(1).cvv2 := Null;
2674 		    End If;
2675 		    l_payment_tbl(1).PAYMENT_TYPE_CODE := NULL;
2676 		    l_payment_tbl(1).PAYMENT_REF_NUMBER := Null;
2677                  End If;
2678 	         l_payment_tbl(1).CUST_PO_NUMBER := Null;
2679 	         l_payment_tbl(1).CUST_PO_LINE_NUMBER := Null;
2680 	         l_payment_tbl(1).PAYMENT_TERM_ID := Null;
2681 	     END IF;
2682 
2683              -- Line level defaulting for different customer
2684 
2685 	     If l_control_rec.defaulting_fwk_flag = 'Y' Then
2686 
2687 		IF aso_debug_pub.g_debug_flag = 'Y' THEN
2688                    aso_debug_pub.add('Copy_Line_Rows - l_header_org_id'||l_header_org_id, 1, 'Y');
2689 		   aso_debug_pub.add('Copy_Line_Rows - before defaulting framework', 1, 'Y');
2690                    aso_debug_pub.add('Copy_Line_Rows - populate defaulting control record from the header control record', 1, 'Y');
2691                 END IF ;
2692 
2693 		l_def_Qte_Line_Rec := l_qte_line_tbl(i);
2694 		l_def_Qte_Line_Rec.org_id := l_header_org_id;
2695 
2696                 l_def_control_rec.Dependency_Flag       := FND_API.G_TRUE;
2697                 l_def_control_rec.Defaulting_Flag       := FND_API.G_TRUE;
2698                 l_def_control_rec.Application_Type_Code := 'QUOTING HTML';
2699                 l_def_control_rec.Defaulting_Flow_Code  := 'CREATE';
2700 	        l_db_object_name                        := ASO_QUOTE_HEADERS_PVT.G_QUOTE_LINE_DB_NAME;
2701 
2702 	        IF aso_debug_pub.g_debug_flag = 'Y' THEN
2703                    aso_debug_pub.add('Copy_Line_Rows - Dependency_Flag:       '|| l_def_control_rec.Dependency_Flag, 1, 'Y');
2704                    aso_debug_pub.add('Copy_Line_Rows - Defaulting_Flag:       '|| l_def_control_rec.Defaulting_Flag, 1, 'Y');
2705                    aso_debug_pub.add('Copy_Line_Rows - Application_Type_Code: '|| l_def_control_rec.Application_Type_Code, 1, 'Y');
2706                    aso_debug_pub.add('Copy_Line_Rows - Defaulting_Flow_Code:  '|| l_def_control_rec.Defaulting_Flow_Code, 1, 'Y');
2707                 END IF ;
2708 
2709 		IF (l_shipment_tbl.COUNT > 0) then
2710 		    l_shipment_rec := l_shipment_tbl(1);
2711                 END IF;
2712 
2713 		IF (l_payment_tbl.COUNT > 0) then
2714 		    l_payment_rec := l_payment_tbl(1);
2715                 END IF;
2716 
2717 		IF aso_debug_pub.g_debug_flag = 'Y' THEN
2718 	           aso_debug_pub.add('Copy_Line_Rows - before call to ASO_DEFAULTING_INT.Default_Entity', 1, 'Y');
2719                 END IF ;
2720 
2721 	        ASO_DEFAULTING_INT.Default_Entity ( p_api_version           =>  1.0,
2722                                                     p_control_rec           =>  l_def_control_rec,
2723                                                     p_database_object_name  =>  l_db_object_name,
2724                                                     p_quote_line_rec        =>  l_def_Qte_Line_Rec,
2725                                                     p_line_shipment_rec     =>  l_shipment_rec,
2726                                                     p_line_payment_rec      =>  l_payment_rec,
2727                                                     x_quote_header_rec      =>  l_qte_header_rec,
2728                                                     x_header_misc_rec       =>  lx_hd_misc_rec,
2729                                                     x_header_shipment_rec   =>  lx_hd_shipment_rec,
2730                                                     x_header_payment_rec    =>  lx_hd_payment_rec,
2731                                                     x_header_tax_detail_rec =>  lx_hd_tax_detail_rec,
2732                                                     x_quote_line_rec        =>  lx_qte_line_rec,
2733                                                     x_line_misc_rec         =>  lx_ln_misc_rec,
2734                                                     x_line_shipment_rec     =>  lx_ln_shipment_rec,
2735                                                     x_line_payment_rec      =>  lx_ln_payment_rec,
2736                                                     x_line_tax_detail_rec   =>  lx_ln_tax_detail_rec,
2737                                                     x_changed_flag          =>  lx_changed_flag,
2738                                                     x_return_status         =>  x_return_status,
2739                                                     x_msg_count             =>  x_msg_count,
2740                                                     x_msg_data              =>  x_msg_data );
2741 
2742                 IF aso_debug_pub.g_debug_flag = 'Y' THEN
2743                    aso_debug_pub.add('Copy_Line_Rows: After call to ASO_DEFAULTING_INT.Default_Entity', 1, 'Y');
2744                    aso_debug_pub.add('Copy_Line_Rows: x_return_status: '|| x_return_status, 1, 'Y');
2745                 End If;
2746 
2747                 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2748 
2749                    IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2750                       FND_MESSAGE.Set_Name('ASO', 'ASO_API_ERROR_DEFAULTING');
2751                       FND_MSG_PUB.ADD;
2752                    END IF;
2753 
2754                    IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2755                        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2756                    ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
2757                        RAISE FND_API.G_EXC_ERROR;
2758                    END IF;
2759                 END IF;
2760 
2761 	        l_qte_line_tbl(i) := lx_qte_line_rec;
2762 
2763                 IF aso_quote_headers_pvt.Shipment_Null_Rec_Exists(lx_ln_shipment_rec, l_db_object_name) THEN
2764                    l_shipment_tbl(i) := lx_ln_shipment_rec;
2765                 END IF;
2766 
2767                 IF aso_quote_headers_pvt.Payment_Null_Rec_Exists(lx_ln_payment_rec, l_db_object_name) THEN
2768                    l_payment_tbl(i) := lx_ln_payment_rec;
2769                 END IF;
2770 
2771 	     End If;
2772 
2773 	 END LOOP;
2774 
2775 	End If; -- Copy_To_Same_Customer = FND_API.G_FALSE
2776         /* Code change for Quoting Usability Sun ER End */
2777 
2778       FOR i IN 1 .. l_qte_line_tbl.COUNT LOOP
2779          l_line_index_link_tbl ( l_qte_line_tbl ( i ).quote_line_id ) :=
2780                                                            FND_API.G_MISS_NUM;
2781       END LOOP;
2782 
2783   --- New Code added for Copy Quote Line Functionality
2784 IF ( P_Qte_Line_Id IS NOT NULL ) AND (P_Qte_Line_Id <> FND_API.G_MISS_NUM) THEN
2785 
2786   -- Validating if the quote_line_id belongs to the qte_header_id
2787 
2788       OPEN C_Validate_Quote_Line ( P_Qte_Header_Id, P_Qte_Line_Id);
2789       FETCH C_Validate_Quote_Line INTO l_val;
2790 
2791 
2792       IF C_Validate_Quote_Line%NOTFOUND THEN
2793          x_return_status            := FND_API.G_RET_STS_ERROR;
2794          IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
2795             FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_INVALID_ID' );
2796             FND_MESSAGE.Set_Token ('COLUMN' , 'ORIGINAL_QUOTE_ID', FALSE );
2797             FND_MESSAGE.Set_Token ( 'VALUE' , TO_CHAR ( P_Qte_Line_Id ) , FALSE );
2798             FND_MSG_PUB.ADD;
2799          END IF;
2800          CLOSE C_Validate_Quote_Line;
2801          RAISE FND_API.G_EXC_ERROR;
2802       END IF;
2803 
2804       CLOSE C_Validate_Quote_Line;
2805 
2806    -- Validate for the last update of the quote
2807 
2808 
2809      Open C_Get_quote( P_Qte_Header_Id);
2810 
2811       Fetch C_Get_quote into l_LAST_UPDATE_DATE;
2812       If ( C_Get_quote%NOTFOUND) Then
2813 
2814         IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2815             FND_MESSAGE.Set_Name('ASO', 'ASO_API_MISSING_UPDATE_TARGET');
2816             FND_MESSAGE.Set_Token ('INFO', 'quote', FALSE);
2817             FND_MSG_PUB.Add;
2818         END IF;
2819       raise FND_API.G_EXC_ERROR;
2820       END IF;
2821       Close C_Get_quote;
2822 
2823       If (l_last_update_date is NULL or
2824        l_last_update_date = FND_API.G_MISS_Date ) Then
2825        IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2826            FND_MESSAGE.Set_Name('ASO', 'ASO_API_MISSING_COLUMN');
2827            FND_MESSAGE.Set_Token('COLUMN', 'Last_Update_Date', FALSE);
2828            FND_MSG_PUB.ADD;
2829        END IF;
2830        raise FND_API.G_EXC_ERROR;
2831       End if;
2832 
2833       -- Check Whether record has been changed by someone else
2834       If (l_last_update_date <> p_qte_header_rec.last_update_date) Then
2835        IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2836            FND_MESSAGE.Set_Name('ASO', 'ASO_API_RECORD_CHANGED');
2837            FND_MESSAGE.Set_Token('INFO', 'quote', FALSE);
2838            FND_MSG_PUB.ADD;
2839        END IF;
2840        raise FND_API.G_EXC_ERROR;
2841       End if;
2842 
2843   -- end validation for last update data
2844 
2845 
2846 
2847       l_qte_line_tbl             := ASO_QUOTE_PUB.G_MISS_QTE_LINE_TBL ;
2848       l_qte_line_rec := ASO_UTILITY_PVT.Query_Qte_Line_Row ( P_Qte_Line_Id );
2849       l_qte_line_tbl(1) := l_qte_line_rec;
2850 
2851 
2852 
2853     -- Getting the quote line detail record
2854       l_qte_line_dtl_tbl := ASO_UTILITY_PVT.Query_Line_Dtl_Rows ( P_Qte_Line_Id );
2855 
2856 
2857  IF l_qte_line_rec.line_category_code = 'RETURN' THEN
2858   IF aso_debug_pub.g_debug_flag = 'Y' THEN
2859   aso_debug_pub.ADD ('l_qte_line_dtl_tbl.count' , 1, 'N' );
2860   END IF;
2861 
2862   IF l_qte_line_dtl_tbl.count > 0 THEN
2863 
2864      IF ( l_qte_line_dtl_tbl(1).RETURN_REF_TYPE = 'SALES ORDER' AND
2865           l_qte_line_dtl_tbl(1).RETURN_REF_LINE_ID IS NOT NULL AND
2866           l_qte_line_dtl_tbl(1).INSTANCE_ID IS NOT NULL )
2867      OR ( l_qte_line_dtl_tbl(1).REF_TYPE_CODE = 'TOP_MODEL' ) THEN
2868          x_return_status            := FND_API.G_RET_STS_ERROR;
2869 
2870 	 /* Code change for Quoting Usability Sun ER Start */
2871 	 If P_Copy_Quote_Control_Rec.Copy_To_Same_Customer = FND_API.G_FALSE Then
2872 	    l_copy_flag:='F';
2873          End If;
2874 	 /* Code change for Quoting Usability Sun ER End */
2875 
2876          IF aso_debug_pub.g_debug_flag = 'Y' THEN
2877 	    aso_debug_pub.ADD ('Install Base Check Failed' , 1, 'N' );
2878 	 END IF;
2879 
2880 	 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
2881             FND_MESSAGE.Set_Name ('ASO' , 'ASO_RECONFIG_ITM_ERR' );
2882             FND_MSG_PUB.ADD;
2883          END IF;
2884 
2885      END IF;
2886 
2887   END IF;
2888 
2889  END IF;
2890 
2891 
2892 /*
2893  -- Validating if the  item is a container item
2894      l_appl_param_rec.calling_application_id := nvl(FND_PROFILE.value('JTF_PROFILE_DEFAULT_APPLICATION'),697);
2895 
2896         cz_network_api_pub.is_container(p_api_version  => 1.0
2897                                        ,p_inventory_item_id  => l_qte_line_rec.inventory_item_id
2898                                        ,p_organization_id   => l_qte_line_rec.organization_id
2899                                        ,p_appl_param_rec => l_appl_param_rec
2900                                        ,x_return_value       => l_return_value
2901                                        ,x_return_status      => l_return_status
2902                                        ,x_msg_count          => x_msg_count
2903                                        ,x_msg_data           => x_msg_data  );
2904 
2905            IF ( l_return_status = FND_API.G_RET_STS_SUCCESS  ) THEN
2906 
2907               IF l_return_value = 'Y' THEN
2908                x_return_status            := FND_API.G_RET_STS_ERROR;
2909                IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
2910                 FND_MESSAGE.Set_Name ('ASO' , 'ASO_RECONFIG_ITM_ERR' );
2911                 FND_MSG_PUB.ADD;
2912                END IF;
2913                RAISE FND_API.G_EXC_ERROR;
2914               END IF;
2915 
2916            ELSE
2917                   x_return_status            := FND_API.G_RET_STS_UNEXP_ERROR;
2918                   IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
2919                      FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_UNEXP_ERROR' );
2920                      FND_MESSAGE.Set_Token ( 'ROW' , 'ASO_COPYLINE AFTER_CONFIG_COPY' , TRUE );
2921                      FND_MSG_PUB.ADD;
2922                   END IF;
2923                   RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2924 
2925            END IF;
2926 */
2927 
2928 
2929    IF l_qte_line_rec.item_type_code = 'CFG' then
2930     x_return_status            := FND_API.G_RET_STS_ERROR;
2931 
2932     /* Code change for Quoting Usability Sun ER Start */
2933     If P_Copy_Quote_Control_Rec.Copy_To_Same_Customer = FND_API.G_FALSE Then
2934        l_copy_flag:='F';
2935 
2936        IF aso_debug_pub.g_debug_flag = 'Y' THEN
2937 	  aso_debug_pub.ADD ('Copy_Line_Rows : ASO_CFG_ITM_ERR error' , 1, 'N' );
2938        END IF;
2939     End If;
2940     /* Code change for Quoting Usability Sun ER End */
2941 
2942     IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
2943      FND_MESSAGE.Set_Name ('ASO' , 'ASO_CFG_ITM_ERR' );
2944      FND_MSG_PUB.ADD;
2945     END IF;
2946     RAISE FND_API.G_EXC_ERROR;
2947 
2948   END IF;
2949 
2950 
2951   -- Check to see if it is a servicable product
2952 
2953             IF aso_debug_pub.g_debug_flag = 'Y' THEN
2954 		  aso_debug_pub.ADD ( 'service item flag = ' || l_qte_line_rec.service_item_flag , 1 , 'N' );
2955 		  END IF;
2956             IF      l_qte_line_rec.service_item_flag = 'Y'  THEN
2957 
2958              x_return_status            := FND_API.G_RET_STS_ERROR;
2959 
2960 	     /* Code change for Quoting Usability Sun ER Start */
2961              If P_Copy_Quote_Control_Rec.Copy_To_Same_Customer = FND_API.G_FALSE Then
2962                 l_copy_flag:='F';
2963 
2964 		IF aso_debug_pub.g_debug_flag = 'Y' THEN
2965 		   aso_debug_pub.ADD ('Copy_Line_Rows : ASO_SRV_ITM_ERR error' , 1, 'N' );
2966 	        END IF;
2967              End If;
2968              /* Code change for Quoting Usability Sun ER End */
2969 
2970              IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
2971               FND_MESSAGE.Set_Name ('ASO' , 'ASO_SRV_ITM_ERR' );
2972               FND_MSG_PUB.ADD;
2973              END IF;
2974 
2975              RAISE FND_API.G_EXC_ERROR;
2976 
2977            END IF;
2978 
2979         -- Set the variables to null as they are re-used later on
2980            l_service_item_flag := NULL;
2981            l_serviceable_product_flag := NULL;
2982 
2983 END IF;
2984 IF aso_debug_pub.g_debug_flag = 'Y' THEN
2985 aso_debug_pub.ADD ('End Of New Code ' , 1, 'N' );
2986 END IF;
2987 
2988 -- End of New Code added
2989 
2990       FOR i IN 1 .. l_qte_line_tbl.COUNT LOOP
2991 
2992          IF l_qte_line_tbl ( i ).uom_code = 'ENR' THEN
2993             x_return_status            := FND_API.G_RET_STS_ERROR;
2994 
2995 	    /* Code change for Quoting Usability Sun ER Start */
2996             If P_Copy_Quote_Control_Rec.Copy_To_Same_Customer = FND_API.G_FALSE Then
2997                l_copy_flag:='F';
2998 
2999                IF aso_debug_pub.g_debug_flag = 'Y' THEN
3000 		  aso_debug_pub.ADD ('Copy_Line_Rows : ASO_CANNOT_COPY_EDU error' , 1, 'N' );
3001 	       END IF;
3002             End If;
3003             /* Code change for Quoting Usability Sun ER End */
3004 
3005 	    IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
3006                FND_MESSAGE.Set_Name ('ASO' , 'ASO_CANNOT_COPY_EDU' );
3007                FND_MSG_PUB.ADD;
3008             END IF;
3009             RAISE FND_API.G_EXC_ERROR;
3010          END IF;
3011 
3012          l_qte_line_tbl ( i ).quote_header_id := P_New_Qte_Header_Id;
3013          l_qte_line_id              := l_qte_line_tbl ( i ).quote_line_id;
3014 
3015          IF aso_debug_pub.g_debug_flag = 'Y' THEN
3016 	    aso_debug_pub.ADD (   'qte line id = ' || l_qte_line_id, 1, 'N' );
3017          aso_debug_pub.ADD (   'i = ' || i, 1, 'N' );
3018          aso_debug_pub.ADD ( 'item_type_code = ' || l_qte_line_tbl ( i ).item_type_code , 1 , 'N' );
3019 	    END IF;
3020 
3021          IF l_line_index_link_tbl ( l_qte_line_id ) = FND_API.G_MISS_NUM THEN
3022 
3023             l_qte_line_dtl_tbl := ASO_UTILITY_PVT.Query_Line_Dtl_Rows ( l_qte_line_id );
3024 
3025 	    /* Code change for Quoting Usability Sun ER Start */
3026             -- Validation check for Trade in product
3027 	    If P_Copy_Quote_Control_Rec.Copy_To_Same_Customer = FND_API.G_FALSE Then
3028                IF (l_qte_line_tbl(i).item_type_code = 'STD' ) and ( l_qte_line_tbl(i).line_category_code = 'RETURN' )THEN
3029 	           IF (l_qte_line_dtl_tbl(1).INSTANCE_ID IS NOT NULL) Then
3030                        l_copy_flag:='F';
3031 	               IF aso_debug_pub.g_debug_flag = 'Y' THEN
3032 		          aso_debug_pub.ADD ('Copy_Line_Rows : Trade in from install Base Check Failed' , 1, 'N' );
3033 	               END IF;
3034 	           End IF;
3035                End IF;
3036 
3037 	       l_appl_param_rec.calling_application_id := 697;
3038 
3039                IF aso_debug_pub.g_debug_flag = 'Y' THEN
3040                   aso_debug_pub.add('Copy_Line_Rows:Call TO CZ_NETWORK_API_PUB.Is_Container ');
3041                END IF;
3042 
3043                -- Validation check for Container Model
3044 	       cz_network_api_pub.is_container(p_api_version  => 1.0
3045                                         ,p_inventory_item_id  => l_qte_line_tbl( i ).inventory_item_id
3046                                         ,p_organization_id    => l_qte_line_tbl( i ).organization_id
3047                                         ,p_appl_param_rec     => l_appl_param_rec
3048                                         ,x_return_value       => l_return_value
3049                                         ,x_return_status      => l_return_status
3050                                         ,x_msg_count          => x_msg_count
3051                                         ,x_msg_data           => x_msg_data );
3052 
3053                IF ( l_return_status = FND_API.G_RET_STS_SUCCESS ) THEN
3054                     IF l_return_value = 'Y' THEN
3055                        l_copy_flag := 'F';
3056 		       IF aso_debug_pub.g_debug_flag = 'Y' THEN
3057 		          aso_debug_pub.ADD ('Copy_Line_Rows : Container Model Check Failed' , 1, 'N' );
3058 	               END IF;
3059                     END IF;
3060                ELSE
3061                     x_return_status  := FND_API.G_RET_STS_UNEXP_ERROR;
3062                     IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
3063                        FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_UNEXP_ERROR' );
3064                        FND_MESSAGE.Set_Token ( 'ROW' , 'ASO_COPYLINE AFTER_CONFIG_COPY' , TRUE );
3065                        FND_MSG_PUB.ADD;
3066                     END IF;
3067                     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3068                END IF;
3069 	    End If;
3070             /* Code change for Quoting Usability Sun ER End */
3071 
3072   	   IF l_qte_line_tbl ( i ).item_type_code = 'MDL'
3073 	      And (l_copy_flag = 'T') THEN -- Code change for Quoting Usability Sun ER
3074 
3075                IF l_qte_line_dtl_tbl.COUNT > 0 THEN
3076 
3077                   IF      l_qte_line_dtl_tbl ( 1 ).config_header_id IS NOT NULL
3078                       AND l_qte_line_dtl_tbl ( 1 ).config_revision_num IS NOT NULL THEN
3079 
3080                      l_config_control_rec.new_config_flag := FND_API.G_TRUE;
3081 
3082                      -- set the flag for ato model
3083                      IF (l_qte_line_dtl_tbl(1).ato_line_id is not null and l_qte_line_dtl_tbl(1).ato_line_id <> fnd_api.g_miss_num) then
3084                         l_ato_model := fnd_api.g_true;
3085 				 end if;
3086 
3087 
3088 			     IF aso_debug_pub.g_debug_flag = 'Y' THEN
3089 				aso_debug_pub.ADD ( 'Before Calling ASO_CGF_INT.Copy Configuration' , 1 , 'N' );
3090 				END IF;
3091 
3092 				 ASO_CFG_INT.Copy_Configuration (
3093                          P_Api_version_NUmber =>         1.0
3094                       , P_config_header_id =>            l_qte_line_dtl_tbl ( 1 ).config_header_id
3095                       , p_config_revision_num =>         l_qte_line_dtl_tbl ( 1 ).config_revision_num
3096                       , p_copy_mode =>                   CZ_API_PUB.G_NEW_HEADER_COPY_MODE
3097                       , x_config_header_id =>            l_config_hdr_id
3098                       , x_config_revision_num =>         l_config_rev_nbr
3099                       , x_orig_item_id_tbl =>            l_orig_item_id_tbl
3100                       , x_new_item_id_tbl =>             l_new_item_id_tbl
3101                       , x_return_status =>               l_return_status
3102                       , x_msg_count =>                   x_msg_count
3103                       , x_msg_data =>                    x_msg_data
3104                       , p_autonomous_flag =>             FND_API.G_FALSE
3105 				  );
3106 
3107                     IF aso_debug_pub.g_debug_flag = 'Y' THEN
3108 				aso_debug_pub.ADD ( 'After Calling ASO_CGF_INT.Copy Configuration' , 1 , 'N' );
3109 				END IF;
3110 
3111 				 IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
3112                         l_old_config_header_id     :=
3113                                     l_qte_line_dtl_tbl ( 1 ).config_header_id;
3114                         l_old_config_revision_num  :=
3115                                  l_qte_line_dtl_tbl ( 1 ).config_revision_num;
3116                         l_qte_line_dtl_tbl ( 1 ).config_header_id :=
3117                                                               l_config_hdr_id;
3118                         l_qte_line_dtl_tbl ( 1 ).config_revision_num :=
3119                                                              l_config_rev_nbr;
3120                      ELSE
3121                         x_return_status            := FND_API.G_RET_STS_ERROR;
3122                         RAISE FND_API.G_EXC_ERROR;
3123                      END IF;
3124 
3125                   END IF; -- config_header_id
3126 
3127                END IF; -- line_dtl_tbl.count
3128 
3129             END IF; -- 'MDL'
3130 
3131            l_serviceable_product_flag := l_qte_line_tbl ( i ).SERVICEABLE_PRODUCT_FLAG;
3132            l_service_item_flag  := l_qte_line_tbl ( i ).service_item_flag;
3133 
3134            IF aso_debug_pub.g_debug_flag = 'Y' THEN
3135 		 aso_debug_pub.ADD ( 'service item flag = ' || l_service_item_flag , 1 , 'N' );
3136            aso_debug_pub.ADD ( 'serviceable_product_flag = ' || l_serviceable_product_flag , 1 , 'N' );
3137 		 END IF;
3138 
3139             IF      l_service_item_flag = 'Y'
3140                 AND (l_qte_line_dtl_tbl ( 1 ).service_ref_type_code IS NULL OR
3141 			     l_qte_line_dtl_tbl ( 1 ).service_ref_type_code <> 'QUOTE') THEN
3142                l_service_item_flag        := 'N';
3143             END IF;
3144 
3145             IF aso_debug_pub.g_debug_flag = 'Y' THEN
3146 		  aso_debug_pub.ADD ( 'service item flag 2= ' || l_service_item_flag , 1 , 'N' );
3147 		  END IF;
3148 
3149             /* Code change for Quoting Usability Sun ER Start  */
3150 	    If P_Copy_Quote_Control_Rec.Copy_To_Same_Customer = FND_API.G_FALSE Then
3151 
3152 		If l_service_item_flag = 'Y' Then
3153 
3154 	            -- Validation check for service reference - Install Base and Pending Order
3155 		    If (l_qte_line_dtl_tbl ( 1 ).service_ref_type_code = 'CUSTOMER_PRODUCT') Or
3156 		       (l_qte_line_dtl_tbl ( 1 ).service_ref_type_code = 'PENDING_ORDER') Then
3157 		        l_copy_flag := 'F';
3158 			IF aso_debug_pub.g_debug_flag = 'Y' THEN
3159 		           aso_debug_pub.ADD ('Copy_Line_Rows : service_ref_type_code = '||l_qte_line_dtl_tbl ( 1 ).service_ref_type_code , 1, 'N' );
3160 	                END IF;
3161 
3162 		    -- Validation check for service reference - Product Catalog
3163 		    ElsIf l_qte_line_dtl_tbl ( 1 ).service_ref_type_code = 'PRODUCT_CATALOG' Then
3164 
3165 		        l_check_service_rec.product_item_id := l_qte_line_dtl_tbl ( 1 ).SERVICE_REF_LINE_ID;
3166 	                l_check_service_rec.customer_id     := P_Qte_Header_Rec.CUST_ACCOUNT_ID;
3167                         l_check_service_rec.service_item_id := l_qte_line_tbl ( i ).INVENTORY_ITEM_ID;
3168 
3169 		        IF aso_debug_pub.g_debug_flag = 'Y' THEN
3170 		           aso_debug_pub.ADD( 'Copy_Line_Rows:Before calling ASO_SERVICE_CONTRACTS_INT.Is_Service_Available for IB', 1 , 'N' );
3171 		        END IF;
3172 
3173                         ASO_SERVICE_CONTRACTS_INT.is_service_available (
3174        		  	     P_Api_Version_Number	=> 1.0 ,
3175        			     P_init_msg_list		=> FND_API.G_FALSE ,
3176 		    	     X_msg_Count     	=> x_msg_count ,
3177        			     X_msg_Data		=> x_msg_data	 ,
3178        			     X_Return_Status		=> x_return_status  ,
3179 			     p_check_service_rec 	=> l_check_service_rec,
3180 			     X_Available_YN	    	=> x_Available_YN );
3181 
3182                         IF aso_debug_pub.g_debug_flag = 'Y' THEN
3183 		           aso_debug_pub.ADD( 'Copy_Line_Rows:After calling ASO_SERVICE_CONTRACTS_INT.Is_Service_Available for IB', 1 , 'N' );
3184 		        END IF;
3185 
3186                         If nvl(x_Available_YN, 'N') = 'N' Then
3187 			   l_copy_flag := 'F';
3188 		           IF aso_debug_pub.g_debug_flag = 'Y' THEN
3189 			      aso_debug_pub.add('Copy_Line_Rows: PC Service Not Available');
3190 		           END IF;
3191                         End If;
3192 
3193 		    -- Validation check for service reference - Quote
3194 		    ElsIf l_qte_line_dtl_tbl ( 1 ).service_ref_type_code = 'QUOTE' Then
3195 
3196 		       open c_service_ref_quote(l_qte_line_id);
3197 	               fetch c_service_ref_quote into l_check_service_rec.product_item_id;
3198 	               close c_service_ref_quote;
3199 
3200 	               l_check_service_rec.customer_id     := P_Qte_Header_Rec.CUST_ACCOUNT_ID;
3201                        l_check_service_rec.service_item_id := l_qte_line_tbl ( i ).INVENTORY_ITEM_ID;
3202 
3203 		       IF aso_debug_pub.g_debug_flag = 'Y' THEN
3204 		          aso_debug_pub.ADD( 'Copy_Line_Rows:Before calling ASO_SERVICE_CONTRACTS_INT.Is_Service_Available for Quote', 1 , 'N' );
3205 		       END IF;
3206 
3207                        ASO_SERVICE_CONTRACTS_INT.is_service_available (
3208        		   	        P_Api_Version_Number	=> 1.0 ,
3209        			        P_init_msg_list	        => FND_API.G_FALSE ,
3210 		    	        X_msg_Count     	=> x_msg_count ,
3211        			        X_msg_Data		=> x_msg_data	 ,
3212        			        X_Return_Status 	=> x_return_status  ,
3213 			        p_check_service_rec 	=> l_check_service_rec,
3214 			        X_Available_YN	    	=> x_Available_YN );
3215 
3216                        IF aso_debug_pub.g_debug_flag = 'Y' THEN
3217 		          aso_debug_pub.ADD( 'Copy_Line_Rows:After calling ASO_SERVICE_CONTRACTS_INT.Is_Service_Available for Quote', 1 , 'N' );
3218 		       END IF;
3219 
3220                        If nvl(x_Available_YN, 'N') = 'N' Then
3221 		          l_copy_flag := 'F';
3222 		          IF aso_debug_pub.g_debug_flag = 'Y' THEN
3223 			     aso_debug_pub.add('Copy_Line_Rows: Quote Service Not Available');
3224 		          END IF;
3225                        End If;
3226 
3227 	 	    End If;
3228                 End If;
3229             END IF;
3230             /* Code change for Quoting Usability Sun ER End */
3231 
3232             IF      l_qte_line_tbl ( i ).item_type_code <> 'CFG'
3233                 AND l_qte_line_tbl ( i ).item_type_code <> 'OPT'
3234                 AND l_service_item_flag <> 'Y'
3235 		AND (l_copy_flag = 'T') THEN  -- Code change for Quoting Usability Sun ER
3236 
3237                l_line_attr_Ext_Tbl := ASO_UTILITY_PVT.Query_Line_Attribs_Ext_Rows ( l_qte_line_id );
3238 
3239                IF ( P_Qte_Line_Id IS NOT NULL ) AND (P_Qte_Line_Id <> FND_API.G_MISS_NUM) THEN
3240 
3241                   l_price_adj_tbl := ASO_UTILITY_PVT.Query_Price_Adj_NonPRG_Rows(p_qte_header_id, l_qte_line_id);
3242                ELSE
3243                   l_price_adj_tbl := ASO_UTILITY_PVT.Query_Price_Adj_Rows(p_qte_header_id, l_qte_line_id);
3244                END IF;
3245 
3246 			l_dup_Price_Adj_Tbl := l_price_adj_tbl;
3247 
3248                l_price_adj_attr_tbl := ASO_UTILITY_PVT.Query_Price_Adj_Attr_Rows( p_price_adj_tbl => l_price_adj_tbl );
3249 
3250                l_price_attr_tbl := ASO_UTILITY_PVT.Query_Price_Attr_Rows(p_qte_header_id, l_qte_line_id);
3251 
3252                --l_payment_tbl := ASO_UTILITY_PVT.Query_Payment_Rows(p_qte_header_id, L_QTE_LINE_ID);
3253 
3254                --  l_payment_tbl := ASO_QUOTE_PUB.g_miss_payment_tbl;
3255 
3256 	       -- l_shipment_tbl := ASO_UTILITY_PVT.Query_Shipment_Rows(p_qte_header_id, L_QTE_LINE_ID);
3257 
3258                /* Code change for Quoting Usability Sun ER Start */
3259 	       If P_Copy_Quote_Control_Rec.Copy_To_Same_Customer = FND_API.G_TRUE Then
3260 
3261 	          IF aso_debug_pub.g_debug_flag = 'Y' THEN
3262                      aso_debug_pub.add('Copy_Line_Rows - P_Copy_Quote_Control_Rec.Copy_To_Same_Customer is True ', 1, 'Y');
3263                   END IF ;
3264 
3265                   l_shipment_tbl := ASO_UTILITY_PVT.Query_Shipment_Rows(p_qte_header_id,l_qte_line_id);
3266 
3267 		  If P_Copy_Quote_Control_Rec.Copy_Line_Shipping = FND_API.G_FALSE Then
3268 		     l_shipment_tbl(1).SHIP_TO_CUST_ACCOUNT_ID := Null;
3269 	             l_shipment_tbl(1).SHIP_TO_CUST_PARTY_ID := Null;
3270 	             l_shipment_tbl(1).SHIP_TO_PARTY_ID := Null;
3271 	             l_shipment_tbl(1).SHIP_TO_PARTY_SITE_ID := Null;
3272 	             l_shipment_tbl(1).SHIP_TO_PARTY_NAME := Null;
3273 	             l_shipment_tbl(1).SHIP_TO_CONTACT_FIRST_NAME := Null;
3274 	             l_shipment_tbl(1).SHIP_TO_CONTACT_MIDDLE_NAME := Null;
3275 	             l_shipment_tbl(1).SHIP_TO_CONTACT_LAST_NAME := Null;
3276 	             l_shipment_tbl(1).SHIP_TO_ADDRESS1 := Null;
3277 	             l_shipment_tbl(1).SHIP_TO_ADDRESS2 := Null;
3278 	             l_shipment_tbl(1).SHIP_TO_ADDRESS3 := Null;
3279 	             l_shipment_tbl(1).SHIP_TO_ADDRESS4 := Null;
3280 	             l_shipment_tbl(1).SHIP_TO_COUNTRY_CODE := Null;
3281 	             l_shipment_tbl(1).SHIP_TO_COUNTRY := Null;
3282 	             l_shipment_tbl(1).SHIP_TO_CITY := Null;
3283 	             l_shipment_tbl(1).SHIP_TO_POSTAL_CODE := Null;
3284 	             l_shipment_tbl(1).SHIP_TO_STATE := Null;
3285 	             l_shipment_tbl(1).SHIP_TO_PROVINCE := Null;
3286 	             l_shipment_tbl(1).SHIP_TO_COUNTY := Null;
3287 	             l_shipment_tbl(1).SHIP_METHOD_CODE := Null;
3288                      l_shipment_tbl(1).FREIGHT_TERMS_CODE := Null;
3289 	             l_shipment_tbl(1).FOB_CODE := Null;
3290 	             l_shipment_tbl(1).DEMAND_CLASS_CODE := Null;
3291 	             l_shipment_tbl(1).SHIP_FROM_ORG_ID := Null;
3292 	             l_shipment_tbl(1).REQUEST_DATE := Null;
3293 	             l_shipment_tbl(1).SHIPMENT_PRIORITY_CODE := Null;
3294 	             l_shipment_tbl(1).SHIPPING_INSTRUCTIONS := Null;
3295 	             l_shipment_tbl(1).PACKING_INSTRUCTIONS := Null;
3296 		  End If;
3297 
3298 		  If P_Copy_Quote_Control_Rec.Copy_Line_Billing = FND_API.G_FALSE Then
3299 	             l_qte_line_tbl ( i ).INVOICE_TO_PARTY_SITE_ID := Null;
3300 		     l_qte_line_tbl ( i ).INVOICE_TO_PARTY_ID := Null;
3301 		     l_qte_line_tbl ( i ).INVOICE_TO_CUST_ACCOUNT_ID := Null;
3302 		     l_qte_line_tbl ( i ).INVOICE_TO_CUST_PARTY_ID := Null;
3303 	          End If;
3304 
3305 	          If P_Copy_Quote_Control_Rec.Copy_Line_End_Customer = FND_API.G_FALSE Then
3306 	             l_qte_line_tbl ( i ).END_CUSTOMER_PARTY_ID := Null;
3307 		     l_qte_line_tbl ( i ).END_CUSTOMER_PARTY_SITE_ID := Null;
3308 		     l_qte_line_tbl ( i ).END_CUSTOMER_CUST_ACCOUNT_ID := Null;
3309 		     l_qte_line_tbl ( i ).END_CUSTOMER_CUST_PARTY_ID := Null;
3310 	          End If;
3311 
3312 		  If P_Copy_Quote_Control_Rec.Copy_Line_Sales_Credit = FND_API.G_TRUE Then
3313 	             l_sales_credit_tbl := ASO_UTILITY_PVT.Query_Sales_Credit_Row(p_qte_header_id,l_qte_line_id);
3314 	          End If;
3315 
3316                ElsIf P_Copy_Quote_Control_Rec.Copy_To_Same_Customer = FND_API.G_FALSE Then
3317 
3318 	             IF aso_debug_pub.g_debug_flag = 'Y' THEN
3319                         aso_debug_pub.add('Copy_Line_Rows - P_Copy_Quote_Control_Rec.Copy_To_Same_Customer is False 2 ', 1, 'Y');
3320                      END IF ;
3321 
3322 	             If P_Copy_Quote_Control_Rec.Copy_Line_Shipping = FND_API.G_FALSE Then
3323 		        l_shipment_tbl(1).SHIP_METHOD_CODE := Null;
3324                         l_shipment_tbl(1).FREIGHT_TERMS_CODE := Null;
3325 			l_shipment_tbl(1).FOB_CODE := Null;
3326 			l_shipment_tbl(1).DEMAND_CLASS_CODE := Null;
3327 			l_shipment_tbl(1).SHIP_FROM_ORG_ID := Null;
3328 			l_shipment_tbl(1).REQUEST_DATE := Null;
3329 			l_shipment_tbl(1).SHIPMENT_PRIORITY_CODE := Null;
3330 	                l_shipment_tbl(1).SHIPPING_INSTRUCTIONS := Null;
3331 	                l_shipment_tbl(1).PACKING_INSTRUCTIONS := Null;
3332                      End If;
3333 
3334 		     l_sales_credit_tbl := ASO_UTILITY_PVT.Query_Sales_Credit_Row(p_qte_header_id,l_qte_line_id);
3335                End If;
3336 
3337                If P_Copy_Quote_Control_Rec.Copy_Line_Flexfield = FND_API.G_FALSE Then
3338                   l_qte_line_tbl ( i ).ATTRIBUTE1 :=  Null;
3339 	          l_qte_line_tbl ( i ).ATTRIBUTE2 :=  Null;
3340 	          l_qte_line_tbl ( i ).ATTRIBUTE3 :=  Null;
3341 	          l_qte_line_tbl ( i ).ATTRIBUTE4 :=  Null;
3342 	          l_qte_line_tbl ( i ).ATTRIBUTE5 :=  Null;
3343 	          l_qte_line_tbl ( i ).ATTRIBUTE6 :=  Null;
3344 	          l_qte_line_tbl ( i ).ATTRIBUTE7 :=  Null;
3345 	          l_qte_line_tbl ( i ).ATTRIBUTE8 :=  Null;
3346 	          l_qte_line_tbl ( i ).ATTRIBUTE9 :=  Null;
3347 	          l_qte_line_tbl ( i ).ATTRIBUTE10 := Null;
3348 	          l_qte_line_tbl ( i ).ATTRIBUTE11 := Null;
3349 	          l_qte_line_tbl ( i ).ATTRIBUTE12 := Null;
3350 		  l_qte_line_tbl ( i ).ATTRIBUTE13 := Null;
3351  	          l_qte_line_tbl ( i ).ATTRIBUTE14 := Null;
3352 	          l_qte_line_tbl ( i ).ATTRIBUTE15 := Null;
3353 	          l_qte_line_tbl ( i ).ATTRIBUTE16 := Null;
3354 		  l_qte_line_tbl ( i ).ATTRIBUTE17 := Null;
3355 		  l_qte_line_tbl ( i ).ATTRIBUTE18 := Null;
3356 		  l_qte_line_tbl ( i ).ATTRIBUTE19 := Null;
3357 		  l_qte_line_tbl ( i ).ATTRIBUTE20 := Null;
3358                End If;
3359 	       /* Code change for Quoting Usability Sun ER End */
3360 
3361                l_quote_party_tbl := ASO_UTILITY_PVT.Query_Quote_Party_Row(p_qte_header_id, L_QTE_LINE_ID);
3362 
3363                l_freight_charge_tbl := ASO_UTILITY_PVT.Query_Freight_Charge_Rows(l_shipment_tbl);
3364 
3365                l_tax_detail_tbl := ASO_UTILITY_PVT.Query_Tax_Detail_Rows(p_qte_header_id, L_QTE_LINE_ID, l_shipment_tbl);
3366 
3367                l_qte_line_tbl(i).quote_line_id := NULL;
3368 
3369                l_qte_line_tbl ( i ).object_version_number := FND_API.G_MISS_NUM;
3370 
3371 	       --BC4J Fix
3372 
3373                FOR j IN 1 .. l_qte_line_dtl_tbl.COUNT LOOP
3374 		         l_qte_line_dtl_tbl(j).quote_line_detail_id := null;
3375                    l_qte_line_dtl_tbl(j).object_version_number := FND_API.G_MISS_NUM;
3376 			    l_qte_line_dtl_tbl(j).top_model_line_id := null;
3377 			    l_qte_line_dtl_tbl(j).ato_line_id := null;
3378                    l_qte_line_dtl_tbl(j).qte_line_index := i;
3379 			END LOOP;
3380 
3381                FOR j IN 1 .. l_price_adj_tbl.COUNT LOOP
3382                   l_price_adj_tbl ( j ).QUOTE_HEADER_ID     := p_new_qte_header_id;
3383                   l_price_adj_tbl ( j ).price_adjustment_id := null;
3384                   l_price_adj_tbl ( j ).object_version_number := FND_API.G_MISS_NUM;
3385 			END LOOP;
3386 
3387                FOR j IN 1 .. l_price_adj_attr_tbl.COUNT LOOP
3388                   l_price_adj_attr_tbl(j).price_adj_attrib_id := null;
3389                   l_price_adj_attr_tbl(j).object_version_number := FND_API.G_MISS_NUM;
3390 			END LOOP;
3391 
3392                FOR j IN 1 .. l_price_attr_tbl.COUNT LOOP
3393                   l_price_attr_tbl ( j ).QUOTE_HEADER_ID    := p_new_qte_header_id;
3394                   l_price_attr_tbl ( j ).price_attribute_id := null;
3395                   l_price_attr_tbl ( j ).object_version_number := FND_API.G_MISS_NUM;
3396 			END LOOP;
3397 
3398                /* FOR j IN 1 .. l_payment_tbl.COUNT LOOP
3399                   l_payment_tbl ( j ).QUOTE_HEADER_ID := p_new_qte_header_id;
3400                   l_payment_tbl ( j ).CREDIT_CARD_APPROVAL_CODE := NULL;
3401                   l_payment_tbl ( j ).CREDIT_CARD_APPROVAL_DATE := NULL;
3402                   l_payment_tbl ( j ).payment_id := NULL;
3403                   l_payment_tbl ( j ).object_version_number := FND_API.G_MISS_NUM;
3404 			END LOOP; */
3405 
3406                FOR j IN 1 .. l_shipment_tbl.COUNT LOOP
3407                   l_shipment_tbl ( j ).QUOTE_HEADER_ID := p_new_qte_header_id;
3408                   l_shipment_tbl ( j ).shipment_id := null;
3409                   l_shipment_tbl ( j ).object_version_number := FND_API.G_MISS_NUM;
3410 			END LOOP;
3411 
3412                FOR j IN 1 .. l_sales_credit_tbl.COUNT LOOP
3413                   l_sales_credit_tbl(j).QUOTE_HEADER_ID := p_new_qte_header_id;
3414                   l_sales_credit_tbl(j).sales_credit_id := null;
3415                   l_sales_credit_tbl(j).object_version_number := FND_API.G_MISS_NUM;
3416 			END LOOP;
3417 
3418                FOR j IN 1 .. l_quote_party_tbl.COUNT LOOP
3419                   l_quote_party_tbl(j).QUOTE_HEADER_ID := p_new_qte_header_id;
3420                   l_quote_party_tbl(j).QUOTE_PARTY_ID  := null;
3421                   l_quote_party_tbl(j).object_version_number := FND_API.G_MISS_NUM;
3422 			END LOOP;
3423 
3424                FOR j IN 1 .. l_tax_detail_tbl.COUNT LOOP
3425                   l_tax_detail_tbl(j).tax_detail_id  := null;
3426                   l_tax_detail_tbl(j).object_version_number := FND_API.G_MISS_NUM;
3427 			END LOOP;
3428 
3429                FOR j IN 1 .. l_line_attr_Ext_Tbl.COUNT LOOP
3430                   l_line_attr_Ext_Tbl(j).line_attribute_id := null;
3431                   l_line_attr_Ext_Tbl(j).object_version_number := FND_API.G_MISS_NUM;
3432 			END LOOP;
3433 
3434                FOR j IN 1 .. l_freight_charge_tbl.COUNT LOOP
3435                   l_freight_charge_tbl(j).freight_charge_id := null;
3436                   l_freight_charge_tbl(j).object_version_number := FND_API.G_MISS_NUM;
3437 			END LOOP;
3438 
3439 		     --End of BC4J Fix
3440 
3441              -- Setting the new line number if a quote line is being copied
3442              IF ( P_Qte_Line_Id IS NOT NULL ) AND (P_Qte_Line_Id <> FND_API.G_MISS_NUM) THEN
3443                 Open Get_Max_Line_Number(P_Qte_Header_Id);
3444                 Fetch Get_Max_Line_Number into l_line_number;
3445                 Close Get_Max_Line_Number;
3446 
3447                 l_qte_line_tbl ( i ).line_number := l_line_number + 10000;
3448 
3449              END IF;
3450 
3451 
3452                IF aso_debug_pub.g_debug_flag = 'Y' THEN
3453 			aso_debug_pub.ADD ( 'Copy_Line_Rows - Before insert_quote_line_rows: ' || l_qte_line_id , 1 , 'Y' );
3454 			END IF;
3455                ASO_QUOTE_LINES_PVT.Insert_Quote_Line_Rows (
3456                    p_control_rec =>                l_control_rec
3457                 , P_qte_Line_Rec =>                l_qte_line_tbl ( i )
3458                 , P_qte_line_dtl_tbl =>            l_qte_line_dtl_tbl
3459                 , P_Line_Attribs_Ext_Tbl =>        l_line_attr_ext_tbl
3460                 , P_price_attributes_tbl =>        l_price_attr_tbl
3461                 , P_Price_Adj_Tbl =>               l_price_adj_tbl
3462                 , P_Price_Adj_Attr_Tbl =>          l_Price_Adj_Attr_Tbl
3463                 , P_Payment_Tbl =>                 ASO_QUOTE_PUB.g_miss_payment_tbl
3464                 , P_Shipment_Tbl =>                l_shipment_tbl
3465                 , P_Freight_Charge_Tbl =>          l_freight_charge_tbl
3466                 , P_Tax_Detail_Tbl =>              l_tax_detail_tbl
3467                 , P_Sales_Credit_Tbl =>            l_sales_credit_tbl
3468                 , P_Quote_Party_Tbl =>             l_quote_party_tbl
3469 			 , x_qte_Line_Rec =>                lx_qte_line_rec
3470                 , x_qte_line_dtl_tbl =>            l_qte_line_dtl_tbl_out
3471                 , x_Line_Attribs_Ext_Tbl =>        l_line_attr_Ext_Tbl_out
3472                 , x_price_attributes_tbl =>        l_price_attr_tbl_out
3473                 , x_Price_Adj_Tbl =>               lx_ln_price_adj_tbl
3474                 , x_Price_Adj_Attr_Tbl =>          l_Price_Adj_Attr_Tbl_out
3475                 , x_Payment_Tbl =>                 l_payment_tbl_out
3476                 , x_Shipment_Tbl =>                l_shipment_tbl_out
3477                 , x_Freight_Charge_Tbl =>          l_freight_charge_tbl_out
3478                 , x_Tax_Detail_Tbl =>              l_tax_detail_tbl_out
3479                 , x_Sales_Credit_Tbl =>            l_sales_credit_tbl_out
3480                 , x_Quote_Party_Tbl =>             l_quote_party_tbl_out
3481                 , x_Return_Status =>               l_return_status
3482                 , x_Msg_Count =>                   x_msg_count
3483                 , x_Msg_Data =>                    x_msg_data
3484                 );
3485 
3486       l_quote_party_tbl :=l_quote_party_tbl_out ;
3487       l_sales_credit_tbl :=l_sales_credit_tbl_out ;
3488       l_tax_detail_tbl := l_tax_detail_tbl_out    ;
3489       l_freight_charge_tbl := l_freight_charge_tbl_out  ;
3490       l_shipment_tbl := l_shipment_tbl_out   ;
3491       l_payment_tbl := l_payment_tbl_out     ;
3492       l_Price_Adj_Attr_Tbl  := l_Price_Adj_Attr_Tbl_out  ;
3493       l_Price_Attr_Tbl  :=  l_Price_Attr_Tbl_out     ;
3494       l_qte_line_dtl_tbl := l_qte_line_dtl_tbl_out   ;
3495       l_Line_Attr_Ext_Tbl  :=  l_Line_Attr_Ext_Tbl_out;
3496 
3497 
3498                IF ( l_return_status = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
3499                   x_return_status            := FND_API.G_RET_STS_UNEXP_ERROR;
3500                   IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
3501                      FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_UNEXP_ERROR' );
3502                      FND_MESSAGE.Set_Token ( 'ROW' , 'ASO_COPYLINE AFTER_INSERT' , TRUE );
3503                      FND_MSG_PUB.ADD;
3504                   END IF;
3505                   RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3506                ELSIF ( l_return_status = FND_API.G_RET_STS_ERROR ) THEN
3507                   x_return_status            := FND_API.G_RET_STS_ERROR;
3508                   RAISE FND_API.G_EXC_ERROR;
3509                END IF;
3510                IF aso_debug_pub.g_debug_flag = 'Y' THEN
3511 			aso_debug_pub.ADD ( 'Copy_Rows - After insert_quote_line_rows - status: ' || l_return_status , 1 , 'Y' );
3512 			END IF;
3513 
3514                IF aso_debug_pub.g_debug_flag = 'Y' THEN
3515 			aso_debug_pub.ADD ( 'Copy_Rows - Updating the top model and ato line id for the top model line ', 1 , 'Y' );
3516 			aso_debug_pub.ADD ( 'Copy_Rows - l_ato_model: ' || l_ato_model , 1 , 'Y' );
3517 			END IF;
3518                update aso_quote_line_details
3519 			set top_model_line_id =  lx_qte_line_rec.quote_line_id,
3520 			    ato_line_id       =  decode(l_ato_model,fnd_api.g_true,lx_qte_line_rec.quote_line_id,null)
3521 			where quote_line_id = lx_qte_line_rec.quote_line_id;
3522 
3523      -- Copy the payment record
3524      l_payment_tbl := ASO_UTILITY_PVT.Query_Payment_Rows(p_qte_header_id, L_QTE_LINE_ID);
3525 
3526      IF l_payment_tbl.count > 0 then
3527 
3528                 FOR j IN 1 .. l_payment_tbl.COUNT LOOP
3529                   l_payment_tbl ( j ).QUOTE_HEADER_ID := p_new_qte_header_id;
3530                   l_payment_tbl ( j ).quote_line_id := lx_qte_line_rec.quote_line_id;
3531                   l_payment_tbl ( j ).CREDIT_CARD_APPROVAL_CODE := NULL;
3532                   l_payment_tbl ( j ).CREDIT_CARD_APPROVAL_DATE := NULL;
3533                   l_payment_tbl ( j ).payment_id := NULL;
3534                   l_payment_tbl ( j ).object_version_number := FND_API.G_MISS_NUM;
3535 
3536 		  /* Code change for Quoting Usability Sun ER Start */
3537 		  If (P_Copy_Quote_Control_Rec.Copy_To_Same_Customer = FND_API.G_TRUE And
3538 	              P_Copy_Quote_Control_Rec.Copy_Line_Payment = FND_API.G_FALSE) Then
3539                         l_payment_tbl ( j ).CUST_PO_NUMBER := Null;
3540 			l_payment_tbl ( j ).CUST_PO_LINE_NUMBER := Null;
3541 	                l_payment_tbl ( j ).PAYMENT_TERM_ID := Null;
3542 		        l_payment_tbl ( j ).PAYMENT_TYPE_CODE := NULL;
3543 		        l_payment_tbl ( j ).PAYMENT_REF_NUMBER := Null;
3544 		        l_payment_tbl ( j ).CREDIT_CARD_CODE := Null;
3545 		        l_payment_tbl ( j ).CREDIT_CARD_HOLDER_NAME := Null;
3546 		        l_payment_tbl ( j ).CREDIT_CARD_EXPIRATION_DATE := Null;
3547                   End If;
3548 	          l_payment_tbl ( j ).cvv2 := Null;
3549 	          /* Code change for Quoting Usability Sun ER End */
3550                END LOOP;
3551 
3552        If P_Copy_Quote_Control_Rec.Copy_Line_Payment = FND_API.G_TRUE Then -- Code change for Quoting Usability Sun ER
3553 
3554        IF aso_debug_pub.g_debug_flag = 'Y' THEN
3555           aso_debug_pub.add('Copy_Rows: Before  call to copy_payment_row ', 1, 'Y');
3556        END IF;
3557 
3558          aso_copy_quote_pvt.copy_payment_row(p_payment_rec => l_payment_tbl(1)  ,
3559                                              x_return_status => l_return_status,
3560                                              x_msg_count     => x_msg_count,
3561                                              x_msg_data      => x_msg_data);
3562 
3563        IF aso_debug_pub.g_debug_flag = 'Y' THEN
3564           aso_debug_pub.add('Copy_Rows: After call to copy_payment_row: x_return_status: '||l_return_status, 1, 'Y');
3565        END IF;
3566                IF ( l_return_status = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
3567                   x_return_status            := FND_API.G_RET_STS_UNEXP_ERROR;
3568                   IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
3569                      FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_UNEXP_ERROR' );
3570                      FND_MESSAGE.Set_Token ( 'ROW' , 'ASO_COPYLINE AFTER_INSERT' , TRUE );
3571                      FND_MSG_PUB.ADD;
3572                   END IF;
3573                   RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3574                ELSIF ( l_return_status = FND_API.G_RET_STS_ERROR ) THEN
3575                   x_return_status            := FND_API.G_RET_STS_ERROR;
3576                   RAISE FND_API.G_EXC_ERROR;
3577                END IF;
3578                IF aso_debug_pub.g_debug_flag = 'Y' THEN
3579                aso_debug_pub.ADD ( 'Copy_Rows - After insert_quote_line_rows - status: ' || l_return_status , 1 , 'Y' );
3580                END IF;
3581 
3582      END IF;
3583 
3584      End If; -- Code change for Quoting Usability Sun ER
3585 
3586   --  End Copy payment record
3587 
3588          -- Copying the sales supplement data for the line
3589     --  IF ( P_Copy_Quote_Control_Rec.New_Version = FND_API.G_TRUE ) THEN code commented for Quoting Usability Sun ER
3590 
3591           If P_Copy_Quote_Control_Rec.Copy_Line_Sales_Supplement = FND_API.G_TRUE Then  -- Code change for Quoting Usability Sun ER
3592 
3593                  IF aso_debug_pub.g_debug_flag = 'Y' THEN
3594                  aso_debug_pub.ADD ( 'Copy_Rows - Begin- before line copy_sales_supplement  ' , 1 , 'Y' );
3595                  END IF;
3596 
3597           ASO_COPY_QUOTE_PVT.INSERT_SALES_SUPP_DATA
3598           (
3599           P_Api_Version_Number          =>  1.0,
3600           P_Init_Msg_List               => P_Init_Msg_List,
3601           P_Commit                      => P_Commit,
3602           P_OLD_QUOTE_LINE_ID           => L_QTE_LINE_ID,
3603           P_NEW_QUOTE_LINE_ID           => lx_qte_line_rec.quote_line_id,
3604           X_Return_Status               => l_return_status,
3605           X_Msg_Count                   => X_Msg_Count,
3606           X_Msg_Data                    => X_Msg_Data );
3607 
3608 
3609                   IF aso_debug_pub.g_debug_flag = 'Y' THEN
3610                   aso_debug_pub.ADD ( 'Copy_Rows -After line copy_sales_supplement ' || x_return_status , 1 , 'Y' );
3611                   END IF;
3612 
3613 
3614                IF ( l_return_status = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
3615                  x_return_status            := FND_API.G_RET_STS_UNEXP_ERROR;
3616                  IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
3617                   FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_UNEXP_ERROR' );
3618                   FND_MESSAGE.Set_Token ('ROW' , 'ASO_QUOTE_HEADER', TRUE );
3619                   FND_MSG_PUB.ADD;
3620                 END IF;
3621                RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3622 
3623                ELSIF ( l_return_status = FND_API.G_RET_STS_ERROR ) THEN
3624                 x_return_status            := FND_API.G_RET_STS_ERROR;
3625                 RAISE FND_API.G_EXC_ERROR;
3626                END IF;
3627 
3628   	  End If; -- Code change for Quoting Usability Sun ER
3629 
3630 	-- END IF;  -- new version check
3631 
3632 
3633 
3634 
3635 
3636 
3637 
3638 
3639                --IF P_Copy_Quote_Control_Rec.Copy_Attachment = FND_API.G_TRUE
3640 	       IF P_Copy_Quote_Control_Rec.Copy_Line_Attachment = FND_API.G_TRUE   -- Code change for Quoting Usability Sun ER
3641 
3642                   OR ( ( P_Qte_Line_Id IS NOT NULL ) AND (P_Qte_Line_Id <> FND_API.G_MISS_NUM)) THEN
3643 
3644                  IF aso_debug_pub.g_debug_flag = 'Y' THEN
3645 			  aso_debug_pub.ADD ( 'Copy_Rows - Begin- before line copy_attch  ' , 1 , 'Y' );
3646 			  END IF;
3647 
3648                  ASO_ATTACHMENT_INT.Copy_Attachments(
3649                      p_api_version       => l_api_version,
3650                      p_old_object_code   => 'ASO_QUOTE_LINES_ALL',
3651                      p_new_object_code   => 'ASO_QUOTE_LINES_ALL',
3652                      p_old_object_id     => L_QTE_LINE_ID,
3653                      p_new_object_id     => lx_qte_line_rec.quote_line_id,
3654                      x_return_status     => l_return_status,
3655                      x_msg_count         => x_msg_count,
3656                      x_msg_data          => x_msg_data
3657                    );
3658                   IF aso_debug_pub.g_debug_flag = 'Y' THEN
3659 			   aso_debug_pub.ADD ( 'Copy_Rows -After line copy_attch ' || x_return_status , 1 , 'Y' );
3660 			   END IF;
3661 
3662                   IF ( l_return_status = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
3663                      x_return_status            := FND_API.G_RET_STS_UNEXP_ERROR;
3664                      IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
3665                         FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_UNEXP_ERROR' );
3666                         FND_MESSAGE.Set_Token ( 'ROW' , 'ASO_COPYLINE AFTER_ATTACHMENTS' , TRUE );
3667                         FND_MSG_PUB.ADD;
3668                      END IF;
3669                      RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3670                   ELSIF ( x_return_status = FND_API.G_RET_STS_ERROR ) THEN
3671                      x_return_status            := FND_API.G_RET_STS_ERROR;
3672                      RAISE FND_API.G_EXC_ERROR;
3673                   END IF;
3674 
3675                END IF;
3676 
3677                FOR j IN 1 .. l_dup_price_adj_tbl.COUNT LOOP
3678                   l_price_index_link_tbl ( l_dup_price_adj_tbl ( j ).price_adjustment_id ) :=
3679                                 lx_ln_price_adj_tbl ( j ).price_adjustment_id;
3680                aso_debug_pub.ADD ( 'Copy - l_dup_price_adj_tbl ( j ).price_adjustment_id ' || l_dup_price_adj_tbl ( j ).price_adjustment_id , 1 , 'Y' );
3681                aso_debug_pub.ADD ( 'Copy - lx_ln_price_adj_tbl ( j ).price_adjustment_id ' || lx_ln_price_adj_tbl ( j ).price_adjustment_id , 1 , 'Y' );
3682                END LOOP;
3683 
3684                l_line_index_link_tbl ( l_qte_line_id ) :=
3685                                                  lx_qte_line_rec.quote_line_id;
3686                IF aso_debug_pub.g_debug_flag = 'Y' THEN
3687 			aso_debug_pub.ADD ( 'Copy_Config - l_qte_line_tbl(i).item_type_code ' || l_qte_line_tbl ( i ).item_type_code , 1 , 'Y' );
3688                aso_debug_pub.ADD ( 'Copy - l_qte_line_tbl(i).inventory_item_id ' || l_qte_line_tbl ( i ).inventory_item_id , 1 , 'Y' );
3689                aso_debug_pub.ADD ( 'Copy - l_serviceable_product_flag ' || l_serviceable_product_flag , 1 , 'Y' );
3690 			END IF;
3691 
3692                IF l_serviceable_product_flag = 'Y' THEN
3693 
3694 			  IF aso_debug_pub.g_debug_flag = 'Y' THEN
3695 			  aso_debug_pub.ADD ( 'Before Calling Service Copy ' , 1 , 'N' );
3696 			  END IF;
3697 
3698 			   ASO_COPY_QUOTE_PVT.service_copy (
3699                       p_qte_line_id =>                l_qte_line_id
3700                    , p_copy_quote_control_rec =>      p_copy_quote_control_rec
3701                    , p_new_qte_header_id =>           p_new_qte_header_id
3702                    , p_qte_header_id =>               p_qte_header_id
3703                    , lx_line_index_link_tbl =>        l_line_index_link_tbl
3704                    , lx_price_index_link_tbl =>       l_price_index_link_tbl
3705                    , X_Return_Status =>               l_return_status
3706                    , X_Msg_Count =>                   x_msg_count
3707                    , X_Msg_Data =>                    x_msg_data
3708                    , p_line_quantity            =>  FND_API.G_MISS_NUM
3709                    );
3710 
3711                END IF;
3712 
3713 		     IF aso_debug_pub.g_debug_flag = 'Y' THEN
3714 			aso_debug_pub.ADD ( ' After Calling Service Copy' , 1 , 'N' );
3715 			END IF;
3716 
3717 
3718                IF ( l_return_status = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
3719                   x_return_status            := FND_API.G_RET_STS_UNEXP_ERROR;
3720                   IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
3721                      FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_UNEXP_ERROR' );
3722                      FND_MESSAGE.Set_Token ( 'ROW' , 'ASO_COPYLINE AFTER_SERVICE' , TRUE );
3723                      FND_MSG_PUB.ADD;
3724                   END IF;
3725                   RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3726                ELSIF ( l_return_status = FND_API.G_RET_STS_ERROR ) THEN
3727                   x_return_status            := FND_API.G_RET_STS_ERROR;
3728                   RAISE FND_API.G_EXC_ERROR;
3729                END IF;
3730 
3731             END IF; -- If <> CFG and OPT and copy_flag = 'T'
3732 
3733             IF l_qte_line_tbl ( i ).item_type_code = 'MDL'
3734 	       AND (l_copy_flag = 'T') THEN  -- Code change for Quoting Usability Sun ER
3735                IF l_qte_line_dtl_tbl.COUNT > 1 THEN
3736                   FOR k IN 2 .. l_qte_line_dtl_tbl.COUNT LOOP
3737                      l_qte_line_dtl_tbl ( k ).config_header_id :=
3738                                                               l_config_hdr_id;
3739                      l_qte_line_dtl_tbl ( k ).config_revision_num :=
3740                                                              l_config_rev_nbr;
3741                   END LOOP;
3742                END IF;
3743 
3744                IF aso_debug_pub.g_debug_flag = 'Y' THEN
3745 			aso_debug_pub.ADD ( 'l_old_config_header_id = ' || l_old_config_header_id , 1 , 'N' );
3746                aso_debug_pub.ADD ( ' Before Calling Copy Quote Config Copy' , 1 , 'N' );
3747 			END IF;
3748 
3749 			ASO_COPY_QUOTE_PVT.config_copy (
3750                    p_old_config_header_id =>       l_old_config_header_id
3751                 , p_old_config_revision_num =>     l_old_config_revision_num
3752                 , p_config_header_id =>            l_config_hdr_id
3753                 , p_config_revision_num =>         l_config_rev_nbr
3754                 , p_copy_quote_control_rec =>      p_copy_quote_control_rec
3755                 , p_new_qte_header_id =>           p_new_qte_header_id
3756                 , p_qte_header_id =>               p_qte_header_id
3757                 , lx_line_index_link_tbl =>        l_line_index_link_tbl
3758                 , lx_price_index_link_tbl =>       l_price_index_link_tbl
3759                 , X_Return_Status =>               l_return_status
3760                 , X_Msg_Count =>                   x_msg_count
3761                 , X_Msg_Data =>                    x_msg_data
3762                 , p_line_quantity =>               FND_API.G_MISS_NUM
3763                 );
3764 
3765                IF aso_debug_pub.g_debug_flag = 'Y' THEN
3766 			aso_debug_pub.ADD ( ' After Calling Copy Quote Config Copy' , 1 , 'N' );
3767 			END IF;
3768 
3769 
3770                IF ( l_return_status = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
3771                   x_return_status            := FND_API.G_RET_STS_UNEXP_ERROR;
3772                   IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
3773                      FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_UNEXP_ERROR' );
3774                      FND_MESSAGE.Set_Token ( 'ROW' , 'ASO_COPYLINE AFTER_CONFIG_COPY' , TRUE );
3775                      FND_MSG_PUB.ADD;
3776                   END IF;
3777                   RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3778                ELSIF ( l_return_status = FND_API.G_RET_STS_ERROR ) THEN
3779                   x_return_status            := FND_API.G_RET_STS_ERROR;
3780                   RAISE FND_API.G_EXC_ERROR;
3781                END IF;
3782 
3783                /* bug 1903605*/
3784                l_old_config_header_id     := NULL;
3785                l_old_config_revision_num  := NULL;
3786                /* bug 1903605*/
3787 
3788                IF (l_orig_item_id_tbl IS NOT NULL)  AND (l_new_item_id_tbl IS NOT NULL)  THEN
3789 
3790                IF aso_debug_pub.g_debug_flag = 'Y' THEN
3791 			aso_debug_pub.ADD ( 'item_id_count > 0 ', 1 , 'N' );
3792 		     aso_debug_pub.ADD ( 'Orig Tbl Count ' ||l_orig_item_id_tbl.count, 1 , 'N' );
3793                aso_debug_pub.ADD ( 'New Tbl Count '||l_new_item_id_tbl.count, 1 , 'N' );
3794 
3795 			END IF;
3796 
3797 			  IF l_orig_item_id_tbl.count > 0 AND l_new_item_id_tbl.count > 0 THEN
3798 
3799 			   FORALL  i  IN l_orig_item_id_tbl.FIRST..l_orig_item_id_tbl.LAST
3800                      UPDATE aso_quote_line_details
3801                      SET config_item_id = l_new_item_id_tbl(i)
3802                         ,last_update_date = SYSDATE
3803                         ,last_updated_by =G_USER_ID
3804                         ,last_update_login = G_LOGIN_ID
3805 
3806                      WHERE config_header_id = l_config_hdr_id
3807                      AND config_revision_num = l_config_rev_nbr
3808                      AND config_item_id = l_orig_item_id_tbl(i);
3809 
3810 			  END IF;
3811 
3812                END IF;
3813 
3814 		    END IF; -- 'MDL'
3815 
3816 
3817          END IF; -- checking index link tbl
3818 
3819       END LOOP;
3820 
3821 -- Added a new IF for Copy Line Functionality
3822 
3823 IF ( P_Qte_Line_Id IS NULL ) OR (P_Qte_Line_Id = FND_API.G_MISS_NUM) THEN
3824 
3825       FOR price_adj_rltship_rec IN c_price_adj_rel ( p_qte_header_id ) LOOP
3826          lx_price_adj_rltship_id    := FND_API.G_MISS_NUM;
3827 
3828          IF aso_debug_pub.g_debug_flag = 'Y' THEN
3829 	    aso_debug_pub.ADD ( 'l_line_index_link_tbl ( price_adj_rltship_rec.quote_line_id ) = ' || l_line_index_link_tbl ( price_adj_rltship_rec.quote_line_id ) , 1 , 'N' );
3830 	    END IF;
3831 
3832          OPEN C_Get_Ship_Id (
3833             l_line_index_link_tbl ( price_adj_rltship_rec.quote_line_id )
3834           );
3835          FETCH C_Get_Ship_Id INTO l_ship_id;
3836          CLOSE C_Get_Ship_Id;
3837 
3838          IF aso_debug_pub.g_debug_flag = 'Y' THEN
3839 	    aso_debug_pub.ADD ( 'l_ship_id from line_id = ' || l_ship_id , 1 , 'N' );
3840 	    aso_debug_pub.ADD ( 'price_adj_rltship_rec.price_adjustment_id = ' || price_adj_rltship_rec.price_adjustment_id , 1 , 'N' );
3841 	    aso_debug_pub.ADD ( 'price_adj_rltship_rec.rltd_price_adj_id = ' || price_adj_rltship_rec.rltd_price_adj_id , 1 , 'N' );
3842 	    END IF;
3843 
3844          ASO_PRICE_RLTSHIPS_PKG.Insert_Row (
3845             px_ADJ_RELATIONSHIP_ID =>       lx_price_adj_rltship_id
3846           , p_creation_date =>               SYSDATE
3847           , p_CREATED_BY =>                  G_USER_ID
3848           , p_LAST_UPDATE_DATE =>            SYSDATE
3849           , p_LAST_UPDATED_BY =>             G_USER_ID
3850           , p_LAST_UPDATE_LOGIN =>           G_LOGIN_ID
3851           , p_PROGRAM_APPLICATION_ID =>      price_adj_rltship_rec.PROGRAM_APPLICATION_ID
3852           , p_PROGRAM_ID =>                  price_adj_rltship_rec.PROGRAM_ID
3853           , p_PROGRAM_UPDATE_DATE =>         price_adj_rltship_rec.PROGRAM_UPDATE_DATE
3854           , p_REQUEST_ID =>                  price_adj_rltship_rec.REQUEST_ID
3855           , p_QUOTE_LINE_ID =>               l_line_index_link_tbl ( price_adj_rltship_rec.quote_line_id )
3856           , p_PRICE_ADJUSTMENT_ID =>         l_price_index_link_tbl ( price_adj_rltship_rec.price_adjustment_id )
3857           , p_RLTD_PRICE_ADJ_ID =>           l_price_index_link_tbl ( price_adj_rltship_rec.rltd_price_adj_id )
3858           , p_QUOTE_SHIPMENT_ID =>           l_ship_id
3859 		, p_OBJECT_VERSION_NUMBER =>       price_adj_rltship_rec.OBJECT_VERSION_NUMBER
3860           );
3861       END LOOP;
3862 
3863       -- copy line relationships
3864 
3865       FOR line_rel_rec IN c_line_relation ( p_qte_header_id ) LOOP
3866          lx_LINE_RELATIONSHIP_ID    := FND_API.G_MISS_NUM;
3867          ASO_LINE_RELATIONSHIPS_PKG.Insert_Row (
3868              px_LINE_RELATIONSHIP_ID =>      lx_LINE_RELATIONSHIP_ID
3869           , p_CREATION_DATE =>               SYSDATE
3870           , p_CREATED_BY =>                  G_USER_ID
3871           , p_LAST_UPDATED_BY =>             G_USER_ID
3872           , p_LAST_UPDATE_DATE =>            SYSDATE
3873           , p_LAST_UPDATE_LOGIN =>           G_LOGIN_ID
3874           , p_REQUEST_ID =>                  line_rel_rec.REQUEST_ID
3875           , p_PROGRAM_APPLICATION_ID =>      line_rel_rec.PROGRAM_APPLICATION_ID
3876           , p_PROGRAM_ID =>                  line_rel_rec.PROGRAM_ID
3877           , p_PROGRAM_UPDATE_DATE =>         line_rel_rec.PROGRAM_UPDATE_DATE
3878           , p_QUOTE_LINE_ID =>               l_line_index_link_tbl ( line_rel_rec.quote_line_id )
3879           , p_RELATED_QUOTE_LINE_ID =>       l_line_index_link_tbl ( line_rel_rec.related_quote_line_id )
3880           , p_RECIPROCAL_FLAG =>             line_rel_rec.RECIPROCAL_FLAG
3881           , P_RELATIONSHIP_TYPE_CODE =>      line_rel_rec.RELATIONSHIP_TYPE_CODE
3882 		, p_OBJECT_VERSION_NUMBER =>       line_rel_rec.OBJECT_VERSION_NUMBER
3883           );
3884       END LOOP;
3885 
3886 -- Copy for only that line if a line id was passed in
3887 ELSIF ( P_Qte_Line_Id IS NOT NULL ) AND (P_Qte_Line_Id <> FND_API.G_MISS_NUM) THEN
3888 
3889 IF aso_debug_pub.g_debug_flag = 'Y' THEN
3890 aso_debug_pub.ADD ( ' Copying price adj records ', 1 , 'N' );
3891 aso_debug_pub.ADD ( 'Line Index Tbl Count = '||to_char(l_line_index_link_tbl.count) , 1 , 'N' );
3892 END IF;
3893 
3894       FOR price_adj_rltship_rec IN c_price_adj_rel_from_line_id ( P_Qte_Line_Id ) LOOP
3895          lx_price_adj_rltship_id    := FND_API.G_MISS_NUM;
3896          IF aso_debug_pub.g_debug_flag = 'Y' THEN
3897 	    aso_debug_pub.ADD ( 'l_line_index_link_tbl ( price_adj_rltship_rec.quote_line_id ) = '
3898                              || l_line_index_link_tbl( price_adj_rltship_rec.quote_line_id ) , 1 , 'N' );
3899          END IF;
3900 
3901          OPEN C_Get_Ship_Id (
3902             l_line_index_link_tbl ( price_adj_rltship_rec.quote_line_id )
3903           );
3904          FETCH C_Get_Ship_Id INTO l_ship_id;
3905          CLOSE C_Get_Ship_Id;
3906 
3907          IF aso_debug_pub.g_debug_flag = 'Y' THEN
3908 	    aso_debug_pub.ADD ( 'l_ship_id from line_id = ' || l_ship_id , 1 , 'N' );
3909 	    END IF;
3910 
3911          ASO_PRICE_RLTSHIPS_PKG.Insert_Row (
3912              px_ADJ_RELATIONSHIP_ID =>       lx_price_adj_rltship_id
3913           , p_creation_date =>               SYSDATE
3914           , p_CREATED_BY =>                  G_USER_ID
3915           , p_LAST_UPDATE_DATE =>            SYSDATE
3916           , p_LAST_UPDATED_BY =>             G_USER_ID
3917           , p_LAST_UPDATE_LOGIN =>           G_LOGIN_ID
3918           , p_PROGRAM_APPLICATION_ID =>      price_adj_rltship_rec.PROGRAM_APPLICATION_ID
3919           , p_PROGRAM_ID =>                  price_adj_rltship_rec.PROGRAM_ID
3920           , p_PROGRAM_UPDATE_DATE =>         price_adj_rltship_rec.PROGRAM_UPDATE_DATE
3921           , p_REQUEST_ID =>                  price_adj_rltship_rec.REQUEST_ID
3922           , p_QUOTE_LINE_ID =>               l_line_index_link_tbl ( price_adj_rltship_rec.quote_line_id )
3923           , p_PRICE_ADJUSTMENT_ID =>         l_price_index_link_tbl ( price_adj_rltship_rec.price_adjustment_id )
3924           , p_RLTD_PRICE_ADJ_ID =>           l_price_index_link_tbl ( price_adj_rltship_rec.rltd_price_adj_id )
3925           , p_QUOTE_SHIPMENT_ID =>           l_ship_id
3926 		, p_OBJECT_VERSION_NUMBER =>       price_adj_rltship_rec.OBJECT_VERSION_NUMBER
3927           );
3928       END LOOP;
3929 
3930 
3931       -- copy line relationships
3932 
3933       IF aso_debug_pub.g_debug_flag = 'Y' THEN
3934 	 aso_debug_pub.ADD ( ' Copying line relationship records ', 1 , 'N' );
3935 	 END IF;
3936 
3937       FOR line_rel_rec IN c_line_relation_from_line_id ( P_Qte_Line_Id ) LOOP
3938          lx_LINE_RELATIONSHIP_ID    := FND_API.G_MISS_NUM;
3939          ASO_LINE_RELATIONSHIPS_PKG.Insert_Row (
3940              px_LINE_RELATIONSHIP_ID =>      lx_LINE_RELATIONSHIP_ID
3941           , p_CREATION_DATE =>               SYSDATE
3942           , p_CREATED_BY =>                  G_USER_ID
3943           , p_LAST_UPDATED_BY =>             G_USER_ID
3944           , p_LAST_UPDATE_DATE =>            SYSDATE
3945           , p_LAST_UPDATE_LOGIN =>           G_LOGIN_ID
3946           , p_REQUEST_ID =>                  line_rel_rec.REQUEST_ID
3947           , p_PROGRAM_APPLICATION_ID =>      line_rel_rec.PROGRAM_APPLICATION_ID
3948           , p_PROGRAM_ID =>                  line_rel_rec.PROGRAM_ID
3949           , p_PROGRAM_UPDATE_DATE =>         line_rel_rec.PROGRAM_UPDATE_DATE
3950           , p_QUOTE_LINE_ID =>               l_line_index_link_tbl ( line_rel_rec.quote_line_id )
3951           , p_RELATED_QUOTE_LINE_ID =>       l_line_index_link_tbl ( line_rel_rec.related_quote_line_id )
3952           , p_RECIPROCAL_FLAG =>             line_rel_rec.RECIPROCAL_FLAG
3953           , P_RELATIONSHIP_TYPE_CODE =>      line_rel_rec.RELATIONSHIP_TYPE_CODE
3954 		, p_OBJECT_VERSION_NUMBER =>       line_rel_rec.OBJECT_VERSION_NUMBER
3955           );
3956       END LOOP;
3957 
3958 END IF;
3959 
3960 
3961  -- Pass back the new quote line id which was created
3962 IF ( P_Qte_Line_Id IS NOT NULL ) AND (P_Qte_Line_Id <> FND_API.G_MISS_NUM) THEN
3963 
3964     IF aso_debug_pub.g_debug_flag = 'Y' THEN
3965     aso_debug_pub.ADD ( 'Calling Update Quote to re-price the quote  ', 1 , 'N' );
3966     END IF;
3967   -- Call Update Quote for repricing the quote
3968 
3969     --   l_control_rec.pricing_request_type          :=  'ASO';
3970     --   l_control_rec.header_pricing_event          :=  'BATCH';
3971 
3972 
3973        l_Qte_Header_Rec.quote_header_id := P_Qte_Header_Id;
3974 	  l_Qte_Header_Rec.last_update_date := l_last_update_date;
3975 	  l_Qte_Header_Rec.pricing_status_indicator :=  P_Qte_Header_Rec.pricing_status_indicator;
3976 	  l_Qte_Header_Rec.tax_status_indicator :=  P_Qte_Header_Rec.tax_status_indicator;
3977 	  l_Qte_Header_Rec.price_updated_date :=  P_Qte_Header_Rec.price_updated_date;
3978 	  l_Qte_Header_Rec.tax_updated_date :=  P_Qte_Header_Rec.tax_updated_date;
3979 
3980   aso_quote_pub.update_quote (
3981       p_api_version_number         => 1.0,
3982       p_init_msg_list              => fnd_api.g_false,
3983       p_commit                     => fnd_api.g_false,
3984       p_control_rec                => p_control_rec,
3985       p_qte_header_rec             => l_Qte_Header_Rec,
3986       p_hd_price_attributes_tbl    => aso_quote_pub.g_miss_price_attributes_tbl,
3987       p_hd_payment_tbl             => aso_quote_pub.g_miss_payment_tbl,
3988       p_hd_shipment_tbl            => aso_quote_pub.g_miss_shipment_tbl,
3989       p_hd_freight_charge_tbl      => aso_quote_pub.g_miss_freight_charge_tbl,
3990       p_hd_tax_detail_tbl          => aso_quote_pub.g_miss_tax_detail_tbl,
3991       p_qte_line_tbl               => aso_quote_pub.g_miss_qte_line_tbl,
3992       p_qte_line_dtl_tbl           => aso_quote_pub.g_miss_qte_line_dtl_tbl,
3993       p_line_attr_ext_tbl          => aso_quote_pub.G_MISS_Line_Attribs_Ext_TBL,
3994       p_line_rltship_tbl           => aso_quote_pub.g_miss_line_rltship_tbl,
3995       p_price_adjustment_tbl       => aso_quote_pub.g_miss_price_adj_tbl,
3996       p_price_adj_attr_tbl         => aso_quote_pub.g_miss_price_adj_attr_tbl,
3997       p_price_adj_rltship_tbl      => aso_quote_pub.g_miss_price_adj_rltship_tbl,
3998       p_ln_price_attributes_tbl    => aso_quote_pub.g_miss_price_attributes_tbl,
3999       p_ln_payment_tbl             => aso_quote_pub.g_miss_payment_tbl,
4000       p_ln_shipment_tbl            => aso_quote_pub.g_miss_shipment_tbl,
4001       p_ln_freight_charge_tbl      => aso_quote_pub.g_miss_freight_charge_tbl,
4002       p_ln_tax_detail_tbl          => aso_quote_pub.g_miss_tax_detail_tbl,
4003       x_qte_header_rec             => x_qte_header_rec,
4004       x_qte_line_tbl               => x_qte_line_tbl,
4005       x_qte_line_dtl_tbl           => x_qte_line_dtl_tbl,
4006       x_hd_price_attributes_tbl    => x_hd_price_attributes_tbl,
4007       x_hd_payment_tbl             => x_hd_payment_tbl,
4008       x_hd_shipment_tbl            => x_hd_shipment_tbl,
4009       x_hd_freight_charge_tbl      => x_hd_freight_charge_tbl,
4010       x_hd_tax_detail_tbl          => x_hd_tax_detail_tbl,
4011       x_line_attr_ext_tbl          => x_line_attr_ext_tbl,
4012       x_line_rltship_tbl           => x_line_rltship_tbl,
4013       x_price_adjustment_tbl       => x_price_adjustment_tbl,
4014       x_price_adj_attr_tbl         => x_price_adj_attr_tbl,
4015       x_price_adj_rltship_tbl      => x_price_adj_rltship_tbl,
4016       x_ln_price_attributes_tbl    => x_ln_price_attributes_tbl,
4017       x_ln_payment_tbl             => x_ln_payment_tbl,
4018       x_ln_shipment_tbl            => x_ln_shipment_tbl,
4019       x_ln_freight_charge_tbl      => x_ln_freight_charge_tbl,
4020       x_ln_tax_detail_tbl          => x_ln_tax_detail_tbl,
4021       x_return_status              => l_return_status,
4022       x_msg_count                  => x_msg_count,
4023       x_msg_data                   => x_msg_data
4024     );
4025 
4026     IF aso_debug_pub.g_debug_flag = 'Y' THEN
4027     aso_debug_pub.ADD ( ' Return Status from Update Quote = '||l_return_status, 1 , 'N' );
4028     END IF;
4029 
4030                IF ( l_return_status = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
4031                   x_return_status            := FND_API.G_RET_STS_UNEXP_ERROR;
4032                   IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
4033                      FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_UNEXP_ERROR' );
4034                      FND_MSG_PUB.ADD;
4035                   END IF;
4036                   RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4037                ELSIF ( l_return_status = FND_API.G_RET_STS_ERROR ) THEN
4038                   x_return_status            := FND_API.G_RET_STS_ERROR;
4039                   RAISE FND_API.G_EXC_ERROR;
4040                END IF;
4041 
4042    IF aso_debug_pub.g_debug_flag = 'Y' THEN
4043    aso_debug_pub.ADD ( ' After Calling Update Quote  ', 1 , 'N' );
4044    END IF;
4045 
4046   X_Qte_Line_Id := lx_qte_line_rec.quote_line_id;
4047   IF aso_debug_pub.g_debug_flag = 'Y' THEN
4048   aso_debug_pub.ADD ('X_Qte_Line_Id =   '||to_char(X_Qte_Line_Id), 1 , 'N' );
4049   END IF;
4050 
4051 ELSE
4052 
4053  X_Qte_Line_Id := NULL;
4054 END IF;
4055 
4056 /* Code change for Quoting Usability Sun ER Start */
4057 If P_Copy_Quote_Control_Rec.Copy_To_Same_Customer = FND_API.G_FALSE Then
4058 IF aso_debug_pub.g_debug_flag = 'Y' THEN
4059    aso_debug_pub.ADD ( 'Copy_Line_Rows : Calling Update Quote for lines in change customer flow', 1 , 'N' );
4060    aso_debug_pub.ADD ( 'Copy_Line_Rows : P_Qte_Header_Id :'||P_Qte_Header_Id, 1 , 'N' );
4061    aso_debug_pub.ADD ( 'Copy_Line_Rows : l_last_update_date :'||l_last_update_date, 1 , 'N' );
4062    aso_debug_pub.ADD ( 'Copy_Line_Rows : P_Qte_Header_Rec.pricing_status_indicator :'||P_Qte_Header_Rec.pricing_status_indicator, 1 , 'N' );
4063    aso_debug_pub.ADD ( 'Copy_Line_Rows : P_Qte_Header_Rec.price_updated_date :'||P_Qte_Header_Rec.price_updated_date, 1 , 'N' );
4064    aso_debug_pub.ADD ( 'Copy_Line_Rows : P_Qte_Header_Rec.tax_updated_date :'||P_Qte_Header_Rec.tax_updated_date, 1 , 'N' );
4065 END IF;
4066 
4067 -- Call Update Quote for repricing the quote
4068 
4069 l_control_rec.pricing_request_type  := Null;
4070 l_control_rec.header_pricing_event  := Null;
4071 
4072 --Bug12829891
4073 /*Changed from P_Qte_Header_Id to P_New_Qte_Header_Id*/
4074 l_Qte_Header_Rec.quote_header_id := P_New_Qte_Header_Id;
4075 l_Qte_Header_Rec.last_update_date := l_last_update_date;
4076 l_Qte_Header_Rec.pricing_status_indicator :=  P_Qte_Header_Rec.pricing_status_indicator;
4077 l_Qte_Header_Rec.tax_status_indicator :=  P_Qte_Header_Rec.tax_status_indicator;
4078 l_Qte_Header_Rec.price_updated_date :=  P_Qte_Header_Rec.price_updated_date;
4079 l_Qte_Header_Rec.tax_updated_date :=  P_Qte_Header_Rec.tax_updated_date;
4080 
4081   aso_quote_pub.update_quote (
4082       p_api_version_number         => 1.0,
4083       p_init_msg_list              => fnd_api.g_false,
4084       p_commit                     => fnd_api.g_false,
4085       p_control_rec                => p_control_rec,
4086       p_qte_header_rec             => l_Qte_Header_Rec,
4087       p_hd_price_attributes_tbl    => aso_quote_pub.g_miss_price_attributes_tbl,
4088       p_hd_payment_tbl             => aso_quote_pub.g_miss_payment_tbl,
4089       p_hd_shipment_tbl            => aso_quote_pub.g_miss_shipment_tbl,
4090       p_hd_freight_charge_tbl      => aso_quote_pub.g_miss_freight_charge_tbl,
4091       p_hd_tax_detail_tbl          => aso_quote_pub.g_miss_tax_detail_tbl,
4092       p_qte_line_tbl               => l_qte_line_tbl,
4093       p_qte_line_dtl_tbl           => l_qte_line_dtl_tbl,
4094       p_line_attr_ext_tbl          => l_line_attr_Ext_Tbl,
4095       p_line_rltship_tbl           => aso_quote_pub.g_miss_line_rltship_tbl,
4096       p_price_adjustment_tbl       => aso_quote_pub.g_miss_price_adj_tbl,
4097       p_price_adj_attr_tbl         => aso_quote_pub.g_miss_price_adj_attr_tbl,
4098       p_price_adj_rltship_tbl      => aso_quote_pub.g_miss_price_adj_rltship_tbl,
4099       p_ln_price_attributes_tbl    => aso_quote_pub.g_miss_price_attributes_tbl,
4100       p_ln_payment_tbl             => l_payment_tbl,
4101       p_ln_shipment_tbl            => l_shipment_tbl,
4102       p_ln_freight_charge_tbl      => l_freight_charge_tbl,
4103       p_ln_tax_detail_tbl          => l_tax_detail_tbl,
4104       x_qte_header_rec             => x_qte_header_rec,
4105       x_qte_line_tbl               => x_qte_line_tbl,
4106       x_qte_line_dtl_tbl           => x_qte_line_dtl_tbl,
4107       x_hd_price_attributes_tbl    => x_hd_price_attributes_tbl,
4108       x_hd_payment_tbl             => x_hd_payment_tbl,
4109       x_hd_shipment_tbl            => x_hd_shipment_tbl,
4110       x_hd_freight_charge_tbl      => x_hd_freight_charge_tbl,
4111       x_hd_tax_detail_tbl          => x_hd_tax_detail_tbl,
4112       x_line_attr_ext_tbl          => x_line_attr_ext_tbl,
4113       x_line_rltship_tbl           => x_line_rltship_tbl,
4114       x_price_adjustment_tbl       => x_price_adjustment_tbl,
4115       x_price_adj_attr_tbl         => x_price_adj_attr_tbl,
4116       x_price_adj_rltship_tbl      => x_price_adj_rltship_tbl,
4117       x_ln_price_attributes_tbl    => x_ln_price_attributes_tbl,
4118       x_ln_payment_tbl             => x_ln_payment_tbl,
4119       x_ln_shipment_tbl            => x_ln_shipment_tbl,
4120       x_ln_freight_charge_tbl      => x_ln_freight_charge_tbl,
4121       x_ln_tax_detail_tbl          => x_ln_tax_detail_tbl,
4122       x_return_status              => l_return_status,
4123       x_msg_count                  => x_msg_count,
4124       x_msg_data                   => x_msg_data
4125     );
4126 
4127     IF aso_debug_pub.g_debug_flag = 'Y' THEN
4128     aso_debug_pub.ADD ( ' Copy_Line_Rows : Return Status from Update Quote = '||l_return_status, 1 , 'N' );
4129     END IF;
4130 
4131                IF ( l_return_status = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
4132                   x_return_status            := FND_API.G_RET_STS_UNEXP_ERROR;
4133                   IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
4134                      FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_UNEXP_ERROR' );
4135                      FND_MSG_PUB.ADD;
4136                   END IF;
4137                   RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4138                ELSIF ( l_return_status = FND_API.G_RET_STS_ERROR ) THEN
4139                   x_return_status            := FND_API.G_RET_STS_ERROR;
4140                   RAISE FND_API.G_EXC_ERROR;
4141                END IF;
4142 
4143    IF aso_debug_pub.g_debug_flag = 'Y' THEN
4144    aso_debug_pub.ADD ( 'Copy_Line_Rows : After Calling Update Quote for lines in change customer flow ', 1 , 'N' );
4145    END IF;
4146    End If;
4147    /* Code change for Quoting Usability Sun ER End */
4148 
4149       IF aso_debug_pub.g_debug_flag = 'Y' THEN
4150 	 aso_debug_pub.ADD ( ' End Copy Line Rows API ', 1 , 'N' );
4151 	 END IF;
4152 
4153       x_return_status            := FND_API.G_RET_STS_SUCCESS;
4154 
4155       --
4156       -- End of API body
4157       --
4158 
4159       -- Standard check for p_commit
4160       IF FND_API.to_Boolean ( p_commit ) THEN
4161          COMMIT WORK;
4162       END IF;
4163 
4164       -- Standard call to get message count and if count is 1, get message info.
4165       FND_MSG_PUB.Count_And_Get (
4166           p_count =>                      x_msg_count
4167        , p_data =>                        x_msg_data
4168        );
4169 
4170    EXCEPTION
4171 
4172       WHEN FND_API.G_EXC_ERROR THEN
4173          ASO_UTILITY_PVT.HANDLE_EXCEPTIONS (
4174              P_API_NAME =>                   L_API_NAME
4175           , P_PKG_NAME =>                    G_PKG_NAME
4176           , P_EXCEPTION_LEVEL =>             FND_MSG_PUB.G_MSG_LVL_ERROR
4177           , P_PACKAGE_TYPE =>                ASO_UTILITY_PVT.G_PVT
4178           , X_MSG_COUNT =>                   X_MSG_COUNT
4179           , X_MSG_DATA =>                    X_MSG_DATA
4180           , X_RETURN_STATUS =>               X_RETURN_STATUS
4181           );
4182 
4183       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4184          ASO_UTILITY_PVT.HANDLE_EXCEPTIONS (
4185              P_API_NAME =>                   L_API_NAME
4186           , P_PKG_NAME =>                    G_PKG_NAME
4187           , P_EXCEPTION_LEVEL =>             FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
4188           , P_PACKAGE_TYPE =>                ASO_UTILITY_PVT.G_PVT
4189           , X_MSG_COUNT =>                   X_MSG_COUNT
4190           , X_MSG_DATA =>                    X_MSG_DATA
4191           , X_RETURN_STATUS =>               X_RETURN_STATUS
4192           );
4193 
4194       WHEN OTHERS THEN
4195          ASO_UTILITY_PVT.HANDLE_EXCEPTIONS (
4196              P_API_NAME =>                   L_API_NAME
4197           , P_PKG_NAME =>                    G_PKG_NAME
4198           , P_SQLCODE =>                     SQLCODE
4199           , P_SQLERRM =>                     SQLERRM
4200           , P_EXCEPTION_LEVEL =>             ASO_UTILITY_PVT.G_EXC_OTHERS
4201           , P_PACKAGE_TYPE =>                ASO_UTILITY_PVT.G_PVT
4202           , X_MSG_COUNT =>                   X_MSG_COUNT
4203           , X_MSG_DATA =>                    X_MSG_DATA
4204           , X_RETURN_STATUS =>               X_RETURN_STATUS
4205           );
4206 
4207    END Copy_Line_Rows;
4208 
4209 
4210    PROCEDURE config_copy (
4211        p_old_config_header_id IN NUMBER
4212     , p_old_config_revision_num IN NUMBER
4213     , p_config_header_id IN NUMBER
4214     , p_config_revision_num IN NUMBER
4215     , p_new_qte_header_id IN NUMBER
4216     , p_qte_header_id IN NUMBER
4217     , p_copy_quote_control_rec IN ASO_COPY_QUOTE_PUB.Copy_Quote_Control_Rec_Type
4218             := ASO_COPY_QUOTE_PUB.G_MISS_Copy_Quote_Control_Rec
4219     , lx_line_index_link_tbl IN OUT NOCOPY ASO_QUOTE_HEADERS_PVT.Index_Link_Tbl_Type
4220     , lx_price_index_link_tbl IN OUT NOCOPY ASO_QUOTE_HEADERS_PVT.Index_Link_Tbl_Type
4221     , X_Return_Status OUT NOCOPY /* file.sql.39 change */   VARCHAR2
4222     , X_Msg_Count OUT NOCOPY /* file.sql.39 change */   NUMBER
4223     , X_Msg_Data OUT NOCOPY /* file.sql.39 change */   VARCHAR2
4224     , p_line_quantity  IN NUMBER := FND_API.G_MISS_NUM
4225    ) IS
4226 
4227       -- made changes to the cursor as per bug4036748
4228       CURSOR line_id_from_config (
4229           config_hdr_id NUMBER
4230        , config_rev_number NUMBER
4231        , qte_hdr_id NUMBER
4232        ) IS
4233          SELECT   ASO_Quote_Line_Details.QUOTE_LINE_ID
4234          FROM     ASO_Quote_Line_Details
4235                 , ASO_Quote_Lines_all
4236          WHERE    ASO_Quote_Line_Details.config_header_id = config_hdr_id
4237          AND      ASO_Quote_Line_Details.config_revision_num = config_rev_number
4238          AND      ASO_quote_line_details.quote_line_id = ASO_Quote_Lines_all.quote_line_id
4239          AND      ASO_quote_line_details.ref_type_code = 'CONFIG'
4240 	    AND      ASO_quote_line_details.ref_line_id is not null
4241          AND      aso_quote_lines_all.quote_header_id = qte_hdr_id
4242          ORDER BY aso_quote_line_details.bom_sort_order;
4243 
4244       CURSOR C_Serviceable_Product (
4245           l_organization_id NUMBER
4246        , l_inv_item_id NUMBER
4247        ) IS
4248          SELECT serviceable_product_flag
4249          FROM   MTL_SYSTEM_ITEMS_VL
4250          WHERE  inventory_item_id = l_inv_item_id
4251          AND    organization_id = l_organization_id;
4252 
4253       l_payment_tbl ASO_QUOTE_PUB.Payment_Tbl_Type;
4254       l_shipment_tbl ASO_QUOTE_PUB.Shipment_Tbl_Type;
4255       l_shipment_rec ASO_QUOTE_PUB.Shipment_Rec_Type;
4256       l_freight_charge_tbl ASO_QUOTE_PUB.Freight_Charge_Tbl_Type;
4257       l_tax_detail_tbl ASO_QUOTE_PUB.Tax_Detail_Tbl_Type;
4258       l_Price_Attr_Tbl ASO_QUOTE_PUB.Price_Attributes_Tbl_Type;
4259       l_Price_Adj_Tbl ASO_QUOTE_PUB.Price_Adj_Tbl_Type;
4260       l_Price_Adj_Attr_Tbl ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type;
4261       l_qte_line_dtl_tbl ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type;
4262       l_qte_line_rec ASO_QUOTE_PUB.Qte_Line_Rec_Type;
4263       l_Line_Attr_Ext_Tbl ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type;
4264       lx_ln_Price_Adj_Tbl ASO_QUOTE_PUB.Price_Adj_Tbl_Type;
4265       lx_qte_line_rec ASO_QUOTE_PUB.Qte_Line_Rec_Type;
4266       l_control_rec ASO_QUOTE_PUB.Control_Rec_Type;
4267       LX_PRICE_ADJ_RLTSHIP_ID NUMBER;
4268       LX_LINE_RELATIONSHIP_ID NUMBER;
4269       X_hd_Attr_Ext_Tbl ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type;
4270       X_Sales_Credit_Tbl ASO_QUOTE_PUB.Sales_Credit_Tbl_Type;
4271       X_Quote_Party_Tbl ASO_QUOTE_PUB.Quote_Party_Tbl_Type;
4272       l_hd_Attr_Ext_Tbl ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type;
4273       l_quote_party_tbl ASO_QUOTE_PUB.Quote_Party_Tbl_Type;
4274       l_quote_party_rec ASO_QUOTE_PUB.Quote_Party_rec_Type;
4275       l_sales_credit_tbl ASO_QUOTE_PUB.Sales_Credit_Tbl_Type;
4276       l_sales_credit_rec ASO_QUOTE_PUB.Sales_Credit_rec_Type;
4277       l_return_status VARCHAR2 ( 1 );
4278       qte_line_id NUMBER;
4279       i NUMBER;
4280       j NUMBER;
4281       k NUMBER;
4282       l_quote_line_id NUMBER;
4283       l_serviceable_product_flag VARCHAR2 ( 1 );
4284       l_api_version CONSTANT NUMBER := 1.0;
4285       l_ref_ln_id NUMBER;
4286       l_ato_line_id NUMBER;
4287 	 l_top_model_line_id NUMBER;
4288 
4289 
4290       Cursor get_qte_line_number (x_qte_line_id NUMBER)  IS
4291       SELECT line_number
4292       FROM aso_quote_lines_all
4293       WHERE quote_line_id = x_qte_line_id ;
4294 
4295       l_line_number  NUMBER;
4296       l_old_quote_line_id  Number;
4297 
4298       CURSOR get_old_line_id (
4299           config_hdr_id NUMBER
4300        , config_rev_number NUMBER
4301        , qte_hdr_id NUMBER
4302        ) IS
4303          SELECT   ASO_Quote_Line_Details.QUOTE_LINE_ID
4304          FROM     ASO_Quote_Line_Details
4305                 , ASO_Quote_Lines_all
4306          WHERE    ASO_Quote_Line_Details.config_header_id = config_hdr_id
4307          AND      ASO_Quote_Line_Details.config_revision_num = config_rev_number
4308          AND      ASO_quote_line_details.quote_line_id = ASO_Quote_Lines_all.quote_line_id
4309          AND      ASO_Quote_Lines_all.item_type_code = 'MDL'
4310          AND      aso_quote_lines_all.quote_header_id = qte_hdr_id;
4311 
4312       l_quote_party_tbl_out      ASO_QUOTE_PUB.Quote_Party_Tbl_Type;
4313       l_sales_credit_tbl_out     ASO_QUOTE_PUB.Sales_Credit_Tbl_Type;
4314       l_tax_detail_tbl_out       ASO_QUOTE_PUB.Tax_Detail_Tbl_Type;
4315       l_freight_charge_tbl_out   ASO_QUOTE_PUB.Freight_Charge_Tbl_Type;
4316       l_shipment_tbl_out         ASO_QUOTE_PUB.Shipment_Tbl_Type;
4317       l_payment_tbl_out          ASO_QUOTE_PUB.Payment_Tbl_Type;
4318       l_Price_Adj_Attr_Tbl_out   ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type;
4319       l_Price_Attr_Tbl_out       ASO_QUOTE_PUB.Price_Attributes_Tbl_Type;
4320       l_qte_line_dtl_tbl_out     ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type;
4321       l_Line_Attr_Ext_Tbl_out    ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type;
4322 
4323       l_dup_Price_Adj_Tbl ASO_QUOTE_PUB.Price_Adj_Tbl_Type;
4324 
4325 
4326    BEGIN
4327 
4328       IF aso_debug_pub.g_debug_flag = 'Y' THEN
4329 	 aso_debug_pub.ADD ('Copy_Config - Begin ' , 1, 'Y' );
4330       aso_debug_pub.ADD ( 'Copy_Config - p_new_qte_header_id ' || p_new_qte_header_id , 1 , 'Y' );
4331       aso_debug_pub.ADD ( 'Copy_Config - p_qte_header_id ' || p_qte_header_id , 1 , 'Y' );
4332 	 END IF;
4333 
4334       x_return_status            := FND_API.G_RET_STS_SUCCESS;
4335 
4336       OPEN line_id_from_config (
4337           p_old_config_header_id
4338        , p_old_config_revision_num
4339        , p_qte_header_id
4340        );
4341       LOOP
4342          FETCH line_id_from_config INTO qte_line_id;
4343          EXIT WHEN line_id_from_config%NOTFOUND;
4344          IF aso_debug_pub.g_debug_flag = 'Y' THEN
4345 	    aso_debug_pub.ADD ( 'Copy_Config - inside cursor qte_line_id ' || qte_line_id , 1 , 'Y' );
4346 	    END IF;
4347 
4348          l_qte_line_rec := ASO_UTILITY_PVT.Query_Qte_Line_Row ( qte_line_id );
4349 
4350           IF p_new_qte_header_id = p_qte_header_id THEN
4351 
4352           OPEN  get_old_line_id (
4353           p_old_config_header_id
4354         , p_old_config_revision_num
4355         , p_qte_header_id
4356          );
4357 
4358          FETCH get_old_line_id INTO l_old_quote_line_id;
4359          CLOSE get_old_line_id;
4360 
4361            OPEN get_qte_line_number(lx_line_index_link_tbl(l_old_quote_line_id));
4362            FETCH get_qte_line_number into l_line_number;
4363            CLOSE get_qte_line_number;
4364 
4365            IF aso_debug_pub.g_debug_flag = 'Y' THEN
4366 		 aso_debug_pub.ADD ( 'Line Number --  ' || l_line_number , 1 , 'Y' );
4367 		 END IF;
4368 
4369 
4370            l_qte_line_rec.line_number := l_line_number;
4371 
4372           END IF;
4373 
4374          l_qte_line_rec.quote_header_id := p_new_qte_header_id;
4375 
4376          -- Setting the line quantity ( as per changes for split_line API )
4377          IF (p_line_quantity is not null ) and (p_line_quantity <>  FND_API.G_MISS_NUM ) THEN
4378           l_qte_line_rec.quantity := p_line_quantity;
4379          END IF;
4380 
4381          l_qte_line_dtl_tbl := ASO_UTILITY_PVT.Query_Line_Dtl_Rows ( qte_line_id );
4382 
4383          FOR k IN 1 .. l_qte_line_dtl_tbl.COUNT LOOP
4384             l_qte_line_dtl_tbl ( k ).config_header_id := p_config_header_id;
4385             l_qte_line_dtl_tbl ( k ).config_revision_num := p_config_revision_num;
4386          END LOOP;
4387 
4388          l_line_attr_Ext_Tbl := ASO_UTILITY_PVT.Query_Line_Attribs_Ext_Rows ( qte_line_id );
4389 
4390          l_price_adj_tbl := ASO_UTILITY_PVT.Query_Price_Adj_Rows ( p_qte_header_id , qte_line_id );
4391 	    l_dup_price_adj_tbl := l_price_adj_tbl;
4392 
4393          l_price_adj_attr_tbl := ASO_UTILITY_PVT.Query_Price_Adj_Attr_Rows(p_price_adj_tbl => l_price_adj_tbl);
4394 
4395          l_price_attr_tbl := ASO_UTILITY_PVT.Query_Price_Attr_Rows ( p_qte_header_id , qte_line_id );
4396 
4397          --l_payment_tbl := ASO_UTILITY_PVT.Query_Payment_Rows ( p_qte_header_id , qte_line_id );
4398 
4399          l_shipment_tbl := ASO_UTILITY_PVT.Query_Shipment_Rows ( p_qte_header_id , qte_line_id );
4400 
4401          l_sales_credit_tbl := ASO_UTILITY_PVT.Query_Sales_Credit_Row ( p_qte_header_id , qte_line_id );
4402 
4403          l_quote_party_tbl := ASO_UTILITY_PVT.Query_Quote_Party_Row ( p_qte_header_id , qte_line_id );
4404 
4405          l_freight_charge_tbl := ASO_UTILITY_PVT.Query_Freight_Charge_Rows ( l_shipment_tbl );
4406 
4407          l_tax_detail_tbl := ASO_UTILITY_PVT.Query_Tax_Detail_Rows ( p_qte_header_id , qte_line_id , l_shipment_tbl );
4408 
4409          OPEN C_Serviceable_Product ( l_qte_line_rec.organization_id , l_qte_line_rec.inventory_item_id );
4410          FETCH C_Serviceable_Product INTO l_serviceable_product_flag;
4411          CLOSE C_Serviceable_Product;
4412 
4413          IF aso_debug_pub.g_debug_flag = 'Y' THEN
4414 	       aso_debug_pub.ADD ('Copy_Config - After querying all the records for the line ' , 1, 'Y' );
4415 	    END IF;
4416 
4417          FOR j IN 1 .. l_qte_line_dtl_tbl.COUNT LOOP
4418 
4419             IF aso_debug_pub.g_debug_flag = 'Y' THEN
4420 	           aso_debug_pub.ADD ('Copy_Config - l_qte_line_dtl_tbl('||j||')ref_line_id: '||l_qte_line_dtl_tbl(j).ref_line_id , 1, 'Y' );
4421 	           aso_debug_pub.ADD ('Copy_Config - l_qte_line_dtl_tbl('||j||')top_model_line_id: '||l_qte_line_dtl_tbl(j).top_model_line_id , 1, 'Y' );
4422 	           aso_debug_pub.ADD ('Copy_Config - l_qte_line_dtl_tbl('||j||')ato_line_id: '||l_qte_line_dtl_tbl(j).ato_line_id , 1, 'Y' );
4423 	       END IF;
4424 
4425             l_ref_ln_id := lx_line_index_link_tbl ( l_qte_line_dtl_tbl ( j ).ref_line_id );
4426             l_qte_line_dtl_tbl ( j ).ref_line_id := l_ref_ln_id;
4427 
4428 		 IF (l_qte_line_dtl_tbl(j).top_model_line_id IS NOT NULL AND l_qte_line_dtl_tbl(j).top_model_line_id <> FND_API.G_MISS_NUM
4429 		     and lx_line_index_link_tbl.exists(l_qte_line_dtl_tbl(j).top_model_line_id) ) THEN
4430 		     l_top_model_line_id := lx_line_index_link_tbl ( l_qte_line_dtl_tbl ( j ).top_model_line_id );
4431                l_qte_line_dtl_tbl ( j ).top_model_line_id := l_top_model_line_id;
4432 		 END IF;
4433 
4434 		 IF (l_qte_line_dtl_tbl ( j ).ato_line_id IS NOT NULL AND l_qte_line_dtl_tbl ( j ).ato_line_id <> FND_API.G_MISS_NUM
4435 		     and lx_line_index_link_tbl.exists(l_qte_line_dtl_tbl(j).ato_line_id) ) THEN
4436 		      l_ato_line_id := lx_line_index_link_tbl ( l_qte_line_dtl_tbl ( j ).ato_line_id );
4437                 l_qte_line_dtl_tbl ( j ).ato_line_id := l_ato_line_id;
4438 		 END IF;
4439 
4440 
4441          END LOOP;
4442 
4443          l_quote_line_id := l_qte_line_rec.quote_line_id;
4444          l_qte_line_rec.quote_line_id := NULL;
4445          l_qte_line_rec.object_version_number := FND_API.G_MISS_NUM;
4446 
4447 
4448 	 --BC4J Fix
4449 
4450          FOR j IN 1 .. l_qte_line_dtl_tbl.COUNT LOOP
4451 	       l_qte_line_dtl_tbl(j).quote_line_detail_id := null;
4452             l_qte_line_dtl_tbl(j).object_version_number := FND_API.G_MISS_NUM;
4453 	    END LOOP;
4454 
4455          FOR j IN 1 .. l_price_adj_tbl.COUNT LOOP
4456             l_price_adj_tbl ( j ).QUOTE_HEADER_ID     := p_new_qte_header_id;
4457             l_price_adj_tbl ( j ).price_adjustment_id := null;
4458             l_price_adj_tbl ( j ).object_version_number := FND_API.G_MISS_NUM;
4459 	    END LOOP;
4460 
4461          FOR j IN 1 .. l_price_adj_attr_tbl.COUNT LOOP
4462             l_price_adj_attr_tbl(j).price_adj_attrib_id := null;
4463             l_price_adj_attr_tbl(j).object_version_number := FND_API.G_MISS_NUM;
4464 	    END LOOP;
4465 
4466          FOR j IN 1 .. l_price_attr_tbl.COUNT LOOP
4467             l_price_attr_tbl ( j ).QUOTE_HEADER_ID    := p_new_qte_header_id;
4468             l_price_attr_tbl ( j ).price_attribute_id := null;
4469             l_price_attr_tbl ( j ).object_version_number := FND_API.G_MISS_NUM;
4470 	    END LOOP;
4471 
4472          /* FOR j IN 1 .. l_payment_tbl.COUNT LOOP
4473             l_payment_tbl ( j ).QUOTE_HEADER_ID := p_new_qte_header_id;
4474             l_payment_tbl ( j ).CREDIT_CARD_APPROVAL_CODE := NULL;
4475             l_payment_tbl ( j ).CREDIT_CARD_APPROVAL_DATE := NULL;
4476             l_payment_tbl ( j ).payment_id := NULL;
4477 		  l_payment_tbl ( j ).object_version_number := FND_API.G_MISS_NUM;
4478          END LOOP;  */
4479 
4480          FOR j IN 1 .. l_shipment_tbl.COUNT LOOP
4481             l_shipment_tbl ( j ).QUOTE_HEADER_ID := p_new_qte_header_id;
4482             l_shipment_tbl ( j ).shipment_id := null;
4483 		  l_shipment_tbl ( j ).object_version_number := FND_API.G_MISS_NUM;
4484          END LOOP;
4485 
4486          FOR j IN 1 .. l_sales_credit_tbl.COUNT LOOP
4487             l_sales_credit_tbl(j).QUOTE_HEADER_ID := p_new_qte_header_id;
4488             l_sales_credit_tbl(j).sales_credit_id := null;
4489 		  l_sales_credit_tbl(j).object_version_number := FND_API.G_MISS_NUM;
4490          END LOOP;
4491 
4492          FOR j IN 1 .. l_tax_detail_tbl.COUNT LOOP
4493             l_tax_detail_tbl(j).tax_detail_id  := null;
4494 		  l_tax_detail_tbl(j).object_version_number := FND_API.G_MISS_NUM;
4495          END LOOP;
4496 
4497          FOR j IN 1 .. l_quote_party_tbl.COUNT LOOP
4498             l_quote_party_tbl(j).QUOTE_HEADER_ID := p_new_qte_header_id;
4499             l_quote_party_tbl(j).QUOTE_PARTY_ID := null;
4500 		  l_quote_party_tbl(j).object_version_number := FND_API.G_MISS_NUM;
4501          END LOOP;
4502 
4503          FOR j IN 1 .. l_line_attr_Ext_Tbl.COUNT LOOP
4504             l_line_attr_Ext_Tbl(j).line_attribute_id  := null;
4505 		  l_line_attr_Ext_Tbl(j).object_version_number := FND_API.G_MISS_NUM;
4506          END LOOP;
4507 
4508          FOR j IN 1 .. l_freight_charge_tbl.COUNT LOOP
4509             l_freight_charge_tbl(j).freight_charge_id  := null;
4510 		  l_freight_charge_tbl(j).object_version_number := FND_API.G_MISS_NUM;
4511          END LOOP;
4512 
4513 
4514 	--End of BC4J Fix
4515 
4516          IF aso_debug_pub.g_debug_flag = 'Y' THEN
4517 	    aso_debug_pub.ADD ( 'Copy_Config - Before insert_quote_line_rows: ' || l_quote_line_id , 1 , 'Y' );
4518 	    END IF;
4519          ASO_QUOTE_LINES_PVT.Insert_Quote_Line_Rows (
4520              p_control_rec =>                l_control_rec
4521           , P_qte_Line_Rec =>                l_qte_line_rec
4522           , P_qte_line_dtl_tbl =>            l_qte_line_dtl_tbl
4523           , P_Line_Attribs_Ext_Tbl =>        l_line_attr_ext_tbl
4524           , P_price_attributes_tbl =>        l_price_attr_tbl
4525           , P_Price_Adj_Tbl =>               l_price_adj_tbl
4526           , P_Price_Adj_Attr_Tbl =>          l_Price_Adj_Attr_Tbl
4527           , P_Payment_Tbl =>                 ASO_QUOTE_PUB.g_miss_payment_tbl
4528           , P_Shipment_Tbl =>                l_shipment_tbl
4529           , P_Freight_Charge_Tbl =>          l_freight_charge_tbl
4530           , P_Tax_Detail_Tbl =>              l_tax_detail_tbl
4531           , P_Sales_Credit_Tbl =>            l_sales_credit_tbl
4532           , P_Quote_Party_Tbl =>             l_quote_party_tbl
4533 
4534 		, x_qte_Line_Rec =>                lx_qte_line_rec
4535           , x_qte_line_dtl_tbl =>            l_qte_line_dtl_tbl_out
4536           , x_Line_Attribs_Ext_Tbl =>        l_line_attr_Ext_Tbl_out
4537           , x_price_attributes_tbl =>        l_price_attr_tbl_out
4538           , x_Price_Adj_Tbl =>               lx_ln_price_adj_tbl
4539           , x_Price_Adj_Attr_Tbl =>          l_Price_Adj_Attr_Tbl_out
4540           , x_Payment_Tbl =>                 l_payment_tbl_out
4541           , x_Shipment_Tbl =>                l_shipment_tbl_out
4542           , x_Freight_Charge_Tbl =>          l_freight_charge_tbl_out
4543           , x_Tax_Detail_Tbl =>              l_tax_detail_tbl_out
4544           , X_Sales_Credit_Tbl =>            l_sales_credit_tbl_out
4545           , X_Quote_Party_Tbl =>             l_quote_party_tbl_out
4546           , X_Return_Status =>               x_return_status
4547           , X_Msg_Count =>                   x_msg_count
4548           , X_Msg_Data =>                    x_msg_data
4549           );
4550 
4551       l_quote_party_tbl :=l_quote_party_tbl_out ;
4552       l_sales_credit_tbl :=l_sales_credit_tbl_out ;
4553       l_tax_detail_tbl := l_tax_detail_tbl_out    ;
4554       l_freight_charge_tbl := l_freight_charge_tbl_out  ;
4555       l_shipment_tbl := l_shipment_tbl_out   ;
4556       l_payment_tbl := l_payment_tbl_out     ;
4557       l_Price_Adj_Attr_Tbl  := l_Price_Adj_Attr_Tbl_out  ;
4558       l_Price_Attr_Tbl  :=  l_Price_Attr_Tbl_out     ;
4559       l_qte_line_dtl_tbl := l_qte_line_dtl_tbl_out   ;
4560       l_Line_Attr_Ext_Tbl  :=  l_Line_Attr_Ext_Tbl_out;
4561 
4562 
4563 
4564          IF ( x_return_status = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
4565             IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
4566                FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_UNEXP_ERROR' );
4567                FND_MESSAGE.Set_Token ( 'ROW' , 'ASO_COPYCONFIG AFTER_INSERT' , TRUE );
4568                FND_MSG_PUB.ADD;
4569             END IF;
4570             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4571          ELSIF ( x_return_status = FND_API.G_RET_STS_ERROR ) THEN
4572             RAISE FND_API.G_EXC_ERROR;
4573          END IF;
4574 
4575       -- Copy the payment record
4576        l_payment_tbl := ASO_UTILITY_PVT.Query_Payment_Rows ( p_qte_header_id , qte_line_id );
4577       IF l_payment_tbl.count > 0 then
4578 
4579          FOR j IN 1 .. l_payment_tbl.COUNT LOOP
4580             l_payment_tbl ( j ).QUOTE_HEADER_ID := p_new_qte_header_id;
4581             l_payment_tbl ( j ).QUOTE_LINE_ID := lx_qte_line_rec.quote_line_id;
4582             l_payment_tbl ( j ).CREDIT_CARD_APPROVAL_CODE := NULL;
4583             l_payment_tbl ( j ).CREDIT_CARD_APPROVAL_DATE := NULL;
4584             l_payment_tbl ( j ).payment_id := NULL;
4585             l_payment_tbl ( j ).object_version_number := FND_API.G_MISS_NUM;
4586          END LOOP;
4587 
4588        IF aso_debug_pub.g_debug_flag = 'Y' THEN
4589           aso_debug_pub.add('Copy_Config: Before  call to copy_payment_row ', 1, 'Y');
4590        END IF;
4591 
4592          aso_copy_quote_pvt.copy_payment_row(p_payment_rec => l_payment_tbl(1)  ,
4593                                              x_return_status => l_return_status,
4594                                              x_msg_count     => x_msg_count,
4595                                              x_msg_data      => x_msg_data);
4596 
4597        IF aso_debug_pub.g_debug_flag = 'Y' THEN
4598           aso_debug_pub.add('Copy_Config: After call to copy_payment_row: x_return_status: '||l_return_status, 1, 'Y');
4599        END IF;
4600       IF ( l_return_status = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
4601          x_return_status            := FND_API.G_RET_STS_UNEXP_ERROR;
4602          IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
4603             FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_UNEXP_ERROR' );
4604             FND_MESSAGE.Set_Token ( 'ROW' , 'ASO_COPYCONFIG AFTER_INSERT' , TRUE );
4605             FND_MSG_PUB.ADD;
4606          END IF;
4607          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4608       ELSIF ( l_return_status = FND_API.G_RET_STS_ERROR ) THEN
4609          x_return_status            := FND_API.G_RET_STS_ERROR;
4610          RAISE FND_API.G_EXC_ERROR;
4611       END IF;
4612 
4613     END IF;
4614      --  End Copy payment record
4615 
4616 
4617          -- Copying the sales supplement data for the line
4618       IF ( P_Copy_Quote_Control_Rec.New_Version = FND_API.G_TRUE ) THEN
4619 
4620                  IF aso_debug_pub.g_debug_flag = 'Y' THEN
4621                  aso_debug_pub.ADD ( 'Copy_Rows - Begin- before line copy_sales_supplement  ' , 1 , 'Y' );
4622                  END IF;
4623 
4624           ASO_COPY_QUOTE_PVT.INSERT_SALES_SUPP_DATA
4625           (
4626           P_Api_Version_Number          =>  1.0,
4627           P_Init_Msg_List               => FND_API.G_FALSE,
4628           P_Commit                      => FND_API.G_FALSE,
4629           P_OLD_QUOTE_LINE_ID           => qte_line_id,
4630           P_NEW_QUOTE_LINE_ID           => lx_qte_line_rec.quote_line_id,
4631           X_Return_Status               => l_return_status,
4632           X_Msg_Count                   => X_Msg_Count,
4633           X_Msg_Data                    => X_Msg_Data );
4634 
4635 
4636                   IF aso_debug_pub.g_debug_flag = 'Y' THEN
4637                   aso_debug_pub.ADD ( 'Copy_Rows -After line copy_sales_supplement ' || x_return_status , 1 , 'Y' );
4638                   END IF;
4639 
4640 
4641                IF ( l_return_status = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
4642                  x_return_status            := FND_API.G_RET_STS_UNEXP_ERROR;
4643                  IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
4644                   FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_UNEXP_ERROR' );
4645                   FND_MESSAGE.Set_Token ('ROW' , 'ASO_QUOTE_HEADER', TRUE );
4646                   FND_MSG_PUB.ADD;
4647                 END IF;
4648                RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4649 
4650                ELSIF ( l_return_status = FND_API.G_RET_STS_ERROR ) THEN
4651                 x_return_status            := FND_API.G_RET_STS_ERROR;
4652                 RAISE FND_API.G_EXC_ERROR;
4653                END IF;
4654         END IF;  -- new version check
4655 
4656 
4657 
4658 
4659          IF P_Copy_Quote_Control_Rec.copy_attachment = FND_API.G_TRUE THEN
4660             IF aso_debug_pub.g_debug_flag = 'Y' THEN
4661 		  aso_debug_pub.ADD ( 'Copy_Rows - Begin- before config  line copy_attch  ' , 1 , 'Y' );
4662 		  END IF;
4663 
4664             ASO_ATTACHMENT_INT.Copy_Attachments(
4665                 p_api_version       => l_api_version,
4666                 p_old_object_code   => 'ASO_QUOTE_LINES_ALL',
4667                 p_new_object_code   => 'ASO_QUOTE_LINES_ALL',
4668                 p_old_object_id     => qte_line_id,
4669                 p_new_object_id     => lx_qte_line_rec.quote_line_id,
4670                 x_return_status     => x_return_status ,
4671                 x_msg_count         => x_msg_count,
4672                 x_msg_data          => x_msg_data
4673              );
4674             IF aso_debug_pub.g_debug_flag = 'Y' THEN
4675 		     aso_debug_pub.ADD ( 'Copy_Rows -After config line copy_attch ' || x_return_status , 1 , 'Y' );
4676 		  END IF;
4677             IF ( x_return_status = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
4678                IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
4679                   FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_UNEXP_ERROR' );
4680                   FND_MESSAGE.Set_Token ( 'ROW' , 'ASO_COPYCONFIG AFTER_ATTACHMENTS' , TRUE );
4681                   FND_MSG_PUB.ADD;
4682                END IF;
4683                RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4684             ELSIF ( x_return_status = FND_API.G_RET_STS_ERROR ) THEN
4685                RAISE FND_API.G_EXC_ERROR;
4686             END IF;
4687 
4688          END IF;
4689 
4690          FOR j IN 1 .. l_dup_price_adj_tbl.COUNT LOOP
4691             lx_price_index_link_tbl(l_dup_price_adj_tbl(j).price_adjustment_id) := lx_ln_price_adj_tbl(j).price_adjustment_id;
4692          END LOOP;
4693 
4694          lx_line_index_link_tbl(qte_line_id) := lx_qte_line_rec.quote_line_id;
4695 
4696 -- CLOSE line_id_from_config;
4697 
4698          IF aso_debug_pub.g_debug_flag = 'Y' THEN
4699 	       aso_debug_pub.ADD('Copy_Config - l_qte_line_tbl(i).item_type_code ' || l_qte_line_rec.item_type_code , 1 , 'Y' );
4700             aso_debug_pub.ADD('Copy - l_qte_line_tbl(i).inventory_item_id ' || l_qte_line_rec.inventory_item_id , 1 , 'Y' );
4701             aso_debug_pub.ADD('Copy - l_serviceable_product_flag ' || l_serviceable_product_flag , 1 , 'Y' );
4702 	    END IF;
4703 
4704          IF l_serviceable_product_flag = 'Y' THEN
4705             ASO_COPY_QUOTE_PVT.service_copy (
4706                 p_qte_line_id =>                l_quote_line_id
4707              , p_copy_quote_control_rec =>      p_copy_quote_control_rec
4708              , p_new_qte_header_id =>           p_new_qte_header_id
4709              , p_qte_header_id =>               p_qte_header_id
4710              , lx_line_index_link_tbl =>        lx_line_index_link_tbl
4711              , lx_price_index_link_tbl =>       lx_price_index_link_tbl
4712              , X_Return_Status =>               x_return_status
4713              , X_Msg_Count =>                   x_msg_count
4714              , X_Msg_Data =>                    x_msg_data
4715              , p_line_quantity            =>  FND_API.G_MISS_NUM
4716              );
4717          END IF;
4718          IF ( x_return_status = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
4719             IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
4720                FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_UNEXP_ERROR' );
4721                FND_MESSAGE.Set_Token ( 'ROW' , 'ASO_COPYCONFIG AFTER_SERVICE' , TRUE );
4722                FND_MSG_PUB.ADD;
4723             END IF;
4724             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4725          ELSIF ( x_return_status = FND_API.G_RET_STS_ERROR ) THEN
4726             RAISE FND_API.G_EXC_ERROR;
4727          END IF;
4728 
4729       END LOOP;
4730 
4731       CLOSE line_id_from_config;
4732 
4733    END config_copy;
4734 
4735 
4736    PROCEDURE service_copy (
4737        p_qte_line_id IN NUMBER
4738     , p_copy_quote_control_rec IN ASO_COPY_QUOTE_PUB.Copy_Quote_Control_Rec_Type
4739             := ASO_COPY_QUOTE_PUB.G_MISS_Copy_Quote_Control_Rec
4740     , p_new_qte_header_id IN NUMBER
4741     , p_qte_header_id IN NUMBER
4742     , lx_line_index_link_tbl IN OUT NOCOPY  ASO_QUOTE_HEADERS_PVT.Index_Link_Tbl_Type
4743     , lx_price_index_link_tbl IN OUT NOCOPY  ASO_QUOTE_HEADERS_PVT.Index_Link_Tbl_Type
4744     , X_Return_Status OUT NOCOPY /* file.sql.39 change */   VARCHAR2
4745     , X_Msg_Count OUT NOCOPY /* file.sql.39 change */   NUMBER
4746     , X_Msg_Data OUT NOCOPY /* file.sql.39 change */   VARCHAR2
4747     , p_line_quantity     IN NUMBER  := FND_API.G_MISS_NUM
4748    ) IS
4749 
4750       CURSOR line_id_from_service (
4751           qte_ln_id NUMBER
4752        ) IS
4753          SELECT related_quote_line_id
4754          FROM   aso_line_relationships
4755          WHERE  quote_line_id = qte_ln_id
4756          AND    relationship_type_code = 'SERVICE';
4757 
4758       l_payment_tbl ASO_QUOTE_PUB.Payment_Tbl_Type;
4759       l_shipment_tbl ASO_QUOTE_PUB.Shipment_Tbl_Type;
4760       l_shipment_rec ASO_QUOTE_PUB.Shipment_Rec_Type;
4761       l_freight_charge_tbl ASO_QUOTE_PUB.Freight_Charge_Tbl_Type;
4762       l_tax_detail_tbl ASO_QUOTE_PUB.Tax_Detail_Tbl_Type;
4763       l_Price_Attr_Tbl ASO_QUOTE_PUB.Price_Attributes_Tbl_Type;
4764       l_Price_Adj_Tbl ASO_QUOTE_PUB.Price_Adj_Tbl_Type;
4765       l_Price_Adj_Attr_Tbl ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type;
4766       l_qte_line_dtl_tbl ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type;
4767       l_qte_line_rec ASO_QUOTE_PUB.Qte_Line_Rec_Type;
4768       l_Line_Attr_Ext_Tbl ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type;
4769       lx_ln_Price_Adj_Tbl ASO_QUOTE_PUB.Price_Adj_Tbl_Type;
4770       lx_qte_line_rec ASO_QUOTE_PUB.Qte_Line_Rec_Type;
4771       l_control_rec ASO_QUOTE_PUB.Control_Rec_Type;
4772       LX_PRICE_ADJ_RLTSHIP_ID NUMBER;
4773       LX_LINE_RELATIONSHIP_ID NUMBER;
4774       X_hd_Attr_Ext_Tbl ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type;
4775       X_Sales_Credit_Tbl ASO_QUOTE_PUB.Sales_Credit_Tbl_Type;
4776       X_Quote_Party_Tbl ASO_QUOTE_PUB.Quote_Party_Tbl_Type;
4777       l_hd_Attr_Ext_Tbl ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type;
4778       l_quote_party_tbl ASO_QUOTE_PUB.Quote_Party_Tbl_Type;
4779       l_quote_party_rec ASO_QUOTE_PUB.Quote_Party_rec_Type;
4780       l_sales_credit_tbl ASO_QUOTE_PUB.Sales_Credit_Tbl_Type;
4781       l_sales_credit_rec ASO_QUOTE_PUB.Sales_Credit_rec_Type;
4782       l_service_ref_line_id NUMBER;
4783       l_return_status VARCHAR2 ( 1 );
4784       qte_line_id NUMBER;
4785       i NUMBER;
4786       j NUMBER;
4787       k NUMBER;
4788       l_api_version CONSTANT NUMBER := 1.0;
4789 
4790       Cursor get_qte_line_number (x_qte_line_id NUMBER)  IS
4791       SELECT line_number
4792       FROM aso_quote_lines_all
4793       WHERE quote_line_id = x_qte_line_id ;
4794 
4795       l_line_number  NUMBER;
4796 
4797       l_quote_party_tbl_out      ASO_QUOTE_PUB.Quote_Party_Tbl_Type;
4798       l_sales_credit_tbl_out     ASO_QUOTE_PUB.Sales_Credit_Tbl_Type;
4799       l_tax_detail_tbl_out       ASO_QUOTE_PUB.Tax_Detail_Tbl_Type;
4800       l_freight_charge_tbl_out   ASO_QUOTE_PUB.Freight_Charge_Tbl_Type;
4801       l_shipment_tbl_out         ASO_QUOTE_PUB.Shipment_Tbl_Type;
4802       l_payment_tbl_out          ASO_QUOTE_PUB.Payment_Tbl_Type;
4803       l_Price_Adj_Attr_Tbl_out   ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type;
4804       l_Price_Attr_Tbl_out       ASO_QUOTE_PUB.Price_Attributes_Tbl_Type;
4805       l_qte_line_dtl_tbl_out     ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type;
4806       l_Line_Attr_Ext_Tbl_out    ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type;
4807 
4808       l_dup_Price_Adj_Tbl ASO_QUOTE_PUB.Price_Adj_Tbl_Type;
4809 
4810 
4811    BEGIN
4812 
4813       IF aso_debug_pub.g_debug_flag = 'Y' THEN
4814 	 aso_debug_pub.ADD ('Copy_Service - Begin ' , 1, 'Y' );
4815       aso_debug_pub.ADD ( 'Copy_Service - p_new_qte_header_id ' || p_new_qte_header_id , 1 , 'Y' );
4816       aso_debug_pub.ADD ( 'Copy_Service - p_qte_header_id ' || p_qte_header_id , 1 , 'Y' );
4817       aso_debug_pub.ADD ( 'Copy_Service - p_qte_line_id ' || p_qte_line_id , 1 , 'Y' );
4818 	 END IF;
4819 
4820       x_return_status            := FND_API.G_RET_STS_SUCCESS;
4821 
4822       OPEN line_id_from_service ( p_qte_line_id );
4823 
4824       LOOP
4825          FETCH line_id_from_service INTO qte_line_id;
4826          EXIT WHEN line_id_from_service%NOTFOUND;
4827          IF aso_debug_pub.g_debug_flag = 'Y' THEN
4828 	    aso_debug_pub.ADD ( 'Copy_Service - inside cursor qte_line_id ' || qte_line_id , 1 , 'Y' );
4829 	    END IF;
4830 
4831          l_qte_line_rec             :=
4832                            ASO_UTILITY_PVT.Query_Qte_Line_Row ( qte_line_id );
4833 
4834           IF p_new_qte_header_id = p_qte_header_id THEN
4835 
4836            OPEN get_qte_line_number(lx_line_index_link_tbl(p_qte_line_id));
4837            FETCH get_qte_line_number into l_line_number;
4838            CLOSE get_qte_line_number;
4839 
4840            l_qte_line_rec.line_number := l_line_number;
4841 
4842           END IF;
4843 
4844          -- Setting the line quantity ( as per changes for split_line API )
4845          IF (p_line_quantity is not null ) and (p_line_quantity <>  FND_API.G_MISS_NUM ) THEN
4846           l_qte_line_rec.quantity := p_line_quantity;
4847          END IF;
4848 
4849 	    l_qte_line_rec.quote_header_id := p_new_qte_header_id;
4850          l_qte_line_dtl_tbl         :=
4851                           ASO_UTILITY_PVT.Query_Line_Dtl_Rows ( qte_line_id );
4852 
4853          IF l_qte_line_dtl_tbl.COUNT > 0 THEN
4854 
4855             FOR k IN 1 .. l_qte_line_dtl_tbl.COUNT LOOP
4856 
4857                IF l_qte_line_dtl_tbl ( k ).service_ref_type_code = 'QUOTE' THEN
4858 
4859                   IF l_qte_line_dtl_tbl ( k ).service_ref_line_id IS NOT NULL THEN
4860 
4861                      IF aso_debug_pub.g_debug_flag = 'Y' THEN
4862 				 aso_debug_pub.ADD ( 'Copy_Service - l_qte_line_dtl_tbl(k).service_ref_line_id ' || l_qte_line_dtl_tbl ( k ).service_ref_line_id , 1 , 'Y' );
4863 				 END IF;
4864                      l_service_ref_line_id      :=
4865                            lx_line_index_link_tbl ( l_qte_line_dtl_tbl ( k ).service_ref_line_id );
4866                      l_qte_line_dtl_tbl ( k ).service_ref_line_id :=
4867                                                         l_service_ref_line_id;
4868                   END IF;
4869 
4870                END IF;
4871 
4872             END LOOP;
4873 
4874          END IF;
4875 
4876          IF aso_debug_pub.g_debug_flag = 'Y' THEN
4877 	    aso_debug_pub.ADD ( 'Copy_Service - 2 l_service_ref_line_id ' || l_service_ref_line_id , 1 , 'Y' );
4878 	    END IF;
4879 
4880          l_line_attr_Ext_Tbl := ASO_UTILITY_PVT.Query_Line_Attribs_Ext_Rows ( qte_line_id );
4881 
4882          l_price_adj_tbl := ASO_UTILITY_PVT.Query_Price_Adj_Rows ( p_qte_header_id , qte_line_id );
4883 
4884 	    l_dup_price_adj_tbl := l_price_adj_tbl;
4885 
4886          l_price_adj_attr_tbl := ASO_UTILITY_PVT.Query_Price_Adj_Attr_Rows ( p_price_adj_tbl => l_price_adj_tbl );
4887 
4888          l_price_attr_tbl := ASO_UTILITY_PVT.Query_Price_Attr_Rows ( p_qte_header_id , qte_line_id );
4889 
4890          --l_payment_tbl := ASO_UTILITY_PVT.Query_Payment_Rows ( p_qte_header_id , QTE_LINE_ID );
4891 
4892          l_shipment_tbl := ASO_UTILITY_PVT.Query_Shipment_Rows ( p_qte_header_id , QTE_LINE_ID );
4893 
4894          l_sales_credit_tbl := ASO_UTILITY_PVT.Query_Sales_Credit_Row ( p_qte_header_id , QTE_LINE_ID );
4895 
4896          l_quote_party_tbl := ASO_UTILITY_PVT.Query_Quote_Party_Row ( p_qte_header_id , QTE_LINE_ID );
4897 
4898          l_freight_charge_tbl := ASO_UTILITY_PVT.Query_Freight_Charge_Rows ( l_shipment_tbl );
4899 
4900          l_tax_detail_tbl := ASO_UTILITY_PVT.Query_Tax_Detail_Rows ( p_qte_header_id , QTE_LINE_ID , l_shipment_tbl );
4901 
4902          l_qte_line_rec.quote_line_id := NULL;
4903          l_qte_line_rec.object_version_number := FND_API.G_MISS_NUM;
4904 
4905 
4906      --BC4J Fix
4907 
4908          FOR j IN 1 .. l_qte_line_dtl_tbl.COUNT LOOP
4909 	       l_qte_line_dtl_tbl(j).quote_line_detail_id := null;
4910             l_qte_line_dtl_tbl(j).object_version_number := FND_API.G_MISS_NUM;
4911 	    END LOOP;
4912 
4913          FOR j IN 1 .. l_price_adj_tbl.COUNT LOOP
4914             l_price_adj_tbl ( j ).QUOTE_HEADER_ID     := p_new_qte_header_id;
4915             l_price_adj_tbl ( j ).price_adjustment_id := null;
4916 		  l_price_adj_tbl ( j ).object_version_number := FND_API.G_MISS_NUM;
4917          END LOOP;
4918 
4919          FOR j IN 1 .. l_price_adj_attr_tbl.COUNT LOOP
4920             l_price_adj_attr_tbl(j).price_adj_attrib_id := null;
4921 		  l_price_adj_attr_tbl(j).object_version_number := FND_API.G_MISS_NUM;
4922          END LOOP;
4923 
4924          FOR j IN 1 .. l_price_attr_tbl.COUNT LOOP
4925             l_price_attr_tbl ( j ).QUOTE_HEADER_ID    := p_new_qte_header_id;
4926             l_price_attr_tbl ( j ).price_attribute_id := null;
4927 		  l_price_attr_tbl ( j ).object_version_number := FND_API.G_MISS_NUM;
4928          END LOOP;
4929 
4930          /* FOR j IN 1 .. l_payment_tbl.COUNT LOOP
4931             l_payment_tbl ( j ).QUOTE_HEADER_ID := p_new_qte_header_id;
4932             l_payment_tbl ( j ).CREDIT_CARD_APPROVAL_CODE := NULL;
4933             l_payment_tbl ( j ).CREDIT_CARD_APPROVAL_DATE := NULL;
4934             l_payment_tbl ( j ).payment_id := NULL;
4935 		  l_payment_tbl ( j ).object_version_number := FND_API.G_MISS_NUM;
4936          END LOOP; */
4937 
4938          FOR j IN 1 .. l_shipment_tbl.COUNT LOOP
4939             l_shipment_tbl ( j ).QUOTE_HEADER_ID := p_new_qte_header_id;
4940             l_shipment_tbl ( j ).shipment_id := null;
4941 		  l_shipment_tbl ( j ).object_version_number := FND_API.G_MISS_NUM;
4942          END LOOP;
4943 
4944          FOR j IN 1 .. l_sales_credit_tbl.COUNT LOOP
4945             l_sales_credit_tbl(j).QUOTE_HEADER_ID := p_new_qte_header_id;
4946             l_sales_credit_tbl(j).sales_credit_id := null;
4947 		  l_sales_credit_tbl(j).object_version_number := FND_API.G_MISS_NUM;
4948          END LOOP;
4949 
4950          FOR j IN 1 .. l_quote_party_tbl.COUNT LOOP
4951             l_quote_party_tbl(j).QUOTE_HEADER_ID  := p_new_qte_header_id;
4952             l_quote_party_tbl(j).QUOTE_PARTY_ID  := null;
4953 		  l_quote_party_tbl(j).object_version_number := FND_API.G_MISS_NUM;
4954          END LOOP;
4955 
4956          FOR j IN 1 .. l_tax_detail_tbl.COUNT LOOP
4957             l_tax_detail_tbl(j).tax_detail_id  := null;
4958 		  l_tax_detail_tbl(j).object_version_number := FND_API.G_MISS_NUM;
4959          END LOOP;
4960 
4961          FOR j IN 1 .. l_line_attr_Ext_Tbl.COUNT LOOP
4962             l_line_attr_Ext_Tbl(j).line_attribute_id  := null;
4963 		  l_line_attr_Ext_Tbl(j).object_version_number := FND_API.G_MISS_NUM;
4964          END LOOP;
4965 
4966          FOR j IN 1 .. l_freight_charge_tbl.COUNT LOOP
4967             l_freight_charge_tbl(j).freight_charge_id  := null;
4968 		  l_freight_charge_tbl(j).object_version_number := FND_API.G_MISS_NUM;
4969          END LOOP;
4970 
4971 
4972 	--End of BC4J Fix
4973 
4974          IF aso_debug_pub.g_debug_flag = 'Y' THEN
4975 	    aso_debug_pub.ADD ( 'Copy_Service - Before insert_quote_line_rows: ' || p_qte_line_id , 1 , 'Y' );
4976 	    END IF;
4977          ASO_QUOTE_LINES_PVT.Insert_Quote_Line_Rows (
4978              p_control_rec =>                l_control_rec
4979           , P_qte_Line_Rec =>                l_qte_line_rec
4980           , P_qte_line_dtl_tbl =>            l_qte_line_dtl_tbl
4981           , P_Line_Attribs_Ext_Tbl =>        l_line_attr_ext_tbl
4982           , P_price_attributes_tbl =>        l_price_attr_tbl
4983           , P_Price_Adj_Tbl =>               l_price_adj_tbl
4984           , P_Price_Adj_Attr_Tbl =>          l_Price_Adj_Attr_Tbl
4985           , P_Payment_Tbl =>                 ASO_QUOTE_PUB.g_miss_payment_tbl
4986           , P_Shipment_Tbl =>                l_shipment_tbl
4987           , P_Freight_Charge_Tbl =>          l_freight_charge_tbl
4988           , P_Tax_Detail_Tbl =>              l_tax_detail_tbl
4989           , P_Sales_Credit_Tbl =>            l_sales_credit_tbl
4990           , P_Quote_Party_Tbl =>             l_quote_party_tbl
4991 		, x_qte_Line_Rec =>                lx_qte_line_rec
4992           , x_qte_line_dtl_tbl =>            l_qte_line_dtl_tbl_out
4993           , x_Line_Attribs_Ext_Tbl =>        l_line_attr_Ext_Tbl_out
4994           , x_price_attributes_tbl =>        l_price_attr_tbl_out
4995           , x_Price_Adj_Tbl =>               lx_ln_price_adj_tbl
4996           , x_Price_Adj_Attr_Tbl =>          l_Price_Adj_Attr_Tbl_out
4997           , x_Payment_Tbl =>                 l_payment_tbl_out
4998           , x_Shipment_Tbl =>                l_shipment_tbl_out
4999           , x_Freight_Charge_Tbl =>          l_freight_charge_tbl_out
5000           , x_Tax_Detail_Tbl =>              l_tax_detail_tbl_out
5001           , X_Sales_Credit_Tbl =>            l_sales_credit_tbl_out
5002           , X_Quote_Party_Tbl =>             l_quote_party_tbl_out
5003           , X_Return_Status =>               l_return_status
5004           , X_Msg_Count =>                   x_msg_count
5005           , X_Msg_Data =>                    x_msg_data
5006           );
5007 
5008       l_quote_party_tbl :=l_quote_party_tbl_out ;
5009       l_sales_credit_tbl :=l_sales_credit_tbl_out ;
5010       l_tax_detail_tbl := l_tax_detail_tbl_out    ;
5011       l_freight_charge_tbl := l_freight_charge_tbl_out  ;
5012       l_shipment_tbl := l_shipment_tbl_out   ;
5013       l_payment_tbl := l_payment_tbl_out     ;
5014       l_Price_Adj_Attr_Tbl  := l_Price_Adj_Attr_Tbl_out  ;
5015       l_Price_Attr_Tbl  :=  l_Price_Attr_Tbl_out     ;
5016       l_qte_line_dtl_tbl := l_qte_line_dtl_tbl_out   ;
5017       l_Line_Attr_Ext_Tbl  :=  l_Line_Attr_Ext_Tbl_out;
5018 
5019 
5020 
5021          IF ( x_return_status = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
5022             IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
5023                FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_UNEXP_ERROR' );
5024                FND_MESSAGE.Set_Token ( 'ROW' , 'ASO_COPYSERVICE AFTER_INSERT' , TRUE );
5025                FND_MSG_PUB.ADD;
5026             END IF;
5027             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5028          ELSIF ( x_return_status = FND_API.G_RET_STS_ERROR ) THEN
5029             RAISE FND_API.G_EXC_ERROR;
5030          END IF;
5031 
5032 
5033       -- Copy the payment record
5034     l_payment_tbl := ASO_UTILITY_PVT.Query_Payment_Rows ( p_qte_header_id , QTE_LINE_ID );
5035 
5036     IF l_payment_tbl.count > 0 then
5037 
5038          FOR j IN 1 .. l_payment_tbl.COUNT LOOP
5039             l_payment_tbl ( j ).QUOTE_HEADER_ID := p_new_qte_header_id;
5040             l_payment_tbl ( j ).QUOTE_LINE_ID := lx_qte_line_rec.quote_line_id;
5041             l_payment_tbl ( j ).CREDIT_CARD_APPROVAL_CODE := NULL;
5042             l_payment_tbl ( j ).CREDIT_CARD_APPROVAL_DATE := NULL;
5043             l_payment_tbl ( j ).payment_id := NULL;
5044             l_payment_tbl ( j ).object_version_number := FND_API.G_MISS_NUM;
5045          END LOOP;
5046 
5047        IF aso_debug_pub.g_debug_flag = 'Y' THEN
5048           aso_debug_pub.add('Service_Copy: Before  call to copy_payment_row ', 1, 'Y');
5049        END IF;
5050 
5051          aso_copy_quote_pvt.copy_payment_row(p_payment_rec => l_payment_tbl(1)  ,
5052                                              x_return_status => l_return_status,
5053                                              x_msg_count     => x_msg_count,
5054                                              x_msg_data      => x_msg_data);
5055 
5056        IF aso_debug_pub.g_debug_flag = 'Y' THEN
5057           aso_debug_pub.add('Service_Copy:: After call to copy_payment_row: x_return_status: '||l_return_status, 1, 'Y');
5058        END IF;
5059       IF ( l_return_status = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
5060          x_return_status            := FND_API.G_RET_STS_UNEXP_ERROR;
5061          IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
5062             FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_UNEXP_ERROR' );
5063             FND_MESSAGE.Set_Token ( 'ROW' , 'ASO_COPYSERVICE AFTER_INSERT' , TRUE );
5064             FND_MSG_PUB.ADD;
5065          END IF;
5066          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5067       ELSIF ( l_return_status = FND_API.G_RET_STS_ERROR ) THEN
5068          x_return_status            := FND_API.G_RET_STS_ERROR;
5069          RAISE FND_API.G_EXC_ERROR;
5070       END IF;
5071 
5072    END IF;
5073      --  End Copy payment record
5074 
5075          -- Copying the sales supplement data for the line
5076       IF ( P_Copy_Quote_Control_Rec.New_Version = FND_API.G_TRUE ) THEN
5077 
5078                  IF aso_debug_pub.g_debug_flag = 'Y' THEN
5079                  aso_debug_pub.ADD ( 'Copy_Rows - Begin- before line copy_sales_supplement  ' , 1 , 'Y' );
5080                  END IF;
5081 
5082           ASO_COPY_QUOTE_PVT.INSERT_SALES_SUPP_DATA
5083           (
5084           P_Api_Version_Number          =>  1.0,
5085           P_Init_Msg_List               => FND_API.G_FALSE,
5086           P_Commit                      => FND_API.G_FALSE,
5087           P_OLD_QUOTE_LINE_ID           => qte_line_id,
5088           P_NEW_QUOTE_LINE_ID           => lx_qte_line_rec.quote_line_id,
5089           X_Return_Status               => l_return_status,
5090           X_Msg_Count                   => X_Msg_Count,
5091           X_Msg_Data                    => X_Msg_Data );
5092 
5093 
5094                   IF aso_debug_pub.g_debug_flag = 'Y' THEN
5095                   aso_debug_pub.ADD ( 'Copy_Rows -After line copy_sales_supplement ' || x_return_status , 1 , 'Y' );
5096                   END IF;
5097 
5098 
5099                IF ( l_return_status = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
5100                  x_return_status            := FND_API.G_RET_STS_UNEXP_ERROR;
5101                  IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
5102                   FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_UNEXP_ERROR' );
5103                   FND_MESSAGE.Set_Token ('ROW' , 'ASO_QUOTE_HEADER', TRUE );
5104                   FND_MSG_PUB.ADD;
5105                 END IF;
5106                RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5107 
5108                ELSIF ( l_return_status = FND_API.G_RET_STS_ERROR ) THEN
5109                 x_return_status            := FND_API.G_RET_STS_ERROR;
5110                 RAISE FND_API.G_EXC_ERROR;
5111                END IF;
5112         END IF;  -- new version check
5113 
5114 
5115 
5116          IF P_Copy_Quote_Control_Rec.copy_attachment = FND_API.G_TRUE THEN
5117             IF aso_debug_pub.g_debug_flag = 'Y' THEN
5118 		  aso_debug_pub.ADD ( 'Copy_Rows - Begin- before config  line copy_attch  ' , 1 , 'Y' );
5119 		  END IF;
5120 
5121             ASO_ATTACHMENT_INT.Copy_Attachments (
5122                 p_api_version       => l_api_version,
5123                 p_old_object_code   => 'ASO_QUOTE_LINES_ALL',
5124                 p_new_object_code   => 'ASO_QUOTE_LINES_ALL',
5125                 p_old_object_id     => qte_line_id,
5126                 p_new_object_id     => lx_qte_line_rec.quote_line_id,
5127                 x_return_status     => x_return_status,
5128                 x_msg_count         => x_msg_count,
5129                 x_msg_data          => x_msg_data
5130              );
5131             IF aso_debug_pub.g_debug_flag = 'Y' THEN
5132 		  aso_debug_pub.ADD ( 'Copy_Rows -After config line copy_attch ' || x_return_status , 1 , 'Y' );
5133 		  END IF;
5134             IF ( x_return_status = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
5135                IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
5136                   FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_UNEXP_ERROR' );
5137                   FND_MESSAGE.Set_Token ( 'ROW' , 'ASO_COPYSERVICE AFTER_ATTACHMENTS' , TRUE );
5138                   FND_MSG_PUB.ADD;
5139                END IF;
5140                RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5141             ELSIF ( x_return_status = FND_API.G_RET_STS_ERROR ) THEN
5142                RAISE FND_API.G_EXC_ERROR;
5143             END IF;
5144 
5145          END IF;
5146 
5147          FOR j IN 1 .. l_dup_price_adj_tbl.COUNT LOOP
5148             lx_price_index_link_tbl(l_dup_price_adj_tbl(j).price_adjustment_id) := lx_ln_price_adj_tbl(j).price_adjustment_id;
5149          END LOOP;
5150 
5151          lx_line_index_link_tbl ( qte_line_id ) := lx_qte_line_rec.quote_line_id;
5152 
5153       END LOOP;
5154 
5155       CLOSE line_id_from_service;
5156 
5157    END service_copy;
5158 
5159 
5160    PROCEDURE Get_Quote_Exp_Date (
5161        X_Quote_Exp_Date OUT NOCOPY /* file.sql.39 change */   DATE
5162     , X_Return_Status OUT NOCOPY /* file.sql.39 change */   VARCHAR2
5163     , X_Msg_Count OUT NOCOPY /* file.sql.39 change */   NUMBER
5164     , X_Msg_Data OUT NOCOPY /* file.sql.39 change */   VARCHAR2
5165     ) IS
5166 
5167       CURSOR C_Get_Expiration_Date (
5168           l_Def_Cal VARCHAR2
5169        , l_Def_Per VARCHAR2
5170        ) IS
5171          SELECT End_Date
5172          FROM   GL_PERIODS_V
5173          WHERE  Period_Type = l_Def_Per
5174          AND    Period_Set_Name = l_Def_Cal
5175          AND    SYSDATE BETWEEN Start_Date AND End_Date;
5176 
5177       l_Default_Cal_Prof VARCHAR2 ( 15 )
5178                             := FND_PROFILE.VALUE ('ASO_DEFAULT_EXP_GL_CAL' );
5179       l_Default_Per_Prof VARCHAR2 ( 15 )
5180                          := FND_PROFILE.VALUE ('ASO_DEFAULT_EXP_GL_PERIOD' );
5181       l_qte_duration_prof NUMBER
5182                                 := FND_PROFILE.VALUE ('ASO_QUOTE_DURATION' );
5183 
5184    BEGIN
5185 
5186       X_Return_Status            := FND_API.G_RET_STS_SUCCESS;
5187 
5188       IF      l_Default_Cal_Prof IS NOT NULL
5189           AND l_Default_Per_Prof IS NOT NULL THEN
5190 
5191          OPEN C_Get_Expiration_Date (
5192              l_Default_Cal_Prof
5193           , l_Default_Per_Prof
5194           );
5195          FETCH C_Get_Expiration_Date INTO X_Quote_Exp_Date;
5196 
5197          IF C_Get_Expiration_Date%NOTFOUND THEN
5198 
5199             IF l_qte_duration_prof IS NOT NULL THEN
5200                X_Quote_Exp_Date           :=   SYSDATE + l_qte_duration_prof;
5201             ELSE
5202               /* If profile ASO_QUOTE_DURATION is null, then exp date is sysdate + 30
5203 			see bug 3704719 for more detaisl */
5204 		    X_Quote_Exp_Date := sysdate + NVL(FND_PROFILE.value('ASO_QUOTE_DURATION'), 30);
5205             END IF;
5206 
5207          END IF;
5208 
5209          CLOSE C_Get_Expiration_Date;
5210 
5211       ELSE
5212 
5213          IF l_qte_duration_prof IS NOT NULL THEN
5214             X_Quote_Exp_Date           :=   SYSDATE + l_qte_duration_prof;
5215          ELSE
5216               /* If profile ASO_QUOTE_DURATION is null, then exp date is sysdate + 30
5217                see bug 3704719 for more detaisl */
5218 		  X_Quote_Exp_Date := sysdate + NVL(FND_PROFILE.value('ASO_QUOTE_DURATION'), 30);
5219          END IF;
5220 
5221       END IF;
5222 
5223    END Get_Quote_Exp_Date;
5224 
5225 
5226    PROCEDURE COPY_SALES_SUPPLEMENT (
5227        P_Api_Version_Number IN NUMBER
5228     , P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE
5229     , P_Commit IN VARCHAR2 := FND_API.G_FALSE
5230     , p_old_quote_header_id IN NUMBER
5231     , p_new_quote_header_id IN NUMBER
5232     , X_Return_Status OUT NOCOPY /* file.sql.39 change */   VARCHAR2
5233     , X_Msg_Count OUT NOCOPY /* file.sql.39 change */   VARCHAR2
5234     , X_Msg_Data OUT NOCOPY /* file.sql.39 change */   VARCHAR2
5235     ) IS
5236 
5237       CURSOR get_template_id (
5238           qte_header_id NUMBER
5239        ) IS
5240          SELECT template_instance_id, template_id
5241          FROM   aso_sup_tmpl_instance
5242          WHERE  owner_table_name = 'ASO_QUOTE_HEADERS'
5243          AND    owner_table_id = qte_header_id;
5244 
5245       CURSOR get_values (
5246           temp_instance_id NUMBER
5247        ) IS
5248          SELECT sect_comp_map_id, VALUE, value_type_qualifier, response_id
5249          FROM   aso_sup_instance_value
5250          WHERE  template_instance_id = temp_instance_id;
5251 
5252       l_old_template_instance_id NUMBER;
5253       l_new_template_instance_id NUMBER;
5254       l_sup_instance_rowid ROWID;
5255       l_template_instance_rowid ROWID;
5256       l_instance_value_id NUMBER;
5257       l_old_instance_value_id NUMBER;
5258       l_api_name VARCHAR2 ( 50 ) := 'COPY_SALES_SUPPLEMENT';
5259       l_api_version_number CONSTANT NUMBER := 1.0;
5260 
5261    BEGIN
5262 
5263 -- Establish a standard save point
5264       SAVEPOINT COPY_SALES_SUPPLEMENT_PVT;
5265 
5266 -- Standard call to check for call compatability
5267       IF NOT FND_API.Compatible_API_Call (
5268                  l_api_version_number
5269               , p_api_version_number
5270               , l_api_name
5271               , G_PKG_NAME
5272               ) THEN
5273          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5274       END IF;
5275 
5276 -- Initialize message list if p_init_msg_list is set to TRUE.
5277       IF FND_API.to_Boolean ( p_init_msg_list ) THEN
5278          FND_MSG_PUB.initialize;
5279       END IF;
5280 
5281 -- API BODY
5282       IF aso_debug_pub.g_debug_flag = 'Y' THEN
5283 	 aso_debug_pub.ADD ('COPY_SALES_SUPPLEMENT API: Begin' , 1, 'N' );
5284       aso_debug_pub.ADD ( 'Old Qte Header Id : ' || TO_CHAR ( p_old_quote_header_id ) , 1 , 'N' );
5285       aso_debug_pub.ADD ( 'New Qte Header Id : ' || TO_CHAR ( p_new_quote_header_id ) , 1 , 'N' );
5286 	 END IF;
5287 
5288 -- Get the template id's  and template_instance_id's based upon the
5289 -- quote header id
5290 
5291       FOR template_val IN get_template_id ( p_old_quote_header_id ) LOOP
5292          IF aso_debug_pub.g_debug_flag = 'Y' THEN
5293 	    aso_debug_pub.ADD ( 'Template Id : ' || TO_CHAR ( template_val.template_id ) , 1 , 'N' );
5294          aso_debug_pub.ADD ( ' Old Template Instance Id : ' || TO_CHAR ( template_val.template_instance_id ) , 1 , 'N' );
5295 
5296          -- Create a new row in the ASO_SUP_TMPL_INSTANCE Table with the template id
5297 
5298          aso_debug_pub.ADD ( 'Inserting a row into tmpl_instance table' , 1 , 'N' );
5299 	    END IF;
5300 
5301          -- Initiate the variable to null,
5302          -- so that each time they contain new value for every pass of loop
5303 
5304          l_new_template_instance_id := NULL;
5305          ASO_SUP_TMPL_INSTANCE_PKG.INSERT_ROW (
5306              PX_ROWID =>                     l_template_instance_rowid
5307           , PX_TEMPLATE_INSTANCE_ID =>       l_new_template_instance_id
5308           , P_created_by =>                  FND_GLOBAL.USER_ID
5309           , P_creation_date =>               SYSDATE
5310           , P_last_updated_by =>             FND_GLOBAL.USER_ID
5311           , P_last_update_date =>            SYSDATE
5312           , P_last_update_login =>           FND_GLOBAL.CONC_LOGIN_ID
5313           , P_TEMPLATE_ID =>                 template_val.template_id
5314           , P_Owner_Table_Name =>            'ASO_QUOTE_HEADERS'
5315           , P_Owner_Table_Id =>              p_new_quote_header_id
5316 		, P_OBJECT_VERSION_NUMBER =>       FND_API.G_MISS_NUM
5317           );
5318          IF aso_debug_pub.g_debug_flag = 'Y' THEN
5319 	    aso_debug_pub.ADD ( ' New Template Instance Id : ' || TO_CHAR ( l_new_template_instance_id ) , 1 , 'N' );
5320 	    END IF;
5321 
5322          -- Get the values for that instance
5323          FOR inst_val IN get_values ( template_val.template_instance_id ) LOOP
5324             IF aso_debug_pub.g_debug_flag = 'Y' THEN
5325 		  aso_debug_pub.ADD (   'Value : ' || inst_val.VALUE, 1, 'N' );
5326             aso_debug_pub.ADD ( 'Value Type Qualifier : ' || inst_val.value_type_qualifier , 1 , 'N' );
5327             aso_debug_pub.ADD ( 'Response Id : ' || TO_CHAR ( inst_val.response_id ) , 1 , 'N' );
5328 		  END IF;
5329 
5330             -- If values are fetched then insert rows
5331             IF inst_val.sect_comp_map_id IS NOT NULL THEN
5332                -- Initiate the variables to null,
5333                -- so that each time they contain new value for every pass of loop
5334 
5335                l_instance_value_id        := NULL;
5336                IF aso_debug_pub.g_debug_flag = 'Y' THEN
5337 			aso_debug_pub.ADD ( 'Inserting a row into instance_value table' , 1 , 'N' );
5338 			END IF;
5339 
5340                -- Create a new row in the ASO_SUP_INSTANCE_VALUE table
5341                ASO_SUP_INSTANCE_VALUE_PKG.INSERT_ROW (
5342                    PX_ROWID =>                     l_sup_instance_rowid
5343                 , PX_INSTANCE_VALUE_ID =>          l_instance_value_id
5344                 , P_SECT_COMP_MAP_ID =>            inst_val.sect_comp_map_id
5345                 , P_Template_Instance_ID =>        l_new_template_instance_id
5346                 , p_value =>                       inst_val.VALUE
5347                 , p_value_type_qualifier =>        inst_val.value_type_qualifier
5348                 , p_response_id =>                 inst_val.response_id
5349                 , P_created_by =>                  FND_GLOBAL.USER_ID
5350                 , P_last_updated_by =>             FND_GLOBAL.USER_ID
5351                 , P_last_update_login =>           FND_GLOBAL.CONC_LOGIN_ID
5352 			 , P_OBJECT_VERSION_NUMBER =>       FND_API.G_MISS_NUM
5353                 );
5354                IF aso_debug_pub.g_debug_flag = 'Y' THEN
5355 			aso_debug_pub.ADD ( 'New Instance Value Id : ' || TO_CHAR ( l_instance_value_id ) , 1 , 'N' );
5356 			END IF;
5357             END IF;
5358 
5359          END LOOP; -- instance value loop
5360 
5361       END LOOP; -- template loop
5362 
5363       -- Standard check for p_commit
5364       IF FND_API.to_Boolean ( p_commit ) THEN
5365          COMMIT WORK;
5366       END IF;
5367 
5368 --  Initialize API return status to success
5369       x_return_status            := FND_API.G_RET_STS_SUCCESS;
5370 
5371       IF aso_debug_pub.g_debug_flag = 'Y' THEN
5372 	 aso_debug_pub.ADD ( 'COPY_SALES_SUPPLEMENT API: ' || l_api_name || 'end' , 1 , 'N' );
5373 	 END IF;
5374 
5375    EXCEPTION
5376 
5377       WHEN FND_API.G_EXC_ERROR THEN
5378          ASO_UTILITY_PVT.HANDLE_EXCEPTIONS (
5379              P_API_NAME =>                   L_API_NAME
5380           , P_PKG_NAME =>                    G_PKG_NAME
5381           , P_EXCEPTION_LEVEL =>             FND_MSG_PUB.G_MSG_LVL_ERROR
5382           , P_PACKAGE_TYPE =>                ASO_UTILITY_PVT.G_PVT
5383           , X_MSG_COUNT =>                   X_MSG_COUNT
5384           , X_MSG_DATA =>                    X_MSG_DATA
5385           , X_RETURN_STATUS =>               X_RETURN_STATUS
5386           );
5387 
5388       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5389          ASO_UTILITY_PVT.HANDLE_EXCEPTIONS (
5390              P_API_NAME =>                   L_API_NAME
5391           , P_PKG_NAME =>                    G_PKG_NAME
5392           , P_EXCEPTION_LEVEL =>             FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
5393           , P_PACKAGE_TYPE =>                ASO_UTILITY_PVT.G_PVT
5394           , X_MSG_COUNT =>                   X_MSG_COUNT
5395           , X_MSG_DATA =>                    X_MSG_DATA
5396           , X_RETURN_STATUS =>               X_RETURN_STATUS
5397           );
5398 
5399       WHEN OTHERS THEN
5400          ASO_UTILITY_PVT.HANDLE_EXCEPTIONS (
5401              P_API_NAME =>                   L_API_NAME
5402           , P_PKG_NAME =>                    G_PKG_NAME
5403           , P_SQLCODE =>                     SQLCODE
5404           , P_SQLERRM =>                     SQLERRM
5405           , P_EXCEPTION_LEVEL =>             ASO_UTILITY_PVT.G_EXC_OTHERS
5406           , P_PACKAGE_TYPE =>                ASO_UTILITY_PVT.G_PVT
5407           , X_MSG_COUNT =>                   X_MSG_COUNT
5408           , X_MSG_DATA =>                    X_MSG_DATA
5409           , X_RETURN_STATUS =>               X_RETURN_STATUS
5410           );
5411 
5412    END COPY_SALES_SUPPLEMENT;
5413 
5414 
5415 
5416 PROCEDURE Copy_Opp_Quote(
5417            p_api_version_number  IN NUMBER := 1.0,
5418            p_qte_header_id       IN NUMBER,
5419            p_new_qte_header_id   IN NUMBER,
5420            X_Return_Status       OUT NOCOPY /* file.sql.39 change */   VARCHAR2,
5421            X_Msg_Count           OUT NOCOPY /* file.sql.39 change */   VARCHAR2,
5422            X_Msg_Data            OUT NOCOPY /* file.sql.39 change */   VARCHAR2
5423          )
5424 IS
5425 
5426    CURSOR C_Get_Opp_From_Hdr (qte_hdr NUMBER) IS
5427     SELECT request_id, program_application_id, program_id, program_update_date,
5428            quote_object_type_code, quote_object_id, object_type_code, object_id,
5429            relationship_type_code, reciprocal_flag
5430     FROM ASO_QUOTE_RELATED_OBJECTS
5431     WHERE relationship_type_code = 'OPP_QUOTE'
5432       AND quote_object_id = qte_hdr;
5433 
5434    l_related_obj_rec     ASO_quote_PUB.RELATED_OBJ_Rec_Type  := ASO_quote_PUB.G_MISS_RELATED_OBJ_REC;
5435    l_related_obj_id      NUMBER;
5436 
5437 BEGIN
5438 
5439    x_return_status := FND_API.G_RET_STS_SUCCESS;
5440 IF aso_debug_pub.g_debug_flag = 'Y' THEN
5441 aso_debug_pub.ADD ( 'Copy_Opp_Quote: p_qte_header_id: ' || p_qte_header_id, 1 , 'N' );
5442 aso_debug_pub.ADD ( 'Copy_Opp_Quote: p_new_qte_header_id: ' || p_new_qte_header_id, 1 , 'N' );
5443 END IF;
5444 
5445    OPEN C_Get_Opp_From_Hdr (p_qte_header_id);
5446    FETCH C_Get_Opp_From_Hdr INTO l_related_obj_rec.request_id, l_related_obj_rec.program_application_id,
5447          l_related_obj_rec.program_id, l_related_obj_rec.program_update_date,
5448          l_related_obj_rec.quote_object_type_code, l_related_obj_rec.quote_object_id,
5449          l_related_obj_rec.object_type_code, l_related_obj_rec.object_id,
5450          l_related_obj_rec.relationship_type_code, l_related_obj_rec.reciprocal_flag;
5451    IF C_Get_Opp_From_Hdr%NOTFOUND THEN
5452 IF aso_debug_pub.g_debug_flag = 'Y' THEN
5453 aso_debug_pub.ADD ( 'Copy_Opp_Quote: Not from Opportunity ', 1 , 'N' );
5454 END IF;
5455        CLOSE C_Get_Opp_From_Hdr;
5456        RETURN;
5457    END IF;
5458    CLOSE C_Get_Opp_From_Hdr;
5459 
5460    l_related_obj_rec.quote_object_id := p_new_qte_header_id;
5461 
5462 
5463 IF aso_debug_pub.g_debug_flag = 'Y' THEN
5464 aso_debug_pub.ADD ( 'Copy_Opp_Quote: before insert rel object ', 1 , 'N' );
5465 END IF;
5466       aso_related_obj_pvt.create_related_obj (
5467         p_api_version_number         => 1.0,
5468         p_validation_level           => fnd_api.g_valid_level_none,
5469         p_related_obj_rec            => l_related_obj_rec,
5470         x_related_object_id          => l_related_obj_id,
5471         x_return_status              => x_return_status,
5472         x_msg_count                  => x_msg_count,
5473         x_msg_data                   => x_msg_data
5474       );
5475 
5476 IF aso_debug_pub.g_debug_flag = 'Y' THEN
5477 aso_debug_pub.ADD ( 'Copy_Opp_Quote: after insert_rel_object:x_return_status: ' || x_return_status, 1 , 'N' );
5478 END IF;
5479       IF x_return_status <> fnd_api.g_ret_sts_success THEN
5480         IF fnd_msg_pub.check_msg_level (fnd_msg_pub.g_msg_lvl_error) THEN
5481           fnd_message.set_name ( 'ASO', 'ASO_API_ERROR_IN_CREATING_RLTSHIPS');
5482           fnd_msg_pub.ADD;
5483         END IF;
5484 
5485       END IF;
5486 
5487 
5488 END Copy_Opp_Quote;
5489 
5490 PROCEDURE Split_Model_Line (
5491     P_Api_Version_Number   IN NUMBER,
5492     P_Init_Msg_List        IN VARCHAR2     := FND_API.G_FALSE,
5493     P_Commit               IN VARCHAR2     := FND_API.G_FALSE,
5494     P_Control_Rec            IN   ASO_QUOTE_PUB.Control_Rec_Type,
5495     P_Qte_Header_Rec         IN   ASO_QUOTE_PUB.Qte_Header_Rec_Type,
5496     P_Original_Qte_Line_Rec  IN   ASO_QUOTE_PUB.Qte_Line_Rec_Type,
5497     P_Qte_Line_Tbl         IN ASO_QUOTE_PUB.Qte_Line_Tbl_Type,
5498     X_Quote_Line_Tbl       OUT NOCOPY /* file.sql.39 change */    ASO_QUOTE_PUB.Qte_Line_Tbl_Type,
5499     X_Return_Status        OUT NOCOPY /* file.sql.39 change */    VARCHAR2,
5500     X_Msg_Count            OUT NOCOPY /* file.sql.39 change */    VARCHAR2,
5501     X_Msg_Data             OUT NOCOPY /* file.sql.39 change */    VARCHAR2 )
5502 
5503 IS
5504 
5505       CURSOR C_Validate_Quote (
5506           x_qte_header_id NUMBER
5507        ) IS
5508          SELECT 'X'
5509          FROM   ASO_QUOTE_HEADERS_ALL
5510          WHERE  quote_header_id = x_qte_header_id;
5511 
5512       CURSOR C_Validate_Quote_Line (
5513           x_qte_header_id NUMBER,
5514           x_qte_line_id NUMBER
5515        ) IS
5516          SELECT 'X'
5517          FROM   ASO_QUOTE_LINES_ALL
5518          WHERE  quote_header_id = x_qte_header_id
5519          AND quote_line_id = x_qte_line_id;
5520 
5521 
5522       CURSOR C_Serviceable_Product (
5523           l_organization_id NUMBER
5524        , l_inv_item_id NUMBER
5525        ) IS
5526          SELECT serviceable_product_flag, service_item_flag
5527          FROM   MTL_SYSTEM_ITEMS_VL
5528          WHERE  inventory_item_id = l_inv_item_id
5529          AND    organization_id = l_organization_id;
5530 
5531 
5532       CURSOR c_price_adj_rel (
5533             x_quote_line_id NUMBER
5534        ) IS
5535          SELECT apr.ADJ_RELATIONSHIP_ID, apr.CREATION_DATE, apr.CREATED_BY
5536               , apr.LAST_UPDATE_DATE, apr.LAST_UPDATED_BY
5537               , apr.LAST_UPDATE_LOGIN, apr.PROGRAM_APPLICATION_ID
5538               , apr.PROGRAM_ID, apr.PROGRAM_UPDATE_DATE, apr.REQUEST_ID
5539               , apr.QUOTE_LINE_ID, apr.PRICE_ADJUSTMENT_ID
5540               , apr.RLTD_PRICE_ADJ_ID, apr.OBJECT_VERSION_NUMBER
5541          FROM   ASO_PRICE_ADJ_RELATIONSHIPS apr
5542               , ASO_PRICE_ADJUSTMENTS apa
5543 
5544          WHERE  apr.price_adjustment_id = apa.price_adjustment_id
5545          AND    apr.quote_line_id = x_quote_line_id
5546          AND    apa.quote_line_id = x_quote_line_id
5547          AND    apa.modifier_line_type_code <> 'PRG';
5548 
5549 
5550     CURSOR C_Get_Ship_Id (
5551           lc_line_id NUMBER
5552        ) IS
5553          SELECT shipment_id
5554          FROM   ASO_SHIPMENTS
5555          WHERE  quote_line_id = lc_line_id;
5556 
5557 
5558       CURSOR c_line_relation (
5559           x_quote_line_id NUMBER
5560        ) IS
5561          SELECT LINE_RELATIONSHIP_ID, CREATION_DATE, CREATED_BY
5562               , LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN
5563               , REQUEST_ID, PROGRAM_APPLICATION_ID, PROGRAM_ID
5564               , PROGRAM_UPDATE_DATE, QUOTE_LINE_ID, RELATED_QUOTE_LINE_ID
5565               , RELATIONSHIP_TYPE_CODE, RECIPROCAL_FLAG, OBJECT_VERSION_NUMBER
5566          FROM   ASO_LINE_RELATIONSHIPS
5567          WHERE  relationship_type_code <> 'SERVICE'
5568 	    CONNECT BY PRIOR related_quote_line_id = quote_line_id
5569          START WITH quote_line_id = x_quote_line_id;
5570 
5571     CURSOR get_latest_date (
5572       c_quote_header_id                    NUMBER
5573     ) IS
5574       SELECT last_update_date
5575       FROM aso_quote_headers_all
5576       WHERE quote_header_id = c_quote_header_id;
5577 
5578 
5579     Cursor Get_Max_Line_Number ( c_QUOTE_HEADER_ID Number) IS
5580     Select Max(Line_number)
5581     From ASO_QUOTE_LINES_ALL
5582     WHERE quote_header_id = c_QUOTE_HEADER_ID;
5583 
5584     x_qte_header_rec              aso_quote_pub.qte_header_rec_type;
5585     x_qte_line_tbl                aso_quote_pub.qte_line_tbl_type;
5586     x_qte_line_dtl_tbl            aso_quote_pub.qte_line_dtl_tbl_type;
5587     x_hd_price_attributes_tbl     aso_quote_pub.price_attributes_tbl_type;
5588     x_hd_payment_tbl              aso_quote_pub.payment_tbl_type;
5589     x_hd_shipment_tbl             aso_quote_pub.shipment_tbl_type;
5590     x_hd_freight_charge_tbl       aso_quote_pub.freight_charge_tbl_type;
5591     x_hd_tax_detail_tbl           aso_quote_pub.tax_detail_tbl_type;
5592     x_line_attr_ext_tbl           aso_quote_pub.line_attribs_ext_tbl_type;
5593     x_line_rltship_tbl            aso_quote_pub.line_rltship_tbl_type;
5594     x_price_adjustment_tbl        aso_quote_pub.price_adj_tbl_type;
5595     x_price_adj_attr_tbl          aso_quote_pub.price_adj_attr_tbl_type;
5596     x_price_adj_rltship_tbl       aso_quote_pub.price_adj_rltship_tbl_type;
5597     x_ln_price_attributes_tbl     aso_quote_pub.price_attributes_tbl_type;
5598     x_ln_payment_tbl              aso_quote_pub.payment_tbl_type;
5599     x_ln_shipment_tbl             aso_quote_pub.shipment_tbl_type;
5600     x_ln_freight_charge_tbl       aso_quote_pub.freight_charge_tbl_type;
5601     x_ln_tax_detail_tbl           aso_quote_pub.tax_detail_tbl_type;
5602     l_qte_line_tbl ASO_QUOTE_PUB.Qte_Line_Tbl_Type;
5603     l_line_number                 NUMBER;
5604 
5605    l_val                       VARCHAR2 ( 1 );
5606    l_qte_line_rec              ASO_QUOTE_PUB.qte_line_rec_Type;
5607    l_qte_line_detail_tbl       ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type;
5608    l_qte_shipment_dtl_tbl      ASO_QUOTE_PUB.Shipment_Tbl_Type;
5609    l_quantity                  NUMBER := 0;
5610    l_remaining_quantity        NUMBER := 0;
5611    l_return_value              Varchar2(1);
5612 
5613       l_line_index_link_tbl ASO_QUOTE_HEADERS_PVT.Index_Link_Tbl_Type;
5614       l_old_config_header_id NUMBER;
5615       l_old_config_revision_num NUMBER;
5616       l_config_hdr_id NUMBER;
5617       l_config_rev_nbr NUMBER;
5618       l_return_status VARCHAR2 ( 1 );
5619       l_api_version_number CONSTANT NUMBER := 1.0;
5620       l_api_version CONSTANT NUMBER := 1.0;
5621       l_service_item_flag VARCHAR2 ( 1 );
5622       l_serviceable_product_flag VARCHAR2 ( 1 );
5623       l_Line_Attr_Ext_Tbl ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type;
5624       l_Price_Adj_Tbl ASO_QUOTE_PUB.Price_Adj_Tbl_Type;
5625       l_Price_Attr_Tbl ASO_QUOTE_PUB.Price_Attributes_Tbl_Type;
5626       l_Price_Adj_Attr_Tbl ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type;
5627       l_payment_tbl ASO_QUOTE_PUB.Payment_Tbl_Type;
5628       l_shipment_tbl ASO_QUOTE_PUB.Shipment_Tbl_Type;
5629       l_sales_credit_tbl ASO_QUOTE_PUB.Sales_Credit_Tbl_Type;
5630       l_quote_party_tbl ASO_QUOTE_PUB.Quote_Party_Tbl_Type;
5631       l_freight_charge_tbl ASO_QUOTE_PUB.Freight_Charge_Tbl_Type;
5632       l_tax_detail_tbl ASO_QUOTE_PUB.Tax_Detail_Tbl_Type;
5633       lx_ln_Price_Adj_Tbl ASO_QUOTE_PUB.Price_Adj_Tbl_Type;
5634       lx_qte_line_rec ASO_QUOTE_PUB.Qte_Line_Rec_Type;
5635       l_control_rec ASO_QUOTE_PUB.Control_Rec_Type;
5636       l_config_control_rec ASO_CFG_INT.Control_Rec_Type
5637                                             := ASO_CFG_INT.G_MISS_Control_Rec;
5638      l_Copy_Quote_Control_Rec ASO_COPY_QUOTE_PUB.Copy_Quote_Control_Rec_Type;
5639       LX_PRICE_ADJ_RLTSHIP_ID NUMBER;
5640       LX_LINE_RELATIONSHIP_ID NUMBER;
5641      G_USER_ID NUMBER := FND_GLOBAL.USER_ID;
5642       G_LOGIN_ID NUMBER := FND_GLOBAL.CONC_LOGIN_ID;
5643       l_ship_id NUMBER;
5644     --  l_appl_param_rec   CZ_API_PUB.appl_param_rec_type;
5645       l_price_index_link_tbl ASO_QUOTE_HEADERS_PVT.Index_Link_Tbl_Type;
5646 
5647       l_quote_header_rec          ASO_QUOTE_PUB.Qte_Header_Rec_Type := ASO_QUOTE_PUB.G_MISS_Qte_Header_Rec;
5648       l_api_name varchar2(50) := 'Split_Model_Line';
5649       TYPE inserted_qte_line_Rec_Type IS RECORD
5650       (
5651        quote_line_id         NUMBER:= FND_API.G_MISS_NUM,
5652        quantity              NUMBER := FND_API.G_MISS_NUM
5653       );
5654 
5655       TYPE  inserted_qte_line_Tbl_Type      IS TABLE OF inserted_qte_line_Rec_Type INDEX BY BINARY_INTEGER;
5656 
5657       G_MISS_inserted_qte_line_Rec   inserted_qte_line_Rec_Type;
5658       G_MISS_inserted_qte_line_tbl   inserted_qte_line_tbl_type;
5659       l_inserted_qte_line_tbl  inserted_qte_line_Tbl_Type := G_MISS_inserted_qte_line_tbl;
5660 
5661       l_total_lines NUMBER := 0;
5662 
5663       l_qty_qte_line_tbl ASO_QUOTE_PUB.Qte_Line_Tbl_Type := ASO_QUOTE_PUB.G_MISS_Qte_Line_Tbl;
5664       l_orig_item_id_tbl CZ_API_PUB.number_tbl_type;
5665       l_new_item_id_tbl CZ_API_PUB.number_tbl_type;
5666       -- hyang: for bug 2692785
5667       lx_status                     VARCHAR2(1);
5668 
5669       l_quote_party_tbl_out      ASO_QUOTE_PUB.Quote_Party_Tbl_Type;
5670       l_sales_credit_tbl_out     ASO_QUOTE_PUB.Sales_Credit_Tbl_Type;
5671       l_tax_detail_tbl_out       ASO_QUOTE_PUB.Tax_Detail_Tbl_Type;
5672       l_freight_charge_tbl_out   ASO_QUOTE_PUB.Freight_Charge_Tbl_Type;
5673       l_shipment_tbl_out         ASO_QUOTE_PUB.Shipment_Tbl_Type;
5674       l_payment_tbl_out          ASO_QUOTE_PUB.Payment_Tbl_Type;
5675       l_Price_Adj_Attr_Tbl_out   ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_Type;
5676       l_Price_Attr_Tbl_out       ASO_QUOTE_PUB.Price_Attributes_Tbl_Type;
5677       l_qte_line_detail_tbl_out  ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type;
5678       l_Line_Attr_Ext_Tbl_out    ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type;
5679 
5680       l_dup_Price_Adj_Tbl        ASO_QUOTE_PUB.Price_Adj_Tbl_Type;
5681       l_ato_model                VARCHAR2(1) := FND_API.G_FALSE;
5682 
5683 
5684   BEGIN
5685 
5686      IF aso_debug_pub.g_debug_flag = 'Y' THEN
5687 	aso_debug_pub.ADD ( 'SPLIT_MODEL_LINE - Begin- ASO_COPY_QUOTE_PVT.SPLIT_MODEL_LINE ' , 1 , 'Y' );
5688 	END IF;
5689       -- Standard Start of API savepoint
5690       SAVEPOINT SPLIT_MODEL_LINE_PVT;
5691 
5692       -- Standard call to check for call compatibility.
5693       IF NOT FND_API.Compatible_API_Call (
5694                  l_api_version_number
5695               , p_api_version_number
5696               , l_api_name
5697               , G_PKG_NAME
5698               ) THEN
5699          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5700       END IF;
5701 
5702       -- Initialize message list if p_init_msg_list is set to TRUE.
5703       IF FND_API.to_Boolean ( p_init_msg_list ) THEN
5704          FND_MSG_PUB.initialize;
5705       END IF;
5706       -- Debug Message
5707       IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW ) THEN
5708          FND_MESSAGE.Set_Name ('ASO' , 'Copy Quote API: Start' );
5709          FND_MSG_PUB.ADD;
5710       END IF;
5711 
5712       --  Initialize API return status to success
5713       x_return_status            := FND_API.G_RET_STS_SUCCESS;
5714 
5715 --
5716 -- API body
5717 --
5718 -- Validating the qte_header_id
5719 
5720     -- hyang: for bug 2692785
5721     ASO_CONC_REQ_INT.Lock_Exists(
5722       p_quote_header_id => P_Qte_Header_Rec.quote_header_id,
5723       x_status          => lx_status);
5724 
5725     IF (lx_status = FND_API.G_TRUE) THEN
5726       IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5727         FND_MESSAGE.Set_Name('ASO', 'ASO_CONC_REQUEST_RUNNING');
5728         FND_MSG_PUB.ADD;
5729       END IF;
5730       RAISE FND_API.G_EXC_ERROR;
5731     END IF;
5732 
5733    IF aso_debug_pub.g_debug_flag = 'Y' THEN
5734    aso_debug_pub.ADD ( 'SPLIT_MODEL_LINE - Vaildating the quote ' , 1 , 'Y' );
5735    END IF;
5736 
5737       OPEN C_Validate_Quote ( P_Qte_Header_Rec.quote_header_id);
5738       FETCH C_Validate_Quote INTO l_val;
5739 
5740       IF C_Validate_Quote%NOTFOUND THEN
5741 
5742          x_return_status            := FND_API.G_RET_STS_ERROR;
5743          IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
5744             FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_INVALID_ID' );
5745             FND_MESSAGE.Set_Token ('COLUMN' , 'ORIGINAL_QUOTE_ID', FALSE );
5746             FND_MESSAGE.Set_Token ( 'VALUE' , TO_CHAR ( P_Qte_Header_Rec.quote_header_id ) , FALSE );
5747             FND_MSG_PUB.ADD;
5748          END IF;
5749          CLOSE C_Validate_Quote;
5750          RAISE FND_API.G_EXC_ERROR;
5751       END IF;
5752 
5753       CLOSE C_Validate_Quote;
5754 
5755     IF aso_debug_pub.g_debug_flag = 'Y' THEN
5756     aso_debug_pub.ADD ( 'SPLIT_MODEL_LINE - After Validating the Quote  ' , 1 , 'N' );
5757     END IF;
5758  -- Validating if the quote_line_id belongs to the qte_header_id
5759 
5760       OPEN C_Validate_Quote_Line ( P_Qte_Header_Rec.quote_header_id, P_Original_Qte_Line_Rec.quote_line_id);
5761       FETCH C_Validate_Quote_Line INTO l_val;
5762       IF C_Validate_Quote_Line%NOTFOUND THEN
5763          x_return_status            := FND_API.G_RET_STS_ERROR;
5764          IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
5765             FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_INVALID_ID' );
5766             FND_MESSAGE.Set_Token ('COLUMN' , 'ORIGINAL_QUOTE_ID', FALSE );
5767             FND_MESSAGE.Set_Token ( 'VALUE' , TO_CHAR ( P_Original_Qte_Line_Rec.quote_line_id ) , FALSE );
5768             FND_MSG_PUB.ADD;
5769          END IF;
5770          CLOSE C_Validate_Quote_Line;
5771          RAISE FND_API.G_EXC_ERROR;
5772       END IF;
5773 
5774       CLOSE C_Validate_Quote_Line;
5775 
5776     IF aso_debug_pub.g_debug_flag = 'Y' THEN
5777     aso_debug_pub.ADD ( 'SPLIT_MODEL_LINE - After Validating the Quote Line  ' , 1 , 'N' );
5778     END IF;
5779 
5780       -- Getting the quote line record
5781       l_qte_line_rec := ASO_UTILITY_PVT.Query_Qte_Line_Row ( P_Original_Qte_Line_Rec.quote_line_id );
5782 
5783     -- Getting the quote line detail record
5784       l_qte_line_detail_tbl := ASO_UTILITY_PVT.Query_Line_Dtl_Rows ( P_Original_Qte_Line_Rec.quote_line_id );
5785 
5786     -- Getting the shipment details for the quote line
5787       l_qte_shipment_dtl_tbl := ASO_UTILITY_PVT.Query_Shipment_Rows (P_Qte_Header_Rec.quote_header_id, P_Original_Qte_Line_Rec.quote_line_id );
5788 
5789 
5790     -- Copy the Qte line table to the local variable
5791     For i in 1..P_Qte_Line_Tbl.count LOOP
5792 
5793      l_qty_qte_line_tbl(i).quantity := P_Qte_Line_Tbl(i).quantity;
5794 
5795     END LOOP;
5796 
5797 
5798     -- Looping through the quantity list to get the total quantity
5799      For i in 1..l_qty_qte_line_tbl.count LOOP
5800 
5801      l_quantity := l_quantity +  l_qty_qte_line_tbl(i).quantity;
5802 
5803      END LOOP;
5804 
5805     IF aso_debug_pub.g_debug_flag = 'Y' THEN
5806     aso_debug_pub.ADD ( 'SPLIT_MODEL_LINE - Total Qty Passed =  '||to_char(l_quantity) , 1 , 'N' );
5807     END IF;
5808 
5809 
5810    -- If quantity list total is less than quote line quantity
5811 
5812    IF l_quantity < l_qte_line_rec.quantity THEN
5813 
5814       -- storing the remaining quantity
5815      l_remaining_quantity := l_qte_line_rec.quantity - l_quantity;
5816 
5817      IF aso_debug_pub.g_debug_flag = 'Y' THEN
5818 	aso_debug_pub.ADD ( 'SPLIT_MODEL_LINE - Remaining Qty =  '||to_char(l_remaining_quantity) , 1 , 'N' );
5819 	END IF;
5820 
5821 	l_qty_qte_line_tbl( l_qty_qte_line_tbl.count + 1 ).quantity  := l_remaining_quantity;
5822 
5823    ELSIF l_quantity > l_qte_line_rec.quantity THEN
5824 
5825     x_return_status            := FND_API.G_RET_STS_ERROR;
5826 
5827     IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
5828 
5829 
5830      FND_MESSAGE.Set_Name('ASO', 'ASO_ERR_SPLITLINE_QTY');
5831      FND_MESSAGE.Set_Token('TBLNAME', 'p_qte_line_tbl', FALSE);
5832      FND_MESSAGE.Set_Token('VALUE', p_qte_line_tbl(1).quantity, FALSE);
5833      FND_MSG_PUB.ADD;
5834     END IF;
5835     RAISE FND_API.G_EXC_ERROR;
5836 
5837    END IF;
5838 
5839    -- Check to see if the item is a component
5840    IF l_qte_line_rec.item_type_code <> 'MDL' then
5841 
5842       IF aso_debug_pub.g_debug_flag = 'Y' THEN
5843 	 aso_debug_pub.ADD ( 'SPLIT_MODEL_LINE - Item is not a Model Item', 1 , 'N' );
5844 	 END IF;
5845       x_return_status            := FND_API.G_RET_STS_ERROR;
5846 
5847     IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
5848      FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_CANNOT_SPLIT' );
5849      FND_MSG_PUB.ADD;
5850     END IF;
5851     RAISE FND_API.G_EXC_ERROR;
5852 
5853   END IF;
5854 
5855 
5856    -- Check to see if the item is a service item
5857    IF l_qte_line_rec.service_item_flag  = 'Y'  THEN
5858 
5859       IF aso_debug_pub.g_debug_flag = 'Y' THEN
5860 	 aso_debug_pub.ADD ( 'SPLIT_MODEL_LINE - Item is Service  Item', 1 , 'N' );
5861 	 END IF;
5862       x_return_status            := FND_API.G_RET_STS_ERROR;
5863 
5864     IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
5865      FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_CANNOT_SPLIT' );
5866      FND_MSG_PUB.ADD;
5867     END IF;
5868     RAISE FND_API.G_EXC_ERROR;
5869 
5870   END IF;
5871 
5872 
5873 
5874 
5875 /*
5876  -- Validating if the  item is a container item
5877      l_appl_param_rec.calling_application_id := 769;
5878 
5879         cz_network_api_pub.is_container(p_api_version  => 1.0
5880                                        ,p_inventory_item_id  => l_qte_line_rec.inventory_item_id
5881                                        ,p_organization_id   => l_qte_line_rec.organization_id
5882                                        ,p_appl_param_rec => l_appl_param_rec
5883                                        ,x_return_value       => l_return_value
5884                                        ,x_return_status      => l_return_status
5885                                        ,x_msg_count          => x_msg_count
5886                                        ,x_msg_data           => x_msg_data  );
5887 
5888            IF ( l_return_status = FND_API.G_RET_STS_SUCCESS  ) THEN
5889 
5890               IF l_return_value = 'Y' THEN
5891                x_return_status            := FND_API.G_RET_STS_ERROR;
5892                IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
5893                 FND_MESSAGE.Set_Name ('ASO' , 'ASO_CON_ITM_ERR' );
5894                 FND_MSG_PUB.ADD;
5895                END IF;
5896                RAISE FND_API.G_EXC_ERROR;
5897               END IF;
5898 
5899            ELSE
5900                   x_return_status            := FND_API.G_RET_STS_UNEXP_ERROR;
5901                   IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
5902                      FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_UNEXP_ERROR' );
5903                      FND_MESSAGE.Set_Token ( 'ROW' , 'ASO_COPYLINE AFTER_CONFIG_COPY' , TRUE );
5904                      FND_MSG_PUB.ADD;
5905                   END IF;
5906                   RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5907 
5908            END IF;
5909 */
5910 
5911  IF l_qte_line_rec.line_category_code = 'RETURN' THEN
5912    IF aso_debug_pub.g_debug_flag = 'Y' THEN
5913    aso_debug_pub.ADD ('l_qte_line_dtl_tbl.count' , 1, 'N' );
5914    aso_debug_pub.ADD ( 'SPLIT_MODEL_LINE - Line Category Code is RETURN ', 1 , 'N' );
5915    END IF;
5916 
5917      IF l_qte_line_detail_tbl.count > 0 THEN
5918 
5919      IF ( l_qte_line_detail_tbl(1).RETURN_REF_TYPE = 'SALES ORDER' AND
5920           l_qte_line_detail_tbl(1).RETURN_REF_LINE_ID IS NOT NULL AND
5921           l_qte_line_detail_tbl(1).INSTANCE_ID IS NOT NULL )
5922      OR ( l_qte_line_detail_tbl(1).REF_TYPE_CODE = 'TOP_MODEL' ) THEN
5923          x_return_status            := FND_API.G_RET_STS_ERROR;
5924 
5925          IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
5926             FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_CANNOT_SPLIT' );
5927             FND_MSG_PUB.ADD;
5928          END IF;
5929 
5930      END IF;
5931 
5932     END IF;
5933 
5934  END IF;
5935 
5936 
5937   IF aso_debug_pub.g_debug_flag = 'Y' THEN
5938   aso_debug_pub.ADD ( 'SPLIT_MODEL_LINE - Line Tbl Count = '||to_char(l_qty_qte_line_tbl.count), 1 , 'N' );
5939   END IF;
5940      -- Copying the line
5941      For i in 1..l_qty_qte_line_tbl.count-1  LOOP
5942 
5943         -- set the quantity for the line rec record
5944         --l_qte_line_rec.quantity := l_qty_qte_line_tbl(i).quantity;
5945         l_qte_line_rec.quote_header_id := P_Qte_Header_Rec.quote_header_id;
5946 
5947          IF l_qte_line_rec.uom_code = 'ENR' THEN
5948             x_return_status            := FND_API.G_RET_STS_ERROR;
5949             IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
5950                FND_MESSAGE.Set_Name ('ASO' , 'ASO_CANNOT_COPY_EDU' );
5951                FND_MSG_PUB.ADD;
5952             END IF;
5953             RAISE FND_API.G_EXC_ERROR;
5954          END IF;
5955          -- Initializing the line index table
5956          l_line_index_link_tbl (P_Original_Qte_Line_Rec.quote_line_id ) :=  FND_API.G_MISS_NUM;
5957 
5958          IF l_line_index_link_tbl ( P_Original_Qte_Line_Rec.quote_line_id ) = FND_API.G_MISS_NUM THEN
5959             l_qte_line_detail_tbl         :=
5960                         ASO_UTILITY_PVT.Query_Line_Dtl_Rows ( P_Original_Qte_Line_Rec.quote_line_id );
5961 
5962             IF l_qte_line_rec.item_type_code = 'MDL' THEN
5963 
5964              IF aso_debug_pub.g_debug_flag = 'Y' THEN
5965 		   aso_debug_pub.ADD ( 'item_type_code = ' || l_qte_line_rec.item_type_code , 1 , 'N' );
5966 		   END IF;
5967 
5968                 IF l_qte_line_detail_tbl.COUNT > 0 THEN
5969 
5970                   IF      l_qte_line_detail_tbl ( 1 ).config_header_id IS NOT NULL
5971                       AND l_qte_line_detail_tbl ( 1 ).config_revision_num IS NOT NULL THEN
5972 
5973                      l_config_control_rec.new_config_flag := FND_API.G_TRUE;
5974 
5975                      IF (l_qte_line_detail_tbl(1).ato_line_id is not null and l_qte_line_detail_tbl(1).ato_line_id <> fnd_api.g_miss_num) then
5976                         l_ato_model := fnd_api.g_true;
5977                      end if;
5978 
5979 		   IF aso_debug_pub.g_debug_flag = 'Y' THEN
5980 		   aso_debug_pub.ADD ( ' Calling Copy Configuration ', 1 , 'N' );
5981 		   END IF;
5982 
5983                      ASO_CFG_INT.Copy_Configuration (
5984                          P_Api_version_NUmber =>         1.0
5985                       , P_config_header_id =>            l_qte_line_detail_tbl ( 1 ).config_header_id
5986                       , p_config_revision_num =>         l_qte_line_detail_tbl ( 1 ).config_revision_num
5987                       , p_copy_mode =>                   CZ_API_PUB.G_NEW_HEADER_COPY_MODE
5988                       , x_config_header_id =>            l_config_hdr_id
5989                       , x_config_revision_num =>         l_config_rev_nbr
5990                       , x_orig_item_id_tbl =>            l_orig_item_id_tbl
5991                       , x_new_item_id_tbl =>             l_new_item_id_tbl
5992                       , x_return_status =>               l_return_status
5993                       , x_msg_count =>                   x_msg_count
5994                       , x_msg_data =>                    x_msg_data
5995                       , p_autonomous_flag =>             FND_API.G_TRUE
5996 				  );
5997 
5998              IF aso_debug_pub.g_debug_flag = 'Y' THEN
5999 		   aso_debug_pub.ADD ( ' After  Calling Copy Configuration ', 1 , 'N' );
6000 		   END IF;
6001 
6002                      IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
6003                         l_old_config_header_id     :=
6004                                     l_qte_line_detail_tbl ( 1 ).config_header_id;
6005                         l_old_config_revision_num  :=
6006                                  l_qte_line_detail_tbl ( 1 ).config_revision_num;
6007                         l_qte_line_detail_tbl ( 1 ).config_header_id :=
6008                                                               l_config_hdr_id;
6009                         l_qte_line_detail_tbl ( 1 ).config_revision_num :=
6010                                                              l_config_rev_nbr;
6011 
6012 			         IF aso_debug_pub.g_debug_flag = 'Y' THEN
6013 				    aso_debug_pub.ADD ( ' Old Config Hdr Id = '||to_char(l_old_config_header_id) , 1 , 'N' );
6014 				    aso_debug_pub.ADD ( ' Old Rev Nbr =   '||to_char(l_old_config_revision_num), 1 , 'N' );
6015 				    aso_debug_pub.ADD ( 'New Config Hdr Id = '||to_char(l_config_hdr_id), 1 , 'N' );
6016 				    aso_debug_pub.ADD ( ' New Rev Nbr = '||to_char(l_config_rev_nbr), 1 , 'N' );
6017 				    END IF;
6018 
6019 				 ELSE
6020                         x_return_status            := FND_API.G_RET_STS_ERROR;
6021                         RAISE FND_API.G_EXC_ERROR;
6022                      END IF;
6023 
6024                   END IF; -- config_header_id
6025 
6026                END IF; -- line_dtl_tbl.count
6027 
6028             END IF; -- 'MDL'
6029 
6030             OPEN C_Serviceable_Product (
6031                 l_qte_line_rec.organization_id
6032              , l_qte_line_rec.inventory_item_id
6033              );
6034             FETCH C_Serviceable_Product INTO l_serviceable_product_flag
6035                                            , l_service_item_flag;
6036             CLOSE C_Serviceable_Product;
6037 
6038             IF aso_debug_pub.g_debug_flag = 'Y' THEN
6039 		  aso_debug_pub.ADD ( 'service item flag = ' || l_service_item_flag , 1 , 'N' );
6040 		  END IF;
6041             IF      l_service_item_flag = 'Y'
6042                 AND l_qte_line_detail_tbl ( 1 ).service_ref_type_code <> 'QUOTE' THEN
6043                l_service_item_flag        := 'N';
6044             END IF;
6045 		  IF aso_debug_pub.g_debug_flag = 'Y' THEN
6046             aso_debug_pub.ADD ( 'service item flag 2= ' || l_service_item_flag , 1 , 'N' );
6047 		  END IF;
6048 
6049             IF      l_qte_line_rec.item_type_code <> 'CFG'
6050                 AND l_qte_line_rec.item_type_code <> 'OPT'
6051                 AND l_service_item_flag <> 'Y' THEN
6052 
6053                l_line_attr_Ext_Tbl := ASO_UTILITY_PVT.Query_Line_Attribs_Ext_Rows ( P_Original_Qte_Line_Rec.quote_line_id);
6054 
6055                l_price_adj_tbl := ASO_UTILITY_PVT.Query_Price_Adj_NonPRG_Rows ( P_Qte_Header_Rec.quote_header_id ,
6056 			                                                                 P_Original_Qte_Line_Rec.quote_line_id);
6057                l_dup_Price_Adj_Tbl := l_price_adj_tbl;
6058 
6059                l_price_adj_attr_tbl := ASO_UTILITY_PVT.Query_Price_Adj_Attr_Rows(p_price_adj_tbl => l_price_adj_tbl);
6060 
6061                l_price_attr_tbl := ASO_UTILITY_PVT.Query_Price_Attr_Rows( P_Qte_Header_Rec.quote_header_id,
6062 			                                                           P_Original_Qte_Line_Rec.quote_line_id);
6063 
6064                /* l_payment_tbl := ASO_UTILITY_PVT.Query_Payment_Rows ( P_Qte_Header_Rec.quote_header_id,
6065 			                                                      P_Original_Qte_Line_Rec.quote_line_id); */
6066 
6067                l_shipment_tbl := ASO_UTILITY_PVT.Query_Shipment_Rows ( P_Qte_Header_Rec.quote_header_id,
6068 			                                                        P_Original_Qte_Line_Rec.quote_line_id);
6069 
6070                l_sales_credit_tbl := ASO_UTILITY_PVT.Query_Sales_Credit_Row ( P_Qte_Header_Rec.quote_header_id,
6071 			                                                               P_Original_Qte_Line_Rec.quote_line_id);
6072 
6073                l_quote_party_tbl := ASO_UTILITY_PVT.Query_Quote_Party_Row ( P_Qte_Header_Rec.quote_header_id,
6074 			                                                             P_Original_Qte_Line_Rec.quote_line_id);
6075 
6076                l_freight_charge_tbl := ASO_UTILITY_PVT.Query_Freight_Charge_Rows ( l_shipment_tbl );
6077 
6078                l_tax_detail_tbl := ASO_UTILITY_PVT.Query_Tax_Detail_Rows ( P_Qte_Header_Rec.quote_header_id,
6079 			                                                            P_Original_Qte_Line_Rec.quote_line_id,
6080 															l_shipment_tbl);
6081 
6082                l_qte_line_rec.quote_line_id := NULL;
6083 
6084                l_qte_line_rec.object_version_number := FND_API.G_MISS_NUM;
6085 
6086                --BC4J Fix
6087 
6088                 FOR j IN 1 .. l_qte_line_detail_tbl.COUNT LOOP
6089 	              l_qte_line_detail_tbl(j).quote_line_detail_id := null;
6090                    l_qte_line_detail_tbl(j).object_version_number := FND_API.G_MISS_NUM;
6091 			    l_qte_line_detail_tbl(j).top_model_line_id := null;
6092 			    l_qte_line_detail_tbl(j).ato_line_id := null;
6093                    l_qte_line_detail_tbl(j).qte_line_index := i;
6094 			 END LOOP;
6095 
6096                 FOR j IN 1 .. l_price_adj_tbl.COUNT LOOP
6097                    l_price_adj_tbl ( j ).QUOTE_HEADER_ID     := P_Qte_Header_Rec.quote_header_id;
6098                    l_price_adj_tbl ( j ).price_adjustment_id := null;
6099 			    l_price_adj_tbl ( j ).object_version_number := FND_API.G_MISS_NUM;
6100                 END LOOP;
6101 
6102                 FOR j IN 1 .. l_price_adj_attr_tbl.COUNT LOOP
6103                    l_price_adj_attr_tbl(j).price_adj_attrib_id := null;
6104 			    l_price_adj_attr_tbl(j).object_version_number := FND_API.G_MISS_NUM;
6105                 END LOOP;
6106 
6107                 FOR j IN 1 .. l_price_attr_tbl.COUNT LOOP
6108                    l_price_attr_tbl ( j ).QUOTE_HEADER_ID    := P_Qte_Header_Rec.quote_header_id;
6109                    l_price_attr_tbl ( j ).price_attribute_id := null;
6110 			    l_price_attr_tbl ( j ).object_version_number := FND_API.G_MISS_NUM;
6111                 END LOOP;
6112 
6113                 /* FOR j IN 1 .. l_payment_tbl.COUNT LOOP
6114                    l_payment_tbl ( j ).QUOTE_HEADER_ID := P_Qte_Header_Rec.quote_header_id;
6115                    l_payment_tbl ( j ).CREDIT_CARD_APPROVAL_CODE := NULL;
6116                    l_payment_tbl ( j ).CREDIT_CARD_APPROVAL_DATE := NULL;
6117                    l_payment_tbl ( j ).payment_id := NULL;
6118 			    l_payment_tbl ( j ).object_version_number := FND_API.G_MISS_NUM;
6119                 END LOOP;  */
6120 
6121                 FOR j IN 1 .. l_shipment_tbl.COUNT LOOP
6122                    l_shipment_tbl ( j ).QUOTE_HEADER_ID := P_Qte_Header_Rec.quote_header_id;
6123                    l_shipment_tbl ( j ).shipment_id := null;
6124 			    l_shipment_tbl ( j ).object_version_number := FND_API.G_MISS_NUM;
6125                 END LOOP;
6126 
6127                 FOR j IN 1 .. l_sales_credit_tbl.COUNT LOOP
6128                    l_sales_credit_tbl(j).QUOTE_HEADER_ID := P_Qte_Header_Rec.quote_header_id;
6129                    l_sales_credit_tbl(j).sales_credit_id := null;
6130 			    l_sales_credit_tbl(j).object_version_number := FND_API.G_MISS_NUM;
6131                 END LOOP;
6132 
6133                 FOR j IN 1 .. l_quote_party_tbl.COUNT LOOP
6134                    l_quote_party_tbl(j).QUOTE_HEADER_ID  := P_Qte_Header_Rec.quote_header_id;
6135                    l_quote_party_tbl(j).QUOTE_PARTY_ID  := null;
6136 			    l_quote_party_tbl(j).object_version_number := FND_API.G_MISS_NUM;
6137                 END LOOP;
6138 
6139                 FOR j IN 1 .. l_tax_detail_tbl.COUNT LOOP
6140                    l_tax_detail_tbl(j).tax_detail_id  := null;
6141 			    l_tax_detail_tbl(j).object_version_number := FND_API.G_MISS_NUM;
6142                 END LOOP;
6143 
6144                 FOR j IN 1 .. l_line_attr_Ext_Tbl.COUNT LOOP
6145                    l_line_attr_Ext_Tbl(j).line_attribute_id  := null;
6146 			    l_line_attr_Ext_Tbl(j).object_version_number := FND_API.G_MISS_NUM;
6147                 END LOOP;
6148 
6149                 FOR j IN 1 .. l_freight_charge_tbl.COUNT LOOP
6150                    l_freight_charge_tbl(j).freight_charge_id  := null;
6151 			    l_freight_charge_tbl(j).object_version_number := FND_API.G_MISS_NUM;
6152                 END LOOP;
6153 
6154 
6155 	          --End of BC4J Fix
6156 
6157              -- Setting the new line number if a quote line is being copied
6158              IF ( P_Original_Qte_Line_Rec.quote_line_id IS NOT NULL ) AND
6159                 (P_Original_Qte_Line_Rec.quote_line_id <> FND_API.G_MISS_NUM) THEN
6160 
6161                 Open Get_Max_Line_Number(P_Qte_Header_Rec.quote_header_id);
6162                 Fetch Get_Max_Line_Number into l_line_number;
6163                 Close Get_Max_Line_Number;
6164 
6165                 l_qte_line_rec.line_number := l_line_number + 10000;
6166 
6167              END IF;
6168 
6169                IF aso_debug_pub.g_debug_flag = 'Y' THEN
6170 			aso_debug_pub.ADD ( 'Split_Model_Line - Before insert_quote_line_rows: ' ||
6171                                     P_Original_Qte_Line_Rec.quote_line_id , 1 , 'Y' );
6172                END IF;
6173 
6174 			ASO_QUOTE_LINES_PVT.Insert_Quote_Line_Rows (
6175                    p_control_rec =>                l_control_rec
6176                 , P_qte_Line_Rec =>               l_qte_line_rec
6177                 , P_qte_line_dtl_tbl =>            l_qte_line_detail_tbl
6178                 , P_Line_Attribs_Ext_Tbl =>        l_line_attr_ext_tbl
6179                 , P_price_attributes_tbl =>        l_price_attr_tbl
6180                 , P_Price_Adj_Tbl =>               l_price_adj_tbl
6181                 , P_Price_Adj_Attr_Tbl =>          l_Price_Adj_Attr_Tbl
6182                 , P_Payment_Tbl =>                 ASO_QUOTE_PUB.g_miss_payment_tbl
6183                 , P_Shipment_Tbl =>                l_shipment_tbl
6184                 , P_Freight_Charge_Tbl =>          l_freight_charge_tbl
6185                 , P_Tax_Detail_Tbl =>              l_tax_detail_tbl
6186                 , P_Sales_Credit_Tbl =>            l_sales_credit_tbl
6187                 , P_Quote_Party_Tbl =>             l_quote_party_tbl
6188 			 , x_qte_Line_Rec =>                lx_qte_line_rec
6189                 , x_qte_line_dtl_tbl =>            l_qte_line_detail_tbl_out
6190                 , x_Line_Attribs_Ext_Tbl =>        l_line_attr_Ext_Tbl_out
6191                 , x_price_attributes_tbl =>        l_price_attr_tbl_out
6192                 , x_Price_Adj_Tbl =>               lx_ln_price_adj_tbl
6193                 , x_Price_Adj_Attr_Tbl =>          l_Price_Adj_Attr_Tbl_out
6194                 , x_Payment_Tbl =>                 l_payment_tbl_out
6195                 , x_Shipment_Tbl =>                l_shipment_tbl_out
6196                 , x_Freight_Charge_Tbl =>          l_freight_charge_tbl_out
6197                 , x_Tax_Detail_Tbl =>              l_tax_detail_tbl_out
6198                 , x_Sales_Credit_Tbl =>            l_sales_credit_tbl_out
6199                 , x_Quote_Party_Tbl =>             l_quote_party_tbl_out
6200                 , x_Return_Status =>               l_return_status
6201                 , x_Msg_Count =>                   x_msg_count
6202                 , x_Msg_Data =>                    x_msg_data
6203                 );
6204 
6205       l_quote_party_tbl :=l_quote_party_tbl_out ;
6206       l_sales_credit_tbl :=l_sales_credit_tbl_out ;
6207       l_tax_detail_tbl := l_tax_detail_tbl_out    ;
6208       l_freight_charge_tbl := l_freight_charge_tbl_out  ;
6209       l_shipment_tbl := l_shipment_tbl_out   ;
6210       l_payment_tbl := l_payment_tbl_out     ;
6211       l_Price_Adj_Attr_Tbl  := l_Price_Adj_Attr_Tbl_out  ;
6212       l_Price_Attr_Tbl  :=  l_Price_Attr_Tbl_out     ;
6213       l_qte_line_detail_tbl := l_qte_line_detail_tbl_out   ;
6214       l_Line_Attr_Ext_Tbl  :=  l_Line_Attr_Ext_Tbl_out;
6215 
6216                IF ( l_return_status = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
6217                   x_return_status            := FND_API.G_RET_STS_UNEXP_ERROR;
6218                    IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
6219                      FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_UNEXP_ERROR' );
6220                      FND_MESSAGE.Set_Token ( 'ROW' , 'ASO_COPYLINE AFTER_INSERT' , TRUE );
6221                      FND_MSG_PUB.ADD;
6222                   END IF;
6223                   RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6224                ELSIF ( l_return_status = FND_API.G_RET_STS_ERROR ) THEN
6225                   x_return_status            := FND_API.G_RET_STS_ERROR;
6226                   RAISE FND_API.G_EXC_ERROR;
6227                END IF;
6228                IF aso_debug_pub.g_debug_flag = 'Y' THEN
6229 			   aso_debug_pub.ADD ( 'Split_Model_Line - After insert_quote_line_rows - status: ' ||l_return_status ,1 , 'Y' );
6230                   aso_debug_pub.ADD ( 'SPLIT_MODEL_LINE - New Qte Line ID ='||to_char(lx_qte_line_rec.quote_line_id), 1 , 'N' );
6231                   aso_debug_pub.ADD ( 'Split_Model_Line - Updating the top model and ato line id for the top model line ', 1 , 'Y' );
6232                   aso_debug_pub.ADD ( 'Split_Model_Line - l_ato_model: ' || l_ato_model , 1 , 'Y' );
6233                END IF;
6234                update aso_quote_line_details
6235                set top_model_line_id =  lx_qte_line_rec.quote_line_id,
6236                    ato_line_id       =  decode(l_ato_model,fnd_api.g_true,lx_qte_line_rec.quote_line_id,null)
6237                where quote_line_id = lx_qte_line_rec.quote_line_id;
6238 
6239                -- Storing the new quote line id to be used later in update quote
6240                l_inserted_qte_line_tbl(i).quote_line_id := lx_qte_line_rec.quote_line_id;
6241                l_inserted_qte_line_tbl(i).quantity :=  l_qty_qte_line_tbl(i).quantity;
6242 
6243 	  IF aso_debug_pub.g_debug_flag = 'Y' THEN
6244 	  aso_debug_pub.ADD ( ' Qty for new line =  '||to_char(l_qty_qte_line_tbl(i).quantity), 1 , 'N' );
6245 	  END IF;
6246 
6247 
6248       -- Copy the payment record
6249          l_payment_tbl := ASO_UTILITY_PVT.Query_Payment_Rows ( P_Qte_Header_Rec.quote_header_id,
6250                                                                      P_Original_Qte_Line_Rec.quote_line_id);
6251 
6252     IF l_payment_tbl.count > 0 then
6253 
6254                 FOR j IN 1 .. l_payment_tbl.COUNT LOOP
6255                    l_payment_tbl ( j ).QUOTE_HEADER_ID := P_Qte_Header_Rec.quote_header_id;
6256                    l_payment_tbl ( j ).QUOTE_LINE_ID := lx_qte_line_rec.quote_line_id;
6257                    l_payment_tbl ( j ).CREDIT_CARD_APPROVAL_CODE := NULL;
6258                    l_payment_tbl ( j ).CREDIT_CARD_APPROVAL_DATE := NULL;
6259                    l_payment_tbl ( j ).payment_id := NULL;
6260                    l_payment_tbl ( j ).object_version_number := FND_API.G_MISS_NUM;
6261                 END LOOP;
6262 
6263        IF aso_debug_pub.g_debug_flag = 'Y' THEN
6264           aso_debug_pub.add('SPLIT_MODEL_LINE: Before  call to copy_payment_row ', 1, 'Y');
6265        END IF;
6266 
6267          aso_copy_quote_pvt.copy_payment_row(p_payment_rec => l_payment_tbl(1)  ,
6268                                              x_return_status => l_return_status,
6269                                              x_msg_count     => x_msg_count,
6270                                              x_msg_data      => x_msg_data);
6271 
6272        IF aso_debug_pub.g_debug_flag = 'Y' THEN
6273           aso_debug_pub.add('SPLIT_MODEL_LINE: After call to copy_payment_row: x_return_status: '||l_return_status, 1, 'Y');
6274        END IF;
6275       IF ( l_return_status = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
6276          x_return_status            := FND_API.G_RET_STS_UNEXP_ERROR;
6277          IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
6278             FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_UNEXP_ERROR' );
6279             FND_MESSAGE.Set_Token ( 'ROW' , 'ASO_SPLITLINE  AFTER_INSERT' , TRUE );
6280             FND_MSG_PUB.ADD;
6281          END IF;
6282          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6283       ELSIF ( l_return_status = FND_API.G_RET_STS_ERROR ) THEN
6284          x_return_status            := FND_API.G_RET_STS_ERROR;
6285          RAISE FND_API.G_EXC_ERROR;
6286       END IF;
6287 
6288    END IF;
6289      --  End Copy payment record
6290 
6291 
6292          -- Copying the sales supplement data for the line
6293                  IF aso_debug_pub.g_debug_flag = 'Y' THEN
6294                  aso_debug_pub.ADD ( 'Copy_Rows - Begin- before line copy_sales_supplement  ' , 1 , 'Y' );
6295                  END IF;
6296 
6297           ASO_COPY_QUOTE_PVT.INSERT_SALES_SUPP_DATA
6298           (
6299           P_Api_Version_Number          =>  1.0,
6300           P_Init_Msg_List               => P_Init_Msg_List,
6301           P_Commit                      => P_Commit,
6302           P_OLD_QUOTE_LINE_ID           => P_Original_Qte_Line_Rec.quote_line_id,
6303           P_NEW_QUOTE_LINE_ID           => lx_qte_line_rec.quote_line_id,
6304           X_Return_Status               => l_return_status,
6305           X_Msg_Count                   => X_Msg_Count,
6306           X_Msg_Data                    => X_Msg_Data );
6307 
6308 
6309                   IF aso_debug_pub.g_debug_flag = 'Y' THEN
6310                   aso_debug_pub.ADD ( 'Copy_Rows -After line copy_sales_supplement ' || x_return_status , 1 , 'Y' );
6311                   END IF;
6312 
6313 
6314                IF ( l_return_status = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
6315                  x_return_status            := FND_API.G_RET_STS_UNEXP_ERROR;
6316                  IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
6317                   FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_UNEXP_ERROR' );
6318                   FND_MESSAGE.Set_Token ('ROW' , 'ASO_QUOTE_HEADER', TRUE );
6319                   FND_MSG_PUB.ADD;
6320                 END IF;
6321                RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6322 
6323                ELSIF ( l_return_status = FND_API.G_RET_STS_ERROR ) THEN
6324                 x_return_status            := FND_API.G_RET_STS_ERROR;
6325                 RAISE FND_API.G_EXC_ERROR;
6326                END IF;
6327 
6328 
6329 --               IF P_Copy_Quote_Control_Rec.Copy_Attachment = FND_API.G_TRUE THEN
6330                   IF aso_debug_pub.g_debug_flag = 'Y' THEN
6331 			   aso_debug_pub.ADD ( 'Split_Model_Line- Begin- before line copy_attch  ' , 1 , 'Y' );
6332 			   END IF;
6333 
6334                  ASO_ATTACHMENT_INT.Copy_Attachments(
6335                      p_api_version       => l_api_version,
6336                      p_old_object_code   => 'ASO_QUOTE_LINES_ALL',
6337                      p_new_object_code   => 'ASO_QUOTE_LINES_ALL',
6338                      p_old_object_id     => P_Original_Qte_Line_Rec.quote_line_id,
6339                      p_new_object_id     => lx_qte_line_rec.quote_line_id,
6340                      x_return_status     => l_return_status,
6341                      x_msg_count         => x_msg_count,
6342                      x_msg_data          => x_msg_data
6343                    );
6344                   IF aso_debug_pub.g_debug_flag = 'Y' THEN
6345 			   aso_debug_pub.ADD ( 'Split_Model_Line -After line copy_attch ' || x_return_status , 1 , 'Y' );
6346 			   END IF;
6347 
6348                   IF ( l_return_status = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
6349                      x_return_status            := FND_API.G_RET_STS_UNEXP_ERROR;
6350                      IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
6351                         FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_UNEXP_ERROR' );
6352                         FND_MESSAGE.Set_Token ( 'ROW' , 'ASO_COPYLINE AFTER_ATTACHMENTS' , TRUE );
6353                         FND_MSG_PUB.ADD;
6354                      END IF;
6355                      RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6356                   ELSIF ( x_return_status = FND_API.G_RET_STS_ERROR ) THEN
6357                      x_return_status            := FND_API.G_RET_STS_ERROR;
6358                      RAISE FND_API.G_EXC_ERROR;
6359                   END IF;
6360 
6361         ---       END IF;   -- Copy Attachments
6362 
6363                FOR j IN 1 .. l_dup_Price_Adj_Tbl.COUNT LOOP
6364                   l_price_index_link_tbl ( l_dup_Price_Adj_Tbl ( j ).price_adjustment_id ) :=
6365                                 lx_ln_price_adj_tbl ( j ).price_adjustment_id;
6366                END LOOP;
6367 
6368                l_line_index_link_tbl ( P_Original_Qte_Line_Rec.quote_line_id) :=
6369                                                  lx_qte_line_rec.quote_line_id;
6370                IF aso_debug_pub.g_debug_flag = 'Y' THEN
6371 			aso_debug_pub.ADD ( 'Split_Model_Line - l_qte_line_tbl(i).item_type_code ' ||
6372                                     l_qte_line_rec.item_type_code , 1 , 'Y' );
6373                aso_debug_pub.ADD ( 'Copy - l_qte_line_tbl(i).inventory_item_id ' ||
6374                                     l_qte_line_rec.inventory_item_id, 1 , 'Y' );
6375                aso_debug_pub.ADD ( 'Copy - l_serviceable_product_flag ' || l_serviceable_product_flag , 1 , 'Y' );
6376 			END IF;
6377 
6378                IF l_serviceable_product_flag = 'Y' THEN
6379 
6380                  l_copy_quote_control_rec.Copy_Note := FND_API.G_TRUE;
6381                  l_copy_quote_control_rec.Copy_Task     := FND_API.G_TRUE;
6382                  l_copy_quote_control_rec.Copy_Attachment := FND_API.G_TRUE;
6383                  l_copy_quote_control_rec.New_Version := FND_API.G_TRUE;
6384 
6385                   ASO_COPY_QUOTE_PVT.service_copy (
6386                      p_qte_line_id =>                P_Original_Qte_Line_Rec.quote_line_id
6387                    , p_copy_quote_control_rec =>      l_copy_quote_control_rec
6388                    , p_new_qte_header_id =>          P_Qte_Header_Rec.quote_header_id
6389                    , p_qte_header_id =>               P_Qte_Header_Rec.quote_header_id
6390                    , lx_line_index_link_tbl =>        l_line_index_link_tbl
6391                    , lx_price_index_link_tbl =>       l_price_index_link_tbl
6392                    , X_Return_Status =>               l_return_status
6393                    , X_Msg_Count =>                   x_msg_count
6394                    , X_Msg_Data =>                    x_msg_data
6395                    , p_line_quantity            =>  FND_API.G_MISS_NUM  --l_qty_qte_line_tbl(i).quantity
6396                    );
6397                END IF;
6398 
6399                IF ( l_return_status = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
6400                   x_return_status            := FND_API.G_RET_STS_UNEXP_ERROR;
6401                   IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
6402                      FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_UNEXP_ERROR' );
6403                      FND_MESSAGE.Set_Token ( 'ROW' , 'ASO_COPYLINE AFTER_SERVICE' , TRUE );
6404                      FND_MSG_PUB.ADD;
6405                   END IF;
6406                   RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6407                ELSIF ( l_return_status = FND_API.G_RET_STS_ERROR ) THEN
6408                   x_return_status            := FND_API.G_RET_STS_ERROR;
6409                   RAISE FND_API.G_EXC_ERROR;
6410                END IF;
6411 
6412             END IF; -- If <> CFG and OPT
6413 
6414             IF l_qte_line_rec.item_type_code = 'MDL' THEN
6415                IF l_qte_line_detail_tbl.COUNT > 1 THEN
6416                   FOR k IN 2 .. l_qte_line_detail_tbl.COUNT LOOP
6417                      l_qte_line_detail_tbl ( k ).config_header_id :=
6418                                                               l_config_hdr_id;
6419                      l_qte_line_detail_tbl ( k ).config_revision_num :=
6420                                                              l_config_rev_nbr;
6421                   END LOOP;
6422                END IF;
6423 
6424                IF aso_debug_pub.g_debug_flag = 'Y' THEN
6425 			aso_debug_pub.ADD ( 'l_old_config_header_id = ' || l_old_config_header_id , 1 , 'N' );
6426 			END IF;
6427 
6428                  l_copy_quote_control_rec.Copy_Note := FND_API.G_TRUE;
6429                  l_copy_quote_control_rec.Copy_Task     := FND_API.G_TRUE;
6430                  l_copy_quote_control_rec.Copy_Attachment := FND_API.G_TRUE;
6431                  l_copy_quote_control_rec.New_Version := FND_API.G_TRUE;
6432 
6433                ASO_COPY_QUOTE_PVT.config_copy (
6434                    p_old_config_header_id =>       l_old_config_header_id
6435                 , p_old_config_revision_num =>     l_old_config_revision_num
6436                 , p_config_header_id =>            l_config_hdr_id
6437                 , p_config_revision_num =>         l_config_rev_nbr
6438                 , p_copy_quote_control_rec =>      l_copy_quote_control_rec
6439                 , p_new_qte_header_id =>           P_Qte_Header_Rec.quote_header_id
6440                 , p_qte_header_id =>               P_Qte_Header_Rec.quote_header_id
6441                 , lx_line_index_link_tbl =>        l_line_index_link_tbl
6442                 , lx_price_index_link_tbl =>       l_price_index_link_tbl
6443                 , X_Return_Status =>               l_return_status
6444                 , X_Msg_Count =>                   x_msg_count
6445                 , X_Msg_Data =>                    x_msg_data
6446                 , p_line_quantity =>               FND_API.G_MISS_NUM  --l_qte_line_rec.quantity
6447                 );
6448 
6449                IF ( l_return_status = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
6450                   x_return_status            := FND_API.G_RET_STS_UNEXP_ERROR;
6451                   IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
6452                      FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_UNEXP_ERROR' );
6453                      FND_MESSAGE.Set_Token ( 'ROW' , 'ASO_COPYLINE AFTER_CONFIG_COPY' , TRUE );
6454                      FND_MSG_PUB.ADD;
6455                   END IF;
6456                   RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6457                ELSIF ( l_return_status = FND_API.G_RET_STS_ERROR ) THEN
6458                   x_return_status            := FND_API.G_RET_STS_ERROR;
6459                   RAISE FND_API.G_EXC_ERROR;
6460                END IF;
6461 
6462  --               bug 1903605
6463                l_old_config_header_id     := NULL;
6464                l_old_config_revision_num  := NULL;
6465 --                bug 1903605
6466 
6467               IF (l_orig_item_id_tbl IS NOT NULL)  AND (l_new_item_id_tbl IS NOT NULL)  THEN
6468 
6469                IF aso_debug_pub.g_debug_flag = 'Y' THEN
6470 			aso_debug_pub.ADD ( 'item_id_count > 0 ', 1 , 'N' );
6471                aso_debug_pub.ADD ( 'Orig Tbl Count ' ||l_orig_item_id_tbl.count, 1 , 'N' );
6472                aso_debug_pub.ADD ( 'New Tbl Count '||l_new_item_id_tbl.count, 1 , 'N' );
6473                END IF;
6474 
6475                  IF l_orig_item_id_tbl.count > 0 AND l_new_item_id_tbl.count > 0 THEN
6476 
6477                     FORALL  i  IN l_orig_item_id_tbl.FIRST..l_orig_item_id_tbl.LAST
6478                      UPDATE aso_quote_line_details
6479                      SET config_item_id = l_new_item_id_tbl(i)
6480                         ,last_update_date = SYSDATE
6481                         ,last_updated_by = G_USER_ID
6482                         ,last_update_login = G_LOGIN_ID
6483 
6484                      WHERE config_header_id = l_config_hdr_id
6485                      AND config_revision_num = l_config_rev_nbr
6486                      AND config_item_id = l_orig_item_id_tbl(i);
6487                  END IF;
6488 
6489                END IF;
6490 
6491 
6492 
6493              END IF; -- 'MDL'
6494 
6495 
6496      END IF; -- Checking the index line table
6497 
6498       --Insert rows for line relationships and line price relationships for that quote line---
6499      IF aso_debug_pub.g_debug_flag = 'Y' THEN
6500 	aso_debug_pub.ADD ( ' Copying the line relationship and price relation records for the new qte line' , 1 , 'N' );
6501 	END IF;
6502 
6503 
6504       FOR price_adj_rltship_rec IN c_price_adj_rel ( P_Original_Qte_Line_Rec.quote_line_id ) LOOP
6505          lx_price_adj_rltship_id    := FND_API.G_MISS_NUM;
6506 
6507          IF aso_debug_pub.g_debug_flag = 'Y' THEN
6508 	    aso_debug_pub.ADD ( 'l_line_index_link_tbl ( price_adj_rltship_rec.quote_line_id ) = ' ||
6509                               l_line_index_link_tbl ( price_adj_rltship_rec.quote_line_id ) , 1 , 'N' );
6510 	    aso_debug_pub.ADD ( 'l_price_index_link_tbl ( price_adj_rltship_rec.rltd_price_adj_id ) = ' ||
6511                               l_price_index_link_tbl ( price_adj_rltship_rec.rltd_price_adj_id ) , 1 , 'N' );
6512 	    aso_debug_pub.ADD ( 'price_adj_rltship_rec.rltd_price_adj_id = ' ||
6513                               price_adj_rltship_rec.rltd_price_adj_id  , 1 , 'N' );
6514          END IF;
6515 
6516          OPEN C_Get_Ship_Id (
6517             l_line_index_link_tbl ( price_adj_rltship_rec.quote_line_id )
6518           );
6519          FETCH C_Get_Ship_Id INTO l_ship_id;
6520          CLOSE C_Get_Ship_Id;
6521 
6522          IF aso_debug_pub.g_debug_flag = 'Y' THEN
6523 	    aso_debug_pub.ADD ( 'l_ship_id from line_id = ' || l_ship_id , 1 , 'N' );
6524 	    END IF;
6525 
6526          ASO_PRICE_RLTSHIPS_PKG.Insert_Row (
6527              px_ADJ_RELATIONSHIP_ID =>       lx_price_adj_rltship_id
6528           , p_creation_date =>               SYSDATE
6529           , p_CREATED_BY =>                  G_USER_ID
6530           , p_LAST_UPDATE_DATE =>            SYSDATE
6531           , p_LAST_UPDATED_BY =>             G_USER_ID
6532           , p_LAST_UPDATE_LOGIN =>           G_LOGIN_ID
6533           , p_PROGRAM_APPLICATION_ID =>      price_adj_rltship_rec.PROGRAM_APPLICATION_ID
6534           , p_PROGRAM_ID =>                  price_adj_rltship_rec.PROGRAM_ID
6535           , p_PROGRAM_UPDATE_DATE =>         price_adj_rltship_rec.PROGRAM_UPDATE_DATE
6536           , p_REQUEST_ID =>                  price_adj_rltship_rec.REQUEST_ID
6537           , p_QUOTE_LINE_ID =>               l_line_index_link_tbl ( price_adj_rltship_rec.quote_line_id )
6538           , p_PRICE_ADJUSTMENT_ID =>         l_price_index_link_tbl ( price_adj_rltship_rec.price_adjustment_id )
6539           , p_RLTD_PRICE_ADJ_ID =>           l_price_index_link_tbl ( price_adj_rltship_rec.rltd_price_adj_id )
6540           , p_QUOTE_SHIPMENT_ID =>           l_ship_id
6541 		, p_OBJECT_VERSION_NUMBER =>       price_adj_rltship_rec.OBJECT_VERSION_NUMBER
6542           );
6543       END LOOP;
6544 
6545       -- copy line relationships
6546 
6547       FOR line_rel_rec IN c_line_relation ( P_Original_Qte_Line_Rec.quote_line_id ) LOOP
6548 
6549          lx_LINE_RELATIONSHIP_ID    := FND_API.G_MISS_NUM;
6550          ASO_LINE_RELATIONSHIPS_PKG.Insert_Row (
6551              px_LINE_RELATIONSHIP_ID =>      lx_LINE_RELATIONSHIP_ID
6552           , p_CREATION_DATE =>               SYSDATE
6553           , p_CREATED_BY =>                  G_USER_ID
6554           , p_LAST_UPDATED_BY =>             G_USER_ID
6555           , p_LAST_UPDATE_DATE =>            SYSDATE
6556           , p_LAST_UPDATE_LOGIN =>           G_LOGIN_ID
6557           , p_REQUEST_ID =>                  line_rel_rec.REQUEST_ID
6558           , p_PROGRAM_APPLICATION_ID =>      line_rel_rec.PROGRAM_APPLICATION_ID
6559           , p_PROGRAM_ID =>                  line_rel_rec.PROGRAM_ID
6560           , p_PROGRAM_UPDATE_DATE =>         line_rel_rec.PROGRAM_UPDATE_DATE
6561           , p_QUOTE_LINE_ID =>               l_line_index_link_tbl ( line_rel_rec.quote_line_id )
6562           , p_RELATED_QUOTE_LINE_ID =>       l_line_index_link_tbl ( line_rel_rec.related_quote_line_id )
6563           , p_RECIPROCAL_FLAG =>             line_rel_rec.RECIPROCAL_FLAG
6564           , P_RELATIONSHIP_TYPE_CODE =>      line_rel_rec.RELATIONSHIP_TYPE_CODE
6565 		, p_OBJECT_VERSION_NUMBER =>       line_rel_rec.OBJECT_VERSION_NUMBER
6566           );
6567 
6568     END LOOP;
6569 
6570 
6571 END LOOP;
6572   -- End Copying the Line Loop
6573   -- Calling Update Quote to update the quantities
6574 
6575    IF aso_debug_pub.g_debug_flag = 'Y' THEN
6576    aso_debug_pub.ADD ( ' Getting the last update date of the quote before updating the quote ', 1 , 'N' );
6577    END IF;
6578 
6579     l_quote_header_rec := ASO_UTILITY_PVT.Query_Header_Row(P_Qte_Header_Rec.quote_header_id);
6580 
6581    OPEN get_latest_date (
6582       P_Qte_Header_Rec.quote_header_id
6583     );
6584     FETCH get_latest_date INTO l_quote_header_rec.last_update_date;
6585     CLOSE get_latest_date;
6586 
6587     l_quote_header_rec.quote_header_id := P_Qte_Header_Rec.quote_header_id;
6588     l_quote_header_rec.pricing_status_indicator := P_Qte_Header_Rec.pricing_status_indicator;
6589     l_quote_header_rec.tax_status_indicator := P_Qte_Header_Rec.tax_status_indicator;
6590 
6591 /*
6592    P_Control_Rec is going to be passed by the calling API
6593 	  l_control_rec.last_update_date :=     l_quote_header_rec.last_update_date;
6594        l_control_rec.pricing_request_type          :=  'ASO';
6595        l_control_rec.header_pricing_event          :=  'BATCH';
6596        l_control_rec.calculate_tax_flag            :=  'Y';
6597        l_control_rec.calculate_freight_charge_flag :=  'Y';
6598 */
6599 
6600 
6601     l_qte_line_tbl := ASO_QUOTE_PUB.G_MISS_QTE_LINE_TBL;
6602 
6603     IF aso_debug_pub.g_debug_flag = 'Y' THEN
6604     aso_debug_pub.ADD ( 'No Of Qte Lines 1 =  '|| to_char(l_qte_line_tbl.count), 1 , 'N' );
6605     aso_debug_pub.ADD ( ' Setting the qty and op code for new line created ', 1 , 'N' );
6606     END IF;
6607 
6608   FOR i  in 1..l_inserted_qte_line_tbl.count LOOP
6609    l_qte_line_tbl(i).quote_header_id := P_Qte_Header_Rec.quote_header_id;
6610    l_qte_line_tbl(i).quantity := l_inserted_qte_line_tbl(i).quantity;
6611    l_qte_line_tbl(i).quote_line_id := l_inserted_qte_line_tbl(i).quote_line_id;
6612    l_qte_line_tbl(i).operation_code := 'UPDATE';
6613 
6614 
6615     IF aso_debug_pub.g_debug_flag = 'Y' THEN
6616     aso_debug_pub.ADD ( 'New Qte Line '|| to_char(l_inserted_qte_line_tbl(i).quote_line_id), 1 , 'N' );
6617     aso_debug_pub.ADD ( 'New Qty '|| to_char(l_inserted_qte_line_tbl(i).quantity), 1 , 'N' );
6618     END IF;
6619 
6620  END LOOP;
6621 
6622    IF aso_debug_pub.g_debug_flag = 'Y' THEN
6623    aso_debug_pub.ADD ( 'No Of Qte Lines 2 =  '|| to_char(l_qte_line_tbl.count), 1 , 'N' );
6624    aso_debug_pub.ADD ( ' Setting the qty and op code for orig line to be updated ', 1 , 'N' );
6625    END IF;
6626 
6627    l_total_lines := l_qte_line_tbl.count;
6628 
6629    l_qte_line_tbl(l_total_lines + 1).quantity := l_qty_qte_line_tbl(l_qty_qte_line_tbl.count).quantity;
6630 
6631    l_qte_line_tbl(l_total_lines + 1).quote_header_id := P_Qte_Header_Rec.quote_header_id;
6632    l_qte_line_tbl(l_total_lines + 1).operation_code := 'UPDATE';
6633    l_qte_line_tbl(l_total_lines + 1).quote_line_id := P_Original_Qte_Line_Rec.quote_line_id;
6634 
6635     IF aso_debug_pub.g_debug_flag = 'Y' THEN
6636     aso_debug_pub.ADD ( 'No Of Qte Lines before update qty =  '|| to_char(l_qte_line_tbl.count), 1 , 'N' );
6637     aso_debug_pub.ADD ( ' Calling Update Quote to update all lines  ', 1 , 'N' );
6638     END IF;
6639 
6640   aso_quote_pub.update_quote (
6641       p_api_version_number         => 1.0,
6642       p_init_msg_list              => fnd_api.g_false,
6643       p_commit                     => fnd_api.g_false,
6644       p_control_rec                => p_control_rec,
6645       p_qte_header_rec             => l_quote_header_rec,
6646       p_hd_price_attributes_tbl    => aso_quote_pub.g_miss_price_attributes_tbl,
6647       p_hd_payment_tbl             => aso_quote_pub.g_miss_payment_tbl,
6648       p_hd_shipment_tbl            => aso_quote_pub.g_miss_shipment_tbl,
6649       p_hd_freight_charge_tbl      => aso_quote_pub.g_miss_freight_charge_tbl,
6650       p_hd_tax_detail_tbl          => aso_quote_pub.g_miss_tax_detail_tbl,
6651       p_qte_line_tbl               => l_qte_line_tbl,
6652       p_qte_line_dtl_tbl           => aso_quote_pub.g_miss_qte_line_dtl_tbl,
6653       p_line_attr_ext_tbl          => aso_quote_pub.G_MISS_Line_Attribs_Ext_TBL,
6654       p_line_rltship_tbl           => aso_quote_pub.g_miss_line_rltship_tbl,
6655       p_price_adjustment_tbl       => aso_quote_pub.g_miss_price_adj_tbl,
6656       p_price_adj_attr_tbl         => aso_quote_pub.g_miss_price_adj_attr_tbl,
6657       p_price_adj_rltship_tbl      => aso_quote_pub.g_miss_price_adj_rltship_tbl,
6658       p_ln_price_attributes_tbl    => aso_quote_pub.g_miss_price_attributes_tbl,
6659       p_ln_payment_tbl             => aso_quote_pub.g_miss_payment_tbl,
6660       p_ln_shipment_tbl            => aso_quote_pub.g_miss_shipment_tbl,
6661       p_ln_freight_charge_tbl      => aso_quote_pub.g_miss_freight_charge_tbl,
6662       p_ln_tax_detail_tbl          => aso_quote_pub.g_miss_tax_detail_tbl,
6663       x_qte_header_rec             => x_qte_header_rec,
6664       x_qte_line_tbl               => x_qte_line_tbl,
6665       x_qte_line_dtl_tbl           => x_qte_line_dtl_tbl,
6666       x_hd_price_attributes_tbl    => x_hd_price_attributes_tbl,
6667       x_hd_payment_tbl             => x_hd_payment_tbl,
6668       x_hd_shipment_tbl            => x_hd_shipment_tbl,
6669       x_hd_freight_charge_tbl      => x_hd_freight_charge_tbl,
6670       x_hd_tax_detail_tbl          => x_hd_tax_detail_tbl,
6671       x_line_attr_ext_tbl          => x_line_attr_ext_tbl,
6672       x_line_rltship_tbl           => x_line_rltship_tbl,
6673       x_price_adjustment_tbl       => x_price_adjustment_tbl,
6674       x_price_adj_attr_tbl         => x_price_adj_attr_tbl,
6675       x_price_adj_rltship_tbl      => x_price_adj_rltship_tbl,
6676       x_ln_price_attributes_tbl    => x_ln_price_attributes_tbl,
6677       x_ln_payment_tbl             => x_ln_payment_tbl,
6678       x_ln_shipment_tbl            => x_ln_shipment_tbl,
6679       x_ln_freight_charge_tbl      => x_ln_freight_charge_tbl,
6680       x_ln_tax_detail_tbl          => x_ln_tax_detail_tbl,
6681       x_return_status              => l_return_status,
6682       x_msg_count                  => x_msg_count,
6683       x_msg_data                   => x_msg_data
6684     );
6685 
6686     IF aso_debug_pub.g_debug_flag = 'Y' THEN
6687     aso_debug_pub.ADD ( ' Return Status from Update Quote = '||l_return_status, 1 , 'N' );
6688     END IF;
6689 
6690 
6691                IF ( l_return_status = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
6692                   x_return_status            := FND_API.G_RET_STS_UNEXP_ERROR;
6693                   IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
6694                      FND_MESSAGE.Set_Name ('ASO' , 'ASO_API_UNEXP_ERROR' );
6695                      FND_MSG_PUB.ADD;
6696                   END IF;
6697                   RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6698                ELSIF ( l_return_status = FND_API.G_RET_STS_ERROR ) THEN
6699                   x_return_status            := FND_API.G_RET_STS_ERROR;
6700                   RAISE FND_API.G_EXC_ERROR;
6701                END IF;
6702 
6703 	 IF aso_debug_pub.g_debug_flag = 'Y' THEN
6704 	 aso_debug_pub.ADD ( ' After Calling Update Quote to update all lines  ', 1 , 'N' );
6705 	 END IF;
6706 
6707 
6708       X_Quote_Line_Tbl := x_qte_line_tbl;
6709       --
6710       -- End of API body
6711       --
6712       -- Standard check for p_commit
6713       IF FND_API.to_Boolean ( p_commit ) THEN
6714          COMMIT WORK;
6715       END IF;
6716       -- Standard call to get message count and if count is 1, get message info.
6717       FND_MSG_PUB.Count_And_Get (
6718           p_count =>                      x_msg_count
6719        , p_data =>                        x_msg_data
6720        );
6721 
6722     IF aso_debug_pub.g_debug_flag = 'Y' THEN
6723     aso_debug_pub.ADD ( ' End of Split_Model_Line   ', 1 , 'N' );
6724     END IF;
6725    EXCEPTION
6726       WHEN FND_API.G_EXC_ERROR THEN
6727          ASO_UTILITY_PVT.HANDLE_EXCEPTIONS (
6728              P_API_NAME =>                   L_API_NAME
6729           , P_PKG_NAME =>                    G_PKG_NAME
6730           , P_EXCEPTION_LEVEL =>             FND_MSG_PUB.G_MSG_LVL_ERROR
6731           , P_PACKAGE_TYPE =>                ASO_UTILITY_PVT.G_PVT
6732           , X_MSG_COUNT =>                   X_MSG_COUNT
6733           , X_MSG_DATA =>                    X_MSG_DATA
6734           , X_RETURN_STATUS =>               X_RETURN_STATUS
6735           );
6736 
6737       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6738          ASO_UTILITY_PVT.HANDLE_EXCEPTIONS (
6739              P_API_NAME =>                   L_API_NAME
6740           , P_PKG_NAME =>                    G_PKG_NAME
6741           , P_EXCEPTION_LEVEL =>             FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
6742           , P_PACKAGE_TYPE =>                ASO_UTILITY_PVT.G_PVT
6743           , X_MSG_COUNT =>                   X_MSG_COUNT
6744           , X_MSG_DATA =>                    X_MSG_DATA
6745           , X_RETURN_STATUS =>               X_RETURN_STATUS
6746           );
6747 
6748 
6749       WHEN OTHERS THEN
6750          ASO_UTILITY_PVT.HANDLE_EXCEPTIONS (
6751              P_API_NAME =>                   L_API_NAME
6752           , P_PKG_NAME =>                    G_PKG_NAME
6753           , P_SQLCODE =>                     SQLCODE
6754           , P_SQLERRM =>                     SQLERRM
6755           , P_EXCEPTION_LEVEL =>             ASO_UTILITY_PVT.G_EXC_OTHERS
6756           , P_PACKAGE_TYPE =>                ASO_UTILITY_PVT.G_PVT
6757           , X_MSG_COUNT =>                   X_MSG_COUNT
6758           , X_MSG_DATA =>                    X_MSG_DATA
6759           , X_RETURN_STATUS =>               X_RETURN_STATUS
6760           );
6761 
6762  END Split_Model_Line;
6763 
6764 
6765 PROCEDURE INSERT_SALES_SUPP_DATA
6766 (
6767 P_Api_Version_Number          IN         NUMBER,
6768 P_Init_Msg_List               IN         VARCHAR2     := FND_API.G_FALSE,
6769 P_Commit                      IN         VARCHAR2     := FND_API.G_FALSE,
6770 P_OLD_QUOTE_LINE_ID           IN         NUMBER,
6771 P_NEW_QUOTE_LINE_ID           IN         NUMBER,
6772 X_Return_Status               OUT NOCOPY /* file.sql.39 change */           VARCHAR2,
6773 X_Msg_Count                   OUT NOCOPY /* file.sql.39 change */           VARCHAR2,
6774 X_Msg_Data                    OUT NOCOPY /* file.sql.39 change */           VARCHAR2 ) IS
6775 
6776 
6777       CURSOR get_template_id (
6778           qte_line_id NUMBER
6779        ) IS
6780          SELECT template_instance_id, template_id
6781          FROM   aso_sup_tmpl_instance
6782          WHERE  owner_table_name = 'ASO_QUOTE_LINES'
6783          AND    owner_table_id = qte_line_id;
6784 
6785       CURSOR get_values (
6786           temp_instance_id NUMBER
6787        ) IS
6788          SELECT sect_comp_map_id, VALUE, value_type_qualifier, response_id
6789          FROM   aso_sup_instance_value
6790          WHERE  template_instance_id = temp_instance_id;
6791 
6792       l_old_template_instance_id NUMBER;
6793       l_new_template_instance_id NUMBER;
6794       l_sup_instance_rowid ROWID;
6795       l_template_instance_rowid ROWID;
6796       l_instance_value_id NUMBER;
6797       l_old_instance_value_id NUMBER;
6798       l_api_name VARCHAR2 ( 150 ) := 'INSERT_SALES_SUPP_DATA';
6799       l_api_version_number CONSTANT NUMBER := 1.0;
6800 
6801    BEGIN
6802 
6803 -- Establish a standard save point
6804       SAVEPOINT INSERT_SALES_SUPP_DATA_PVT;
6805 
6806 -- Standard call to check for call compatability
6807       IF NOT FND_API.Compatible_API_Call (
6808                  l_api_version_number
6809               , p_api_version_number
6810               , l_api_name
6811               , G_PKG_NAME
6812               ) THEN
6813          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6814       END IF;
6815 
6816 -- Initialize message list if p_init_msg_list is set to TRUE.
6817       IF FND_API.to_Boolean ( p_init_msg_list ) THEN
6818          FND_MSG_PUB.initialize;
6819       END IF;
6820 
6821 -- API BODY
6822       IF aso_debug_pub.g_debug_flag = 'Y' THEN
6823       aso_debug_pub.ADD ('INSERT_SALES_SUPP_DATA: Begin' , 1, 'N' );
6824       aso_debug_pub.ADD ( 'Old QTE Line  Id : ' || TO_CHAR ( P_OLD_QUOTE_LINE_ID ) , 1 , 'N' );
6825       aso_debug_pub.ADD ( 'New QTE Line  Id : ' || TO_CHAR ( P_NEW_QUOTE_LINE_ID ) , 1 , 'N' );
6826       END IF;
6827 
6828 -- Get the template id and template_instance_id based upon the
6829 -- quote line id
6830 
6831       FOR template_val IN get_template_id ( P_OLD_QUOTE_LINE_ID ) LOOP
6832          IF aso_debug_pub.g_debug_flag = 'Y' THEN
6833          aso_debug_pub.ADD ( 'Template Id : ' || TO_CHAR ( template_val.template_id ) , 1 , 'N' );
6834          aso_debug_pub.ADD ( ' Old Template Instance Id : ' || TO_CHAR ( template_val.template_instance_id ) , 1 , 'N
6835 ' );
6836 
6837          -- Create a new row in the ASO_SUP_TMPL_INSTANCE Table with the template id
6838 
6839          aso_debug_pub.ADD ( 'Inserting a row into tmpl_instance table' , 1 , 'N' );
6840          END IF;
6841 
6842          -- Initiate the variable to null,
6843          -- so that each time they contain new value for every pass of loop
6844 
6845          l_new_template_instance_id := NULL;
6846          ASO_SUP_TMPL_INSTANCE_PKG.INSERT_ROW (
6847              PX_ROWID =>                     l_template_instance_rowid
6848           , PX_TEMPLATE_INSTANCE_ID =>       l_new_template_instance_id
6849           , P_created_by =>                  FND_GLOBAL.USER_ID
6850           , P_creation_date =>               SYSDATE
6851           , P_last_updated_by =>             FND_GLOBAL.USER_ID
6852           , P_last_update_date =>            SYSDATE
6853           , P_last_update_login =>           FND_GLOBAL.CONC_LOGIN_ID
6854           , P_TEMPLATE_ID =>                 template_val.template_id
6855           , P_Owner_Table_Name =>            'ASO_QUOTE_LINES'
6856           , P_Owner_Table_Id =>              P_NEW_QUOTE_LINE_ID
6857 		, P_OBJECT_VERSION_NUMBER =>       FND_API.G_MISS_NUM
6858           );
6859 
6860          IF aso_debug_pub.g_debug_flag = 'Y' THEN
6861          aso_debug_pub.ADD ( ' New Template Instance Id : ' || TO_CHAR ( l_new_template_instance_id ) , 1 , 'N' );
6862          END IF;
6863 
6864          -- Get the values for that instance
6865          FOR inst_val IN get_values ( template_val.template_instance_id ) LOOP
6866             IF aso_debug_pub.g_debug_flag = 'Y' THEN
6867             aso_debug_pub.ADD (   'Value : ' || inst_val.VALUE, 1, 'N' );
6868             aso_debug_pub.ADD ( 'Value Type Qualifier : ' || inst_val.value_type_qualifier , 1 , 'N' );
6869             aso_debug_pub.ADD ( 'Response Id : ' || TO_CHAR ( inst_val.response_id ) , 1 , 'N' );
6870             END IF;
6871 
6872             -- If values are fetched then insert rows
6873             IF inst_val.sect_comp_map_id IS NOT NULL THEN
6874                -- Initiate the variables to null,
6875                -- so that each time they contain new value for every pass of loop
6876 
6877                l_instance_value_id        := NULL;
6878                IF aso_debug_pub.g_debug_flag = 'Y' THEN
6879                aso_debug_pub.ADD ( 'Inserting a row into instance_value table' , 1 , 'N' );
6880                END IF;
6881 
6882                -- Create a new row in the ASO_SUP_INSTANCE_VALUE table
6883                ASO_SUP_INSTANCE_VALUE_PKG.INSERT_ROW (
6884                    PX_ROWID =>                     l_sup_instance_rowid
6885                 , PX_INSTANCE_VALUE_ID =>          l_instance_value_id
6886                 , P_SECT_COMP_MAP_ID =>            inst_val.sect_comp_map_id
6887                 , P_Template_Instance_ID =>        l_new_template_instance_id
6888                 , p_value =>                       inst_val.VALUE
6889                 , p_value_type_qualifier =>        inst_val.value_type_qualifier
6890                 , p_response_id =>                 inst_val.response_id
6891                 , P_created_by =>                  FND_GLOBAL.USER_ID
6892                 , P_last_updated_by =>             FND_GLOBAL.USER_ID
6893                 , P_last_update_login =>           FND_GLOBAL.CONC_LOGIN_ID
6894 			 , P_OBJECT_VERSION_NUMBER =>       FND_API.G_MISS_NUM
6895                 );
6896                IF aso_debug_pub.g_debug_flag = 'Y' THEN
6897                aso_debug_pub.ADD ( 'New Instance Value Id : ' || TO_CHAR ( l_instance_value_id ) , 1 , 'N' );
6898                END IF;
6899             END IF;
6900 
6901          END LOOP; -- instance value loop
6902 
6903       END LOOP; -- template loop
6904 
6905       -- Standard check for p_commit
6906       IF FND_API.to_Boolean ( p_commit ) THEN
6907          COMMIT WORK;
6908       END IF;
6909 
6910 --  Initialize API return status to success
6911       x_return_status            := FND_API.G_RET_STS_SUCCESS;
6912 
6913       IF aso_debug_pub.g_debug_flag = 'Y' THEN
6914       aso_debug_pub.ADD ( 'INSERT_SALES_SUPP_DATA: ' || l_api_name || 'end' , 1 , 'N' );
6915       END IF;
6916 
6917 
6918 
6919 EXCEPTION
6920 
6921       WHEN FND_API.G_EXC_ERROR THEN
6922          ASO_UTILITY_PVT.HANDLE_EXCEPTIONS (
6923              P_API_NAME =>                   L_API_NAME
6924           , P_PKG_NAME =>                    G_PKG_NAME
6925           , P_EXCEPTION_LEVEL =>             FND_MSG_PUB.G_MSG_LVL_ERROR
6926           , P_PACKAGE_TYPE =>                ASO_UTILITY_PVT.G_PVT
6927           , X_MSG_COUNT =>                   X_MSG_COUNT
6928           , X_MSG_DATA =>                    X_MSG_DATA
6929           , X_RETURN_STATUS =>               X_RETURN_STATUS
6930           );
6931 
6932       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6933          ASO_UTILITY_PVT.HANDLE_EXCEPTIONS (
6934              P_API_NAME =>                   L_API_NAME
6935           , P_PKG_NAME =>                    G_PKG_NAME
6936           , P_EXCEPTION_LEVEL =>             FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
6937           , P_PACKAGE_TYPE =>                ASO_UTILITY_PVT.G_PVT
6938           , X_MSG_COUNT =>                   X_MSG_COUNT
6939           , X_MSG_DATA =>                    X_MSG_DATA
6940           , X_RETURN_STATUS =>               X_RETURN_STATUS
6941           );
6942 
6943       WHEN OTHERS THEN
6944          ASO_UTILITY_PVT.HANDLE_EXCEPTIONS (
6945              P_API_NAME =>                   L_API_NAME
6946           , P_PKG_NAME =>                    G_PKG_NAME
6947           , P_SQLCODE =>                     SQLCODE
6948           , P_SQLERRM =>                     SQLERRM
6949           , P_EXCEPTION_LEVEL =>             ASO_UTILITY_PVT.G_EXC_OTHERS
6950           , P_PACKAGE_TYPE =>                ASO_UTILITY_PVT.G_PVT
6951           , X_MSG_COUNT =>                   X_MSG_COUNT
6952           , X_MSG_DATA =>                    X_MSG_DATA
6953           , X_RETURN_STATUS =>               X_RETURN_STATUS
6954           );
6955 
6956 
6957 END INSERT_SALES_SUPP_DATA;
6958 
6959 PROCEDURE copy_payment_row(p_payment_rec   IN         aso_quote_pub.payment_rec_type,
6960                              x_return_status OUT NOCOPY varchar2,
6961                              x_msg_count     OUT NOCOPY number,
6962                              x_msg_data      OUT NOCOPY varchar2) is
6963 
6964   l_api_name            varchar2(1000) := 'copy_payment_row';
6965   l_payment_rec         aso_quote_pub.payment_rec_type := p_payment_rec;
6966   l_qte_header_rec      ASO_QUOTE_PUB.Qte_Header_Rec_Type;
6967   l_payer               IBY_FNDCPT_COMMON_PUB.PayerContext_rec_type;
6968   lx_response           IBY_FNDCPT_COMMON_PUB.Result_rec_type;
6969   lx_assign_id          number;
6970   lx_entity_id          number;
6971   l_trxn_attribs        IBY_FNDCPT_TRXN_PUB.TrxnExtension_rec_type;
6972   l_qte_line_rec        ASO_QUOTE_PUB.Qte_Line_Rec_Type;
6973   l_entities            IBY_FNDCPT_COMMON_PUB.Id_tbl_type;
6974   l_payment_ref_number  varchar2(240);
6975   lx_channel_attrib_uses IBY_FNDCPT_SETUP_PUB.PmtChannel_AttribUses_rec_type;
6976 
6977  Cursor c_get_payer_from_trxn(p_trxn_extension_id number) is
6978  select a.party_id, a.instr_assignment_id
6979  from iby_fndcpt_payer_assgn_instr_v a, IBY_TRXN_EXTENSIONS_V b
6980  where a.instr_assignment_id = b.instr_assignment_id
6981  and b.trxn_extension_id = p_trxn_extension_id;
6982 
6983  Cursor c_get_payment_id is
6984  SELECT ASO_PAYMENTS_S.nextval FROM sys.dual;
6985 
6986 begin
6987      SAVEPOINT COPY_PAYMENT_ROW_PVT;
6988      aso_debug_pub.g_debug_flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
6989 
6990      IF aso_debug_pub.g_debug_flag = 'Y' THEN
6991          aso_debug_pub.add('Begin copy_payment_row ', 1, 'Y');
6992          aso_debug_pub.add('l_payment_rec.Quote_Header_Id:  ' || l_payment_rec.Quote_Header_Id, 1, 'Y');
6993          aso_debug_pub.add('l_payment_rec.Quote_Line_Id:    ' || l_payment_rec.Quote_Line_Id, 1, 'Y');
6994          aso_debug_pub.add('l_payment_rec.trxn_extension_id:' || l_payment_rec.trxn_extension_id, 1, 'Y');
6995          aso_debug_pub.add('l_payment_rec.PAYMENT_REF_NUMBER:'|| l_payment_rec.PAYMENT_REF_NUMBER , 1, 'Y');
6996          aso_debug_pub.add('l_payment_rec.PAYMENT_TERM_ID:  ' || l_payment_rec.PAYMENT_TERM_ID, 1, 'Y');
6997      END IF;
6998 
6999      x_return_status := FND_API.G_RET_STS_SUCCESS;
7000 
7001      l_qte_header_rec := ASO_UTILITY_PVT.Query_Header_Row (l_payment_rec.Quote_Header_Id );
7002      IF ( l_payment_rec.Quote_Line_Id IS NOT NULL and l_payment_rec.Quote_Line_Id <> fnd_api.g_miss_num) then
7003        l_qte_line_rec := ASO_UTILITY_PVT.Query_Qte_Line_Row ( l_payment_rec.Quote_Line_Id );
7004      END IF;
7005 
7006     if (l_payment_rec.trxn_extension_id is not null or l_payment_rec.trxn_extension_id <> fnd_api.g_miss_num) then
7007 
7008         -- Check to see if cvv2 is mandatory or not
7009         IF aso_debug_pub.g_debug_flag = 'Y' THEN
7010            aso_debug_pub.add('Before calling IBY_FNDCPT_TRXN_PUB.Get_Payment_Channel_Attribs ', 1, 'Y');
7011         END IF;
7012 
7013         IBY_FNDCPT_SETUP_PUB.Get_Payment_Channel_Attribs
7014             (
7015             p_api_version          => 1.0,
7016             p_init_msg_list        => FND_API.G_FALSE,
7017             x_return_status        => x_return_status,
7018             x_msg_count            => x_msg_count,
7019             x_msg_data             => x_msg_data,
7020             p_channel_code         => 'CREDIT_CARD',
7021             x_channel_attrib_uses  => lx_channel_attrib_uses,
7022             x_response             => lx_response);
7023 
7024         IF aso_debug_pub.g_debug_flag = 'Y' THEN
7025             aso_debug_pub.add('after calling IBY_FNDCPT_TRXN_PUB.Get_Payment_Channel_Attribs ', 1, 'Y');
7026             aso_debug_pub.add('Return Status: '||x_return_status, 1, 'Y');
7027             aso_debug_pub.add('cvv2 use:      '||lx_channel_attrib_uses.Instr_SecCode_Use, 1, 'Y');
7028             aso_debug_pub.add('x_response.result_code:    '|| to_char(lx_response.result_code), 1, 'Y');
7029             aso_debug_pub.add('x_response.result_category:'|| to_char(lx_response.result_category), 1, 'Y');
7030             aso_debug_pub.add('x_response.result_message: '|| to_char(lx_response.result_message), 1, 'Y');
7031         END IF;
7032 
7033         -- if cvv2 is not mandatory then call IBY API to create the new trxn extension
7034         -- if cvv2 is mandatory then do not call IBY API, make payment ref as null and insert row
7035 
7036         IF (nvl(lx_channel_attrib_uses.Instr_SecCode_Use,'null') <>  'REQUIRED') THEN
7037 
7038             l_payer.cust_account_id := null;
7039             l_payer.account_site_id := null;
7040             l_payer.payment_function := 'CUSTOMER_PAYMENT';
7041 
7042 
7043             open c_get_payer_from_trxn(l_payment_rec.trxn_extension_id);
7044             fetch c_get_payer_from_trxn into l_payer.party_id,l_payment_rec.instr_assignment_id;
7045             close c_get_payer_from_trxn;
7046 
7047 		  if (l_payment_rec.payment_id is null or l_payment_rec.payment_id = fnd_api.g_miss_num) then
7048 		    open c_get_payment_id;
7049 		    fetch c_get_payment_id into l_payment_rec.payment_id;
7050 		    close c_get_payment_id;
7051             end if;
7052 
7053             l_trxn_attribs.Originating_Application_Id := 697;
7054 
7055             l_trxn_attribs.Order_Id := to_char(l_payment_rec.payment_id)||'-'||l_qte_header_rec.quote_number;
7056             l_trxn_attribs.PO_Number := null;
7057             l_trxn_attribs.PO_Line_Number := null;
7058             l_trxn_attribs.Trxn_Ref_Number1 := l_payment_rec.quote_header_id;
7059             IF l_payment_rec.quote_line_id = fnd_api.g_miss_num then
7060              l_trxn_attribs.Trxn_Ref_Number2 := null;
7061             Else
7062              l_trxn_attribs.Trxn_Ref_Number2 := l_payment_rec.quote_line_id;
7063             End if;
7064             -- Do NOT copy the cvv2 info if the cvv2 is OPTIONAL see bug 4777120
7065 		  -- l_trxn_attribs.Instrument_Security_Code := l_payment_rec.cvv2;
7066 
7067             l_trxn_attribs.VoiceAuth_Flag := null;
7068             l_trxn_attribs.VoiceAuth_Date := null;
7069             l_trxn_attribs.VoiceAuth_Code := null;
7070             l_trxn_attribs.Additional_Info := null;
7071 
7072            IF aso_debug_pub.g_debug_flag = 'Y' THEN
7073               aso_debug_pub.add('Before calling IBY_FNDCPT_TRXN_PUB.Create_Transaction_Extension ', 1, 'Y');
7074               aso_debug_pub.add('Instrument Assignment id: '|| l_payment_rec.instr_assignment_id, 1, 'Y');
7075               aso_debug_pub.add('payment id is :           '|| l_payment_rec.payment_id,1,'Y');
7076               aso_debug_pub.add('quote line  id is :       '|| l_payment_rec.quote_line_id,1,'Y');
7077               aso_debug_pub.add('party_id is :             '|| l_payer.party_id,1,'Y');
7078            END IF;
7079 
7080             IBY_FNDCPT_TRXN_PUB.Create_Transaction_Extension
7081             (
7082             p_api_version       => 1.0,
7083             p_init_msg_list     => FND_API.G_FALSE,
7084             p_commit            => FND_API.G_FALSE,
7085             x_return_status     => x_return_status,
7086             x_msg_count         => x_msg_count,
7087             x_msg_data          => x_msg_data,
7088             p_payer             => l_payer,
7089             p_payer_equivalency => IBY_FNDCPT_COMMON_PUB.G_PAYER_EQUIV_UPWARD,
7090             p_pmt_channel       => l_payment_rec.payment_type_code,
7091             p_instr_assignment  => l_payment_rec.instr_assignment_id,
7092             p_trxn_attribs      => l_trxn_attribs,
7093             x_entity_id         => lx_entity_id,
7094             x_response          => lx_response);
7095 
7096            IF aso_debug_pub.g_debug_flag = 'Y' THEN
7097               aso_debug_pub.add('after calling IBY_FNDCPT_TRXN_PUB.Create_Transaction_Extension ', 1, 'Y');
7098               aso_debug_pub.add('Return Status: '||x_return_status, 1, 'Y');
7099             aso_debug_pub.add('lx_entity_id:            '||lx_entity_id, 1, 'Y');
7100             aso_debug_pub.add('x_response.result_code:    '|| to_char(lx_response.result_code), 1, 'Y');
7101             aso_debug_pub.add('x_response.result_category:'|| to_char(lx_response.result_category), 1, 'Y');
7102             aso_debug_pub.add('x_response.result_message: '|| to_char(lx_response.result_message), 1, 'Y');
7103            END IF;
7104 
7105             if x_return_status <> fnd_api.g_ret_sts_success then
7106               IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
7107                  FND_MESSAGE.Set_Name('ASO', 'ERROR_RETURNED');
7108                  FND_MESSAGE.Set_Token('API', 'IBY_FNDCPT_TRXN_PUB.Create_Transaction_Extension ', FALSE);
7109                  FND_MSG_PUB.ADD;
7110               END IF;
7111               IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
7112                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7113               ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
7114                  RAISE FND_API.G_EXC_ERROR;
7115               END IF;
7116             end if;
7117 
7118             -- setting the trxn extn id
7119             l_payment_rec.trxn_extension_id := lx_entity_id;
7120 
7121      ELSE
7122 
7123            IF aso_debug_pub.g_debug_flag = 'Y' THEN
7124               aso_debug_pub.add('Instr Sec Code cvv2 is mandatory hence setting the payment ref number and trxn ext id to null ', 1, 'Y');
7125            END IF;
7126 
7127             l_payment_rec.PAYMENT_REF_NUMBER := null;
7128             l_payment_rec.trxn_extension_id := null;
7129             l_payment_rec.payment_type_code := null;
7130 
7131      END IF; -- end if for the cvv2 check
7132 
7133     end if; -- end if for trxn ext id check
7134 
7135            IF l_payment_rec.PAYMENT_TYPE_CODE = 'CREDIT_CARD' then
7136               l_payment_ref_number := null;
7137            else
7138               l_payment_ref_number := l_payment_rec.PAYMENT_REF_NUMBER;
7139            END IF;
7140 
7141      ASO_PAYMENTS_PKG.Insert_Row(
7142             px_PAYMENT_ID                 => l_payment_rec.PAYMENT_ID,
7143             p_CREATION_DATE               => SYSDATE,
7144             p_CREATED_BY                  => fnd_global.USER_ID,
7145             p_LAST_UPDATE_DATE            => SYSDATE,
7146             p_LAST_UPDATED_BY             => fnd_global.USER_ID,
7147             p_LAST_UPDATE_LOGIN           => FND_GLOBAL.CONC_LOGIN_ID,
7148             p_REQUEST_ID                  => l_payment_rec.REQUEST_ID,
7149             p_PROGRAM_APPLICATION_ID      => l_payment_rec.PROGRAM_APPLICATION_ID,
7150             p_PROGRAM_ID                  => l_payment_rec.PROGRAM_ID,
7151             p_PROGRAM_UPDATE_DATE         => l_payment_rec.PROGRAM_UPDATE_DATE,
7152             p_QUOTE_HEADER_ID             => l_payment_rec.QUOTE_HEADER_ID,
7153             p_QUOTE_LINE_ID               => l_payment_rec.QUOTE_LINE_ID,
7154             p_QUOTE_SHIPMENT_ID           => l_payment_rec.QUOTE_SHIPMENT_ID ,
7155             p_PAYMENT_TYPE_CODE           => l_payment_rec.PAYMENT_TYPE_CODE,
7156             p_PAYMENT_REF_NUMBER          => l_payment_ref_number,
7157             p_PAYMENT_OPTION              => l_payment_rec.PAYMENT_OPTION,
7158             p_PAYMENT_TERM_ID             => l_payment_rec.PAYMENT_TERM_ID,
7159             p_CREDIT_CARD_CODE            => null,
7160             p_CREDIT_CARD_HOLDER_NAME     => null,
7161             p_CREDIT_CARD_EXPIRATION_DATE => null,
7162             p_CREDIT_CARD_APPROVAL_CODE   => null,
7163             p_CREDIT_CARD_APPROVAL_DATE   => null,
7164             p_PAYMENT_AMOUNT              => l_payment_rec.PAYMENT_AMOUNT,
7165             p_ATTRIBUTE_CATEGORY          => l_payment_rec.ATTRIBUTE_CATEGORY,
7166             p_ATTRIBUTE1                  => l_payment_rec.ATTRIBUTE1,
7167             p_ATTRIBUTE2                  => l_payment_rec.ATTRIBUTE2,
7168             p_ATTRIBUTE3                  => l_payment_rec.ATTRIBUTE3,
7169             p_ATTRIBUTE4                  => l_payment_rec.ATTRIBUTE4,
7170             p_ATTRIBUTE5                  => l_payment_rec.ATTRIBUTE5,
7171             p_ATTRIBUTE6                  => l_payment_rec.ATTRIBUTE6,
7172             p_ATTRIBUTE7                  => l_payment_rec.ATTRIBUTE7,
7173             p_ATTRIBUTE8                  => l_payment_rec.ATTRIBUTE8,
7174             p_ATTRIBUTE9                  => l_payment_rec.ATTRIBUTE9,
7175             p_ATTRIBUTE10                 => l_payment_rec.ATTRIBUTE10,
7176             p_ATTRIBUTE11                 => l_payment_rec.ATTRIBUTE11,
7177             p_ATTRIBUTE12                 => l_payment_rec.ATTRIBUTE12,
7178             p_ATTRIBUTE13                 => l_payment_rec.ATTRIBUTE13,
7179             p_ATTRIBUTE14                 => l_payment_rec.ATTRIBUTE14,
7180             p_ATTRIBUTE15                 => l_payment_rec.ATTRIBUTE15,
7181            p_ATTRIBUTE16                 => l_payment_rec.ATTRIBUTE16,
7182             p_ATTRIBUTE17                 => l_payment_rec.ATTRIBUTE17,
7183             p_ATTRIBUTE18                 => l_payment_rec.ATTRIBUTE18,
7184             p_ATTRIBUTE19                 => l_payment_rec.ATTRIBUTE19,
7185             p_ATTRIBUTE20                 => l_payment_rec.ATTRIBUTE20,
7186           p_CUST_PO_NUMBER              => l_payment_rec.CUST_PO_NUMBER,
7187            p_PAYMENT_TERM_ID_FROM        => l_payment_rec.PAYMENT_TERM_ID_FROM,
7188           p_OBJECT_VERSION_NUMBER       => l_payment_rec.OBJECT_VERSION_NUMBER,
7189             p_CUST_PO_LINE_NUMBER         => l_payment_rec.CUST_PO_LINE_NUMBER,
7190             p_trxn_extension_id           => l_payment_rec.trxn_extension_id
7191           );
7192       -- Standard call to get message count and if count is 1, get message info.
7193       FND_MSG_PUB.Count_And_Get
7194       (  p_count          =>   x_msg_count,
7195          p_data           =>   x_msg_data
7196       );
7197 
7198     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
7199       aso_debug_pub.ADD ('END copy_payment_row',1,'N');
7200     END IF;
7201 
7202 EXCEPTION
7203   WHEN FND_API.G_EXC_ERROR THEN
7204     ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
7205                    P_API_NAME => L_API_NAME
7206                   ,P_PKG_NAME => G_PKG_NAME
7207                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
7208                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
7209                   ,X_MSG_COUNT => X_MSG_COUNT
7210                   ,X_MSG_DATA => X_MSG_DATA
7211                   ,X_RETURN_STATUS => X_RETURN_STATUS);
7212 
7213   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7214     ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
7215                    P_API_NAME => L_API_NAME
7216                   ,P_PKG_NAME => G_PKG_NAME
7217                   ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
7218                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
7219                   ,X_MSG_COUNT => X_MSG_COUNT
7220                   ,X_MSG_DATA => X_MSG_DATA
7221                   ,X_RETURN_STATUS => X_RETURN_STATUS);
7222 
7223   WHEN OTHERS THEN
7224     ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
7225                    P_API_NAME => L_API_NAME
7226                   ,P_PKG_NAME => G_PKG_NAME
7227                   ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
7228                   ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
7229                   ,X_MSG_COUNT => X_MSG_COUNT
7230                   ,X_MSG_DATA => X_MSG_DATA
7231                   ,X_RETURN_STATUS => X_RETURN_STATUS);
7232 
7233 end copy_payment_row;
7234 
7235 END ASO_COPY_QUOTE_PVT;