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