[Home] [Help]
PACKAGE BODY: APPS.ASO_SPLIT_LINE_INT
Source
1 PACKAGE BODY ASO_SPLIT_LINE_INT as
2 /* $Header: asoisplb.pls 120.6 2006/06/26 23:58:47 skulkarn ship $ */
3 -- Start of Comments
4 -- Package name : ASO_SPLIT_LINE_INT
5 -- Purpose :
6 -- History :
7 -- NOTE :
8 -- End of Comments
9
10 G_PKG_NAME CONSTANT VARCHAR2(30) := 'ASO_SPLIT_LINE_INT';
11 G_FILE_NAME CONSTANT VARCHAR2(12) := 'asoisplb.pls';
12
13 PROCEDURE Split_Quote_line (
14 P_Api_Version_Number IN NUMBER,
15 P_Init_Msg_List IN VARCHAR2 := FND_API.G_FALSE,
16 P_Commit IN VARCHAR2 := FND_API.G_FALSE,
17 p_qte_line_id IN NUMBER,
18 P_Qte_Line_Tbl IN ASO_QUOTE_PUB.Qte_Line_Tbl_Type,
19 P_ln_Shipment_Tbl IN ASO_QUOTE_PUB.Shipment_Tbl_Type
20 := ASO_QUOTE_PUB.G_MISS_SHIPMENT_TBL,
21 X_Qte_Line_Tbl OUT NOCOPY /* file.sql.39 change */ ASO_QUOTE_PUB.Qte_Line_Tbl_Type,
22 X_Return_Status OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
23 X_Msg_Count OUT NOCOPY /* file.sql.39 change */ NUMBER,
24 X_Msg_Data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
25 )
26 IS
27
28 l_qte_header_rec aso_quote_pub.qte_header_rec_type := aso_quote_pub.g_miss_qte_header_rec;
29 l_qte_line_rec aso_quote_pub.qte_line_rec_type := aso_quote_pub.g_miss_qte_line_rec;
30 l_control_rec aso_quote_pub.control_rec_type := aso_quote_pub.g_miss_control_rec;
31
32 cursor c_qte_header_id is
33 select quote_header_id
34 from aso_quote_lines_all
35 where quote_line_id = p_qte_line_id;
36
37 Begin
38
39 aso_debug_pub.g_debug_flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
40
41
42 x_return_status := fnd_api.g_ret_sts_success;
43
44 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
45 aso_debug_pub.add('ASO_SPLIT_LINE_INT: Split_Quote_line Begin', 1, 'Y');
46 END IF;
47
48 l_control_rec.pricing_request_type := 'ASO';
49 l_control_rec.header_pricing_event := 'BATCH';
50 l_control_rec.calculate_tax_flag := 'Y';
51 l_control_rec.calculate_freight_charge_flag := 'Y';
52
53 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
54 aso_debug_pub.add('Split_Quote_line: p_qte_line_id: '|| p_qte_line_id);
55 END IF;
56
57 l_qte_line_rec.quote_line_id := p_qte_line_id;
58
59 open c_qte_header_id;
60 fetch c_qte_header_id into l_qte_header_rec.quote_header_id;
61 close c_qte_header_id;
62
63 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
64 aso_debug_pub.add('Split_Quote_line: l_qte_header_rec.quote_header_id: '|| l_qte_header_rec.quote_header_id);
65 END IF;
66
67 split_quote_line(
68 p_api_version_number => p_api_version_number,
69 p_init_msg_list => fnd_api.g_false,
70 p_commit => p_commit,
71 p_control_rec => l_control_rec,
72 p_qte_header_rec => l_qte_header_rec,
73 p_original_qte_line_rec => l_qte_line_rec,
74 p_qte_line_tbl => p_qte_line_tbl,
75 p_ln_shipment_tbl => p_ln_shipment_tbl,
76 x_qte_line_tbl => x_qte_line_tbl,
77 x_return_status => x_return_status,
78 x_msg_count => x_msg_count,
79 x_msg_data => x_msg_data );
80
81 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
82 aso_debug_pub.add('Split_Quote_line: After call to the overloaded split_quote_line procedure');
83 aso_debug_pub.add('Split_Quote_line: x_return_status: '|| x_return_status);
84 END IF;
85
86 EXCEPTION
87
88 WHEN OTHERS THEN
89 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
90 aso_debug_pub.add('Split_Quote_line: Inside when others exception', 1, 'N');
91 END IF;
92
93 End Split_Quote_line;
94
95
96 PROCEDURE split_quote_line(
97 p_api_version_number IN number,
98 p_init_msg_list IN varchar2 := fnd_api.g_false,
99 p_commit IN varchar2 := fnd_api.g_false,
100 p_control_rec IN aso_quote_pub.control_rec_type
101 := aso_quote_pub.g_miss_control_rec,
102 p_qte_header_rec IN aso_quote_pub.qte_header_rec_type
103 := aso_quote_pub.g_miss_qte_header_rec,
104 p_original_qte_line_rec IN aso_quote_pub.qte_line_rec_type,
105 p_qte_line_tbl IN aso_quote_pub.qte_line_tbl_type,
106 p_ln_shipment_tbl IN aso_quote_pub.shipment_tbl_type
107 := aso_quote_pub.g_miss_shipment_tbl,
108 x_qte_line_tbl OUT NOCOPY /* file.sql.39 change */ aso_quote_pub.qte_line_tbl_type,
109 x_return_status OUT NOCOPY /* file.sql.39 change */ varchar2,
110 x_msg_count OUT NOCOPY /* file.sql.39 change */ number,
111 x_msg_data OUT NOCOPY /* file.sql.39 change */ varchar2
112 )
113 IS
114
115 l_api_name CONSTANT VARCHAR2(30) := 'Split_Quote_line';
116 l_api_version_number NUMBER := 1.0;
117 l_file VARCHAR2(300);
118 l_config_header_id NUMBER;
119 l_serviceable_item VARCHAR2(1) := FND_API.G_FALSE;
120 l_call_do_split_line VARCHAR2(1) := FND_API.G_FALSE;
121 l_quote_header_id NUMBER;
122 l_call_lock_exist VARCHAR2(1) := FND_API.G_FALSE;
123 l_x_status VARCHAR2(1);
124
125 l_qte_line_rec ASO_QUOTE_PUB.Qte_Line_Rec_Type := ASO_QUOTE_PUB.G_MISS_QTE_LINE_REC;
126 l_qte_line_dtl_tbl ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type := ASO_QUOTE_PUB.G_MISS_QTE_LINE_DTL_TBL;
127
128 lx_qte_line_tbl ASO_QUOTE_PUB.Qte_Line_Tbl_Type;
129
130 l_split_model_line VARCHAR2(1) := FND_API.G_FALSE;
131
132 Cursor c_config_exist is
133 select config_header_id
134 from aso_quote_line_details
135 where quote_line_id = p_original_qte_line_rec.quote_line_id;
136
137 cursor c_quote_header_id is
138 select quote_header_id
139 from aso_quote_lines_all
140 where quote_line_id = p_original_qte_line_rec.quote_line_id;
141
142 Begin
143
144 aso_debug_pub.g_debug_flag := nvl(fnd_profile.value('ASO_ENABLE_DEBUG'),'N');
145
146
147 --Standard Start of API savepoint
148 SAVEPOINT SPLIT_QUOTE_LINE_INT;
149
150 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
151
152 aso_debug_pub.add('ASO_SPLIT_LINE_INT: Begin Split_Quote_line', 1, 'Y');
153 aso_debug_pub.add('P_Qte_Header_Rec.pricing_status_indicator: '||P_Qte_Header_Rec.pricing_status_indicator, 1, 'Y');
154 aso_debug_pub.add('P_Qte_Header_Rec.tax_status_indicator: '||P_Qte_Header_Rec.tax_status_indicator, 1, 'Y');
155 aso_debug_pub.add('P_Qte_Header_Rec.quote_header_id: '||P_Qte_Header_Rec.quote_header_id, 1, 'Y');
156 aso_debug_pub.add('P_Qte_Header_Rec.last_update_date: '||P_Qte_Header_Rec.last_update_date, 1, 'Y');
157 aso_debug_pub.add('P_Qte_Header_Rec.price_updated_date: '||P_Qte_Header_Rec.price_updated_date, 1, 'Y');
158 aso_debug_pub.add('P_Qte_Header_Rec.tax_updated_date: '||P_Qte_Header_Rec.tax_updated_date, 1, 'Y');
159 aso_debug_pub.add('P_Qte_Header_Rec.recalculate_flag: '||P_Qte_Header_Rec.recalculate_flag, 1, 'Y');
160 aso_debug_pub.add('P_Control_Rec.pricing_request_type: '||P_Control_Rec.pricing_request_type, 1, 'Y');
161 aso_debug_pub.add('P_Control_Rec.header_pricing_event: '||P_Control_Rec.header_pricing_event, 1, 'Y');
162 aso_debug_pub.add('P_Control_Rec.line_pricing_event: '||P_Control_Rec.line_pricing_event, 1, 'Y');
163 aso_debug_pub.add('P_Control_Rec.CALCULATE_TAX_FLAG: '||P_Control_Rec.CALCULATE_TAX_FLAG, 1, 'Y');
164 aso_debug_pub.add('P_Control_Rec.CALCULATE_FREIGHT_CHARGE_FLAG: '||P_Control_Rec.CALCULATE_FREIGHT_CHARGE_FLAG, 1, 'Y');
165 aso_debug_pub.add('P_Control_Rec.PRICE_MODE: '||P_Control_Rec.PRICE_MODE, 1, 'Y');
166
167 END IF;
168
169 --Initialize API return status to SUCCESS
170 x_return_status := FND_API.G_RET_STS_SUCCESS;
171
172 --Standard call to check for call compatibility.
173 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
174 p_api_version_number,
175 l_api_name,
176 G_PKG_NAME) THEN
177
178 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
179
180 END IF;
181
182 --Initialize message list if p_init_msg_list is set to TRUE.
183 IF FND_API.to_Boolean( p_init_msg_list ) THEN
184
185 FND_MSG_PUB.initialize;
186
187 END IF;
188
189 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
190
191 aso_debug_pub.add('Split_Quote_line: p_qte_header_rec.quote_header_id: '|| p_qte_header_rec.quote_header_id);
192 aso_debug_pub.add('Split_Quote_line: p_original_qte_line_rec.quote_line_id: '|| p_original_qte_line_rec.quote_line_id);
193
194 END IF;
195
196 IF p_qte_header_rec.quote_header_id is not null OR
197 p_qte_header_rec.quote_header_id <> fnd_api.g_miss_num THEN
198
199 l_call_lock_exist := fnd_api.g_true;
200 l_quote_header_id := p_qte_header_rec.quote_header_id;
201
202 ELSIF p_original_qte_line_rec.quote_line_id is not null OR
203 p_original_qte_line_rec.quote_line_id <> fnd_api.g_miss_num THEN
204
205 open c_quote_header_id;
206 fetch c_quote_header_id into l_quote_header_id;
207
208 IF c_quote_header_id%found and l_quote_header_id is not null THEN
209 l_call_lock_exist := fnd_api.g_true;
210 END IF;
211
212 close c_quote_header_id;
213
214 IF aso_debug_pub.g_debug_flag = 'Y' THEN
215 aso_debug_pub.add('split_quote_line: l_quote_header_id: '|| l_quote_header_id);
216 END IF;
217
218 ELSE
219
220 IF aso_debug_pub.g_debug_flag = 'Y' THEN
221 aso_debug_pub.add('Split_Quote_line: Both quote_header_id and quote_line_id is null
222 or g_miss_num');
223 END IF;
224
225 END IF;
226
227 IF aso_debug_pub.g_debug_flag = 'Y' THEN
228 aso_debug_pub.add('split_quote_line: l_call_lock_exist: '|| l_call_lock_exist);
229 END IF;
230
231 IF l_call_lock_exist = fnd_api.g_true THEN
232
233 aso_conc_req_int.lock_exists( p_quote_header_id => l_quote_header_id,
234 x_status => l_x_status );
235
236 IF aso_debug_pub.g_debug_flag = 'Y' THEN
237 aso_debug_pub.add('split_quote_line: l_x_status: '|| l_x_status);
238 END IF;
239
240 if l_x_status = fnd_api.g_true then
241
242 if fnd_msg_pub.check_msg_level (fnd_msg_pub.g_msg_lvl_error) then
243 fnd_message.set_name('ASO', 'ASO_CONC_REQUEST_RUNNING');
244 fnd_msg_pub.add;
245 end if;
246
247 x_return_status := fnd_api.g_ret_sts_error;
248 raise fnd_api.g_exc_error;
249
250 end if;
251
252 END IF;
253
254 IF p_original_qte_line_rec.quote_line_id is null OR
255 p_original_qte_line_rec.quote_line_id = FND_API.G_MISS_NUM THEN
256
257 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
258 aso_debug_pub.add('Split_Quote_line: p_original_qte_line_rec.quote_line_id is null or G_MISS_NUM');
259 END IF;
260
261 x_return_status := FND_API.G_RET_STS_ERROR;
262
263 IF FND_MSG_PUB.Check_Msg_Level( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
264
265 FND_MESSAGE.Set_Name ('ASO', 'ASO_API_INVALID_ID');
266 FND_MESSAGE.Set_Token('COLUMN', 'quote_line_id', FALSE);
267 FND_MESSAGE.Set_Token('VALUE', p_original_qte_line_rec.quote_line_id, FALSE);
268 FND_MSG_PUB.ADD;
269
270 END IF;
271
272 RAISE FND_API.G_EXC_ERROR;
273
274 ELSIF p_qte_line_tbl.count = 0 THEN
275
276 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
277 aso_debug_pub.add('Split_Quote_line: p_qte_line_tbl.count: '|| p_qte_line_tbl.count);
278 END IF;
279
280 x_return_status := FND_API.G_RET_STS_ERROR;
281
282 IF FND_MSG_PUB.Check_Msg_Level( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
283
284 FND_MESSAGE.Set_Name ('ASO', 'ASO_ERR_NO_REC');
285 FND_MESSAGE.Set_Token('TBLNAME', 'p_qte_line_tbl', FALSE);
286 FND_MSG_PUB.ADD;
287
288 END IF;
289
290 RAISE FND_API.G_EXC_ERROR;
291
292 ELSIF p_qte_line_tbl.count = 1 AND p_qte_line_tbl(1).quantity <= 0 THEN
293
294 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
295 aso_debug_pub.add('Split_Quote_line: Only one record in p_qte_line_tbl with zero line quantity');
296 END IF;
297
298 x_return_status := FND_API.G_RET_STS_ERROR;
299
300 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
301
302 FND_MESSAGE.Set_Name ('ASO', 'ASO_ERR_SPLITLINE_QTY');
303 FND_MESSAGE.Set_Token('TBLNAME', 'p_qte_line_tbl', FALSE);
304 FND_MESSAGE.Set_Token('VALUE', p_qte_line_tbl(1).quantity, FALSE);
305 FND_MSG_PUB.ADD;
306
307 END IF;
308
309 RAISE FND_API.G_EXC_ERROR;
310
311 ELSE
312
313 l_qte_line_rec := ASO_UTILITY_PVT.Query_Qte_Line_Row(p_original_qte_line_rec.quote_line_id);
314
315 IF l_qte_line_rec.line_category_code = 'RETURN' THEN
316
317 l_qte_line_dtl_tbl := ASO_UTILITY_PVT.Query_Line_Dtl_Rows(l_qte_line_rec.quote_line_id);
318
319 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
320 aso_debug_pub.add('Split_Quote_Line: l_qte_line_dtl_tbl.count: '||l_qte_line_dtl_tbl.count);
321 END IF;
322
323 IF l_qte_line_dtl_tbl.count > 0 AND
324 l_qte_line_dtl_tbl(1).return_ref_type = 'SALES ORDER' AND
325 l_qte_line_dtl_tbl(1).return_ref_line_id is not null AND
326 l_qte_line_dtl_tbl(1).instance_id is not null THEN
327
328 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
329 aso_debug_pub.add('Quote line created from install base having line_category_code = RETURN and refer to an order, can not be spilted.');
330 END IF;
331
332 x_return_status := FND_API.G_RET_STS_ERROR;
333
334 IF FND_MSG_PUB.Check_Msg_Level( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
335
336 FND_MESSAGE.Set_Name('ASO', 'ASO_API_CANNOT_SPLIT');
337 FND_MSG_PUB.ADD;
338
339 END IF;
340
341 RAISE FND_API.G_EXC_ERROR;
342
343 END IF;
344
345 END IF;
346
347 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
348 aso_debug_pub.add('Split_Quote_line: After querying quote line row');
349 END IF;
350
351 IF l_qte_line_rec.item_type_code = 'CFG' THEN
352
353 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
354 aso_debug_pub.add('Split_Quote_line: Quote line item type code is CFG split of this line is not allowed', 1, 'N');
355 END IF;
356
357 x_return_status := FND_API.G_RET_STS_ERROR;
358
359 IF FND_MSG_PUB.Check_Msg_Level( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
360
361 FND_MESSAGE.Set_Name('ASO', 'ASO_API_CANNOT_SPLIT');
362 FND_MSG_PUB.ADD;
363
364 END IF;
365
366 RAISE FND_API.G_EXC_ERROR;
367
368 ELSIF l_qte_line_rec.item_type_code = 'MDL' THEN
369
370 OPEN c_config_exist;
371 FETCH c_config_exist INTO l_config_header_id;
372
373 IF c_config_exist%FOUND AND l_config_header_id is not null THEN
374
375 CLOSE c_config_exist;
376
377 --Calling the split_model_line API in Copy_Quote
378
379 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
380 aso_debug_pub.add('Calling the Split Model Line API in Copy Quote',1,'N');
381 END IF;
382
383 aso_copy_quote_pvt.split_model_line (
384 p_api_version_number => p_api_version_number,
385 p_init_msg_list => fnd_api.g_false,
386 p_commit => fnd_api.g_false,
387 p_control_rec => p_control_rec,
388 p_qte_header_rec => p_qte_header_rec,
389 p_original_qte_line_rec => l_qte_line_rec,
390 p_qte_line_tbl => p_qte_line_tbl,
391 x_quote_line_tbl => lx_qte_line_tbl,
392 x_return_status => x_return_status,
393 x_msg_count => x_msg_count,
394 x_msg_data => x_msg_data );
395
396 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
397 aso_debug_pub.add('After call to the Split Model Line API in Copy Quote',1,'N');
398 aso_debug_pub.add('Split_Quote_line: x_return_status: '|| x_return_status );
399 END IF;
400
401 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
402
403 x_return_status := FND_API.G_RET_STS_ERROR;
404 RAISE FND_API.G_EXC_ERROR;
405
406 END IF;
407
408 l_split_model_line := FND_API.G_TRUE;
409
410 ELSE
411
412 CLOSE c_config_exist;
413
414 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
415 aso_debug_pub.add('Split_Quote_line: Model item but not configured');
416 END IF;
417
418 l_call_do_split_line := FND_API.G_TRUE;
419
420 END IF;
421
422 END IF;
423
424
425 IF l_qte_line_rec.service_item_flag = 'Y' THEN
426
427 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
428 aso_debug_pub.add('Split_Quote_line: Split of service item line is not allowed');
429 END IF;
430
431 x_return_status := FND_API.G_RET_STS_ERROR;
432
433 IF FND_MSG_PUB.Check_Msg_Level( FND_MSG_PUB.G_MSG_LVL_ERROR ) THEN
434
435 FND_MESSAGE.Set_Name('ASO', 'ASO_API_CANNOT_SPLIT');
436 FND_MSG_PUB.ADD;
437
438 END IF;
439
440 RAISE FND_API.G_EXC_ERROR;
441
442 ELSIF l_qte_line_rec.serviceable_product_flag = 'Y' THEN
443
444 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
445 aso_debug_pub.add('Split_Quote_line: Serviceable item line');
446 END IF;
447
448 l_serviceable_item := FND_API.G_TRUE;
449 l_call_do_split_line := FND_API.G_TRUE;
450
451 ELSE
452
453 l_call_do_split_line := FND_API.G_TRUE;
454
455 END IF;
456
457
458 IF l_call_do_split_line = FND_API.G_TRUE AND l_split_model_line = FND_API.G_FALSE THEN
459
460 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
461 aso_debug_pub.add('Split_Quote_line: Before call to Do_Split_line');
462 END IF;
463
464 Do_Split_line( p_qte_header_rec => p_qte_header_rec,
465 p_control_rec => p_control_rec,
466 p_original_qte_line_rec => l_qte_line_rec,
467 p_serviceable_item => l_serviceable_item,
468 p_qte_line_tbl => p_qte_line_tbl,
469 p_ln_shipment_tbl => p_ln_shipment_tbl,
470 p_commit => fnd_api.g_false,
471 x_qte_line_tbl => lx_qte_line_tbl,
472 x_return_status => x_return_status,
473 x_msg_count => x_msg_count,
474 x_msg_data => x_msg_data
475 );
476
477 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
478 aso_debug_pub.add('Split_Quote_line: After call to Do_Split_line');
479 aso_debug_pub.add('Split_Quote_line: After call to Do_Split_line: x_return_status: '|| x_return_status);
480 END IF;
481
482 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
483
484 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
485 aso_debug_pub.add('Split_Quote_Line: Error in Do_Split_Line');
486 END IF;
487
488 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
489
490 RAISE FND_API.G_EXC_ERROR;
491
492 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
493
494 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
495
496 END IF;
497
498 END IF;
499
500 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
501 aso_debug_pub.add('Split_Quote_line: l_qte_line_rec.quote_line_id: '|| l_qte_line_rec.quote_line_id);
502 END IF;
503
504 ELSE
505
506 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
507 aso_debug_pub.add('Split_Quote_line: No call to Do_Split_line', 1, 'N');
508 END IF;
509
510 END IF;
511
512 END IF;
513
514 X_Qte_Line_Tbl := lx_Qte_Line_Tbl;
515
516 --Standard check for p_commit
517
518 IF FND_API.to_Boolean( p_commit ) THEN
519
520 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
521 aso_debug_pub.add('Split_Quote_line: Commiting work.', 1, 'N');
522 END IF;
523 COMMIT;
524
525 END IF;
526
527 --Standard call to get message count and if count is 1, get message info.
528
529 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count,
530 p_data => x_msg_data );
531
532 EXCEPTION
533
534 WHEN FND_API.G_EXC_ERROR THEN
535
536 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
537 aso_debug_pub.add('Split_Quote_line: WHEN FND_API.G_EXC_ERROR', 1, 'N');
538 END IF;
539
540 ASO_UTILITY_PVT.HANDLE_EXCEPTIONS( P_API_NAME => L_API_NAME,
541 P_PKG_NAME => G_PKG_NAME,
542 P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR,
543 P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_INT,
544 X_MSG_COUNT => X_MSG_COUNT,
545 X_MSG_DATA => X_MSG_DATA,
546 X_RETURN_STATUS => X_RETURN_STATUS);
547
548 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
549
550 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
551 aso_debug_pub.add('Split_Quote_line: WHEN FND_API.G_EXC_UNEXPECTED_ERROR', 1, 'N');
552 END IF;
553
554 ASO_UTILITY_PVT.HANDLE_EXCEPTIONS( P_API_NAME => L_API_NAME,
555 P_PKG_NAME => G_PKG_NAME,
556 P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR,
557 P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_INT,
558 X_MSG_COUNT => X_MSG_COUNT,
559 X_MSG_DATA => X_MSG_DATA,
560 X_RETURN_STATUS => X_RETURN_STATUS);
561
562
563 WHEN OTHERS THEN
564
565 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
566 aso_debug_pub.add('Split_Quote_line: WHEN OTHERS', 1, 'N');
567 END IF;
568
569 ASO_UTILITY_PVT.HANDLE_EXCEPTIONS( P_API_NAME => L_API_NAME,
570 P_PKG_NAME => G_PKG_NAME,
571 P_SQLERRM => SQLERRM,
572 P_SQLCODE => SQLCODE,
573 P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS,
574 P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_INT,
575 X_MSG_COUNT => X_MSG_COUNT,
576 X_MSG_DATA => X_MSG_DATA,
577 X_RETURN_STATUS => X_RETURN_STATUS);
578
579 End Split_Quote_line;
580
581
582 PROCEDURE Do_Split_line (
583 p_qte_header_rec IN ASO_QUOTE_PUB.Qte_Header_Rec_Type,
584 p_control_rec IN aso_quote_pub.control_rec_type,
585 p_original_qte_line_rec IN ASO_QUOTE_PUB.Qte_Line_Rec_Type,
586 p_serviceable_item IN VARCHAR2 := FND_API.G_FALSE,
587 P_Qte_Line_Tbl IN ASO_QUOTE_PUB.Qte_Line_Tbl_Type,
588 P_ln_Shipment_Tbl IN ASO_QUOTE_PUB.Shipment_Tbl_Type,
589 p_commit IN VARCHAR2,
590 X_Qte_Line_Tbl OUT NOCOPY /* file.sql.39 change */ ASO_QUOTE_PUB.Qte_Line_Tbl_Type,
591 X_Return_Status OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
592 X_Msg_Count OUT NOCOPY /* file.sql.39 change */ NUMBER,
593 X_Msg_Data OUT NOCOPY /* file.sql.39 change */ VARCHAR2
594 )
595 IS
596
597 cursor get_service_lines (p_service_ref_line_id number) is
598 select quote_line_id from aso_quote_line_details
599 where service_ref_line_id = p_service_ref_line_id
600 and service_ref_type_code = 'QUOTE';
601
602
603 --l_control_rec ASO_QUOTE_PUB.Control_Rec_Type;
604 --l_qte_header_rec ASO_QUOTE_PUB.Qte_Header_Rec_Type := ASO_QUOTE_PUB.G_Miss_Qte_Header_Rec;
605 l_qte_line_rec ASO_QUOTE_PUB.Qte_Line_Rec_Type := p_original_qte_line_rec;
606 l_srv_qte_line_rec ASO_QUOTE_PUB.Qte_Line_Rec_Type;
607 l_qte_line_tbl ASO_QUOTE_PUB.Qte_Line_Tbl_Type := ASO_QUOTE_PUB.G_MISS_QTE_LINE_TBL;
608 l_map_qte_line_tbl ASO_QUOTE_PUB.Qte_Line_Tbl_Type := ASO_QUOTE_PUB.G_MISS_QTE_LINE_TBL;
609
610 l_ln_shipment_rec ASO_QUOTE_PUB.Shipment_Rec_Type := ASO_QUOTE_PUB.G_MISS_SHIPMENT_REC;
611 l_ln_Shipment_Tbl ASO_QUOTE_PUB.Shipment_Tbl_Type := ASO_QUOTE_PUB.G_MISS_SHIPMENT_TBL;
612 l_srv_ln_Shipment_Tbl ASO_QUOTE_PUB.Shipment_Tbl_Type := ASO_QUOTE_PUB.G_MISS_SHIPMENT_TBL;
613 l_qte_line_dtl_tbl ASO_QUOTE_PUB.qte_line_dtl_tbl_Type := ASO_QUOTE_PUB.G_MISS_QTE_LINE_DTL_TBL;
614 l_srv_qte_line_dtl_tbl ASO_QUOTE_PUB.qte_line_dtl_tbl_Type := ASO_QUOTE_PUB.G_MISS_QTE_LINE_DTL_TBL;
615 l_qte_line_dtl_rec ASO_QUOTE_PUB.qte_line_dtl_rec_Type := ASO_QUOTE_PUB.G_MISS_QTE_LINE_DTL_REC;
616 l_payment_tbl ASO_QUOTE_PUB.payment_tbl_Type := ASO_QUOTE_PUB.G_MISS_PAYMENT_TBL;
617 l_srv_payment_tbl ASO_QUOTE_PUB.payment_tbl_Type := ASO_QUOTE_PUB.G_MISS_PAYMENT_TBL;
618 l_payment_rec ASO_QUOTE_PUB.payment_rec_Type := ASO_QUOTE_PUB.G_MISS_PAYMENT_REC;
619 l_sales_credit_tbl ASO_QUOTE_PUB.sales_credit_tbl_Type := ASO_QUOTE_PUB.G_MISS_SALES_CREDIT_TBL;
620 l_srv_sales_credit_tbl ASO_QUOTE_PUB.sales_credit_tbl_Type := ASO_QUOTE_PUB.G_MISS_SALES_CREDIT_TBL;
621 l_sales_credit_rec ASO_QUOTE_PUB.sales_credit_rec_Type := ASO_QUOTE_PUB.G_MISS_SALES_CREDIT_REC;
622 l_price_attr_tbl ASO_QUOTE_PUB.Price_Attributes_Tbl_Type
623 := ASO_QUOTE_PUB.G_MISS_PRICE_ATTRIBUTES_TBL;
624 l_srv_price_attr_tbl ASO_QUOTE_PUB.Price_Attributes_Tbl_Type
625 := ASO_QUOTE_PUB.G_MISS_PRICE_ATTRIBUTES_TBL;
626 l_price_attr_rec ASO_QUOTE_PUB.Price_Attributes_Rec_Type
627 := ASO_QUOTE_PUB.G_MISS_PRICE_ATTRIBUTES_REC;
628 l_price_adj_tbl ASO_QUOTE_PUB.Price_Adj_Tbl_Type := ASO_QUOTE_PUB.G_MISS_PRICE_ADJ_TBL;
629 l_srv_price_adj_tbl ASO_QUOTE_PUB.Price_Adj_Tbl_Type := ASO_QUOTE_PUB.G_MISS_PRICE_ADJ_TBL;
630 l_price_adj_rec ASO_QUOTE_PUB.Price_Adj_Rec_Type := ASO_QUOTE_PUB.G_MISS_PRICE_ADJ_REC;
631
632 l_price_adj_rltship_tbl ASO_QUOTE_PUB.Price_Adj_Rltship_Tbl_Type := ASO_QUOTE_PUB.G_MISS_Price_Adj_Rltship_TBL;
633 l_srv_price_adj_rltship_tbl ASO_QUOTE_PUB.Price_Adj_Rltship_Tbl_Type := ASO_QUOTE_PUB.G_MISS_Price_Adj_Rltship_TBL;
634 l_price_adj_rltship_rec ASO_QUOTE_PUB.Price_Adj_Rltship_Rec_Type := ASO_QUOTE_PUB.G_MISS_Price_Adj_Rltship_REC;
635
636 l_price_adj_attr_tbl ASO_QUOTE_PUB.PRICE_ADJ_ATTR_Tbl_Type := ASO_QUOTE_PUB.G_MISS_PRICE_ADJ_ATTR_TBL;
637 l_srv_price_adj_attr_tbl ASO_QUOTE_PUB.PRICE_ADJ_ATTR_Tbl_Type := ASO_QUOTE_PUB.G_MISS_PRICE_ADJ_ATTR_TBL;
638 l_price_adj_attr_rec ASO_QUOTE_PUB.PRICE_ADJ_ATTR_Rec_Type := ASO_QUOTE_PUB.G_MISS_PRICE_ADJ_ATTR_REC;
639
640 l_to_create_sales_credit_tbl ASO_QUOTE_PUB.sales_credit_tbl_Type := ASO_QUOTE_PUB.G_MISS_SALES_CREDIT_TBL;
641 l_to_create_payment_tbl ASO_QUOTE_PUB.Payment_Tbl_Type := ASO_QUOTE_PUB.G_MISS_PAYMENT_TBL;
642 l_to_create_quote_line_tbl ASO_QUOTE_PUB.Qte_Line_Tbl_Type := ASO_QUOTE_PUB.G_MISS_QTE_LINE_TBL;
643 l_to_create_quote_line_rec ASO_QUOTE_PUB.Qte_Line_Rec_Type := ASO_QUOTE_PUB.G_MISS_QTE_LINE_REC;
644 l_to_create_shipment_tbl ASO_QUOTE_PUB.Shipment_Tbl_Type := ASO_QUOTE_PUB.G_MISS_SHIPMENT_TBL;
645 l_to_create_shipment_rec ASO_QUOTE_PUB.Shipment_Rec_Type := ASO_QUOTE_PUB.G_MISS_SHIPMENT_REC;
646 l_to_create_qte_line_dtl_tbl ASO_QUOTE_PUB.qte_line_dtl_tbl_Type := ASO_QUOTE_PUB.G_MISS_QTE_LINE_DTL_TBL;
647 l_to_create_price_attr_tbl ASO_QUOTE_PUB.Price_Attributes_Tbl_Type
648 := ASO_QUOTE_PUB.G_MISS_PRICE_ATTRIBUTES_TBL;
649 l_to_create_price_adj_tbl ASO_QUOTE_PUB.Price_Adj_Tbl_Type := ASO_QUOTE_PUB.G_MISS_PRICE_ADJ_TBL;
650 l_create_price_adj_rltn_tbl ASO_QUOTE_PUB.Price_Adj_Rltship_Tbl_Type := ASO_QUOTE_PUB.G_MISS_Price_Adj_Rltship_TBL;
651 l_create_price_adj_attr_tbl ASO_QUOTE_PUB.PRICE_ADJ_ATTR_Tbl_Type := ASO_QUOTE_PUB.G_MISS_PRICE_ADJ_ATTR_TBL;
652
653 l_search_index search_tbl_type;
654
655 l_ln_quantity_before_spilt NUMBER;
656
657 -- Output parameters
658 lx_qte_header_rec ASO_QUOTE_PUB.Qte_Header_Rec_Type;
659 lx_qte_line_tbl ASO_QUOTE_PUB.Qte_Line_Tbl_Type;
660 lx_qte_line_dtl_tbl ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type;
661 lx_hd_price_attr_tbl ASO_QUOTE_PUB.Price_Attributes_tbl_Type;
662 lx_hd_payment_tbl ASO_QUOTE_PUB.payment_tbl_type;
663 lx_hd_shipment_tbl ASO_QUOTE_PUB.shipment_tbl_type;
664 lx_hd_freight_charge_tbl ASO_QUOTE_PUB.Freight_Charge_Tbl_Type;
665 lx_hd_tax_detail_tbl ASO_QUOTE_PUB.Tax_Detail_Tbl_Type;
666 lx_line_attr_ext_tbl ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type;
667 lx_line_rltship_tbl ASO_QUOTE_PUB.Line_Rltship_Tbl_Type;
668 lx_price_adjustment_tbl ASO_QUOTE_PUB.Price_Adj_Tbl_Type;
669 lx_price_adj_attr_tbl ASO_QUOTE_PUB.Price_Adj_Attr_Tbl_type;
670 lx_price_adj_rltship_tbl ASO_QUOTE_PUB.Price_Adj_rltship_Tbl_Type;
671 lx_ln_price_attr_tbl ASO_QUOTE_PUB.Price_Attributes_Tbl_type;
672 lx_ln_payment_tbl ASO_QUOTE_PUB.Payment_Tbl_Type;
673 lx_ln_shipment_tbl ASO_QUOTE_PUB.Shipment_Tbl_Type;
674 lx_ln_freight_charge_tbl ASO_QUOTE_PUB.Freight_Charge_Tbl_Type;
675 lx_ln_tax_detail_tbl ASO_QUOTE_PUB.Tax_Detail_Tbl_type;
676 lx_ln_sales_credit_tbl ASO_QUOTE_PUB.sales_credit_tbl_Type;
677 lx_hd_sales_credit_tbl ASO_QUOTE_PUB.Sales_Credit_Tbl_Type;
678 lx_hd_Attr_Ext_Tbl ASO_QUOTE_PUB.Line_Attribs_Ext_Tbl_Type;
679 lx_hd_Quote_Party_Tbl ASO_QUOTE_PUB.Quote_Party_Tbl_Type;
680 lx_Ln_Quote_Party_Tbl ASO_QUOTE_PUB.Quote_Party_Tbl_Type;
681
682 l_srv_line_index NUMBER := P_Qte_Line_Tbl.count + 1;
683 l_line_count NUMBER := P_Qte_Line_Tbl.count + 1;
684 l_api_name CONSTANT VARCHAR2(30) := 'Do_Split_line';
685
686 l_line_index_link_tbl ASO_QUOTE_HEADERS_PVT.Index_Link_Tbl_Type;
687 l_control_rec ASO_QUOTE_PUB.Control_Rec_Type;
688 l_orig_payment_tbl ASO_QUOTE_PUB.payment_tbl_Type := ASO_QUOTE_PUB.G_MISS_PAYMENT_TBL;
689 l_orig_line_deleted varchar2(1) := 'N';
690
691 Begin
692
693 --Standard Start of API savepoint
694 SAVEPOINT DO_SPLIT_LINE_INT;
695
696 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
697 aso_debug_pub.add('ASO_SPLIT_LINE_INT: Begin Do_Split_Line procedure', 1, 'Y');
698 END IF;
699
700 x_return_status := fnd_api.g_ret_sts_success;
701
702 /*
703 l_qte_header_rec := aso_utility_pvt.query_header_row(l_qte_line_rec.quote_header_id);
704
705 IF aso_debug_pub.g_debug_flag = 'Y' THEN
706 aso_debug_pub.add('Do_Split_Line: After querying quote header row', 1, 'N');
707 END IF;
708 */
709
710 l_ln_quantity_before_spilt := l_qte_line_rec.quantity;
711 l_ln_Shipment_Tbl := aso_utility_pvt.Query_Shipment_Rows(l_qte_line_rec.quote_header_id,
712 l_qte_line_rec.quote_line_id);
713
714 IF aso_debug_pub.g_debug_flag = 'Y' THEN
715 aso_debug_pub.add('Do_Split_Line: After querying shipment rows', 1, 'N');
716 END IF;
717
718 l_qte_line_dtl_tbl := aso_utility_pvt.query_line_dtl_rows(l_qte_line_rec.quote_line_id);
719 /* l_payment_tbl := aso_utility_pvt.query_payment_rows(l_qte_line_rec.quote_header_id,
720 l_qte_line_rec.quote_line_id); */
721 l_sales_credit_tbl := aso_utility_pvt.query_sales_credit_row(l_qte_line_rec.quote_header_id,
722 l_qte_line_rec.quote_line_id);
723 l_price_attr_tbl := aso_utility_pvt.query_price_attr_rows(l_qte_line_rec.quote_header_id,
724 l_qte_line_rec.quote_line_id);
725 l_price_adj_tbl := aso_utility_pvt.query_price_adj_nonPRG_rows(l_qte_line_rec.quote_header_id,
726 l_qte_line_rec.quote_line_id);
727 l_price_adj_rltship_tbl := aso_utility_pvt.Query_Price_Adj_Rltn_Rows(l_qte_line_rec.quote_line_id);
728 l_price_adj_attr_tbl := aso_utility_pvt.Query_Price_Adj_Attr_Rows(l_price_adj_tbl);
729
730 FOR i IN 1 .. P_Qte_Line_Tbl.count LOOP
731
732 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
733 aso_debug_pub.add('Do_Split_Line: Inside quote line loop', 1, 'N');
734 END IF;
735
736 IF (p_qte_line_tbl(i).quantity <= 0) OR (p_qte_line_tbl(i).quantity > l_qte_line_rec.quantity) THEN
737
738 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
739 aso_debug_pub.add('Do_Split_Line: Line quantity is <= 0 OR New quote line to be created qty > original line quantity', 1, 'N');
740 END IF;
741
742 x_return_status := FND_API.G_RET_STS_ERROR;
743
744 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
745 FND_MESSAGE.Set_Name('ASO', 'ASO_ERR_SPLITLINE_QTY');
746 FND_MSG_PUB.ADD;
747 END IF;
748
749 RAISE FND_API.G_EXC_ERROR;
750
751 ELSE
752
753 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
754 aso_debug_pub.add('Do_Split_Line: Inside quote line loop Line quantity Else condition', 1, 'N');
755 END IF;
756
757 l_to_create_quote_line_rec := l_qte_line_rec;
758 l_to_create_quote_line_rec.quantity := p_qte_line_tbl(i).quantity;
759 l_to_create_quote_line_rec.operation_code := 'CREATE';
760 l_to_create_quote_line_rec.quote_line_id := FND_API.G_MISS_NUM;
761 l_to_create_quote_line_rec.line_number := FND_API.G_MISS_NUM;
762 l_to_create_quote_line_tbl(i) := l_to_create_quote_line_rec;
763 l_qte_line_rec.quantity := l_qte_line_rec.quantity - p_qte_line_tbl(i).quantity;
764 l_map_qte_line_tbl(i).quote_line_id := l_qte_line_rec.quote_line_id;
765
766 --Populate Shipment records
767
768 l_to_create_shipment_rec := l_ln_Shipment_Tbl(1);
769 l_to_create_shipment_rec.operation_code := 'CREATE';
770 l_to_create_shipment_rec.shipment_id := FND_API.G_MISS_NUM;
771 l_to_create_shipment_rec.quote_line_id := FND_API.G_MISS_NUM;
772 l_to_create_shipment_rec.qte_line_index := i;
773 l_to_create_shipment_rec.quantity := l_to_create_quote_line_rec.quantity;
774
775
776 --Loop thru the input shipment table to check If the user has passed a input
777 --shipment rec for this line.
778
779 --If shipment line exist for the current quote line then check for the value
780 --of ship_to_cust_account_id,
781 --ship_to_party_site_id, ship_to_party_id, ship_method_code and shipping_instructions
782 --and override with the input value (If exist).
783
784 FOR j IN 1 .. P_ln_Shipment_Tbl.count LOOP
785
786 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
787 aso_debug_pub.add('Do_Split_Line: Inside shipment loop', 1, 'N');
788 END IF;
789
790 IF P_ln_Shipment_Tbl(j).qte_line_index = i THEN
791
792 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
793 aso_debug_pub.add('Do_Split_Line: Inside shipment loop, shipment record exist for given line ');
794 END IF;
795
796 IF P_ln_Shipment_Tbl(j).ship_to_cust_account_id <> FND_API.G_MISS_NUM THEN
797
798 l_to_create_shipment_rec.ship_to_cust_account_id := P_ln_Shipment_Tbl(j).ship_to_cust_account_id;
799 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
800 aso_debug_pub.add('Do_Split_Line: l_to_create_shipment_rec.ship_to_cust_account_id :'||l_to_create_shipment_rec.ship_to_cust_account_id);
801 END IF;
802
803 END IF;
804
805
806 IF P_ln_Shipment_Tbl(j).ship_to_party_site_id <> FND_API.G_MISS_NUM THEN
807
808 l_to_create_shipment_rec.ship_to_party_site_id := P_ln_Shipment_Tbl(j).ship_to_party_site_id;
809 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
810 aso_debug_pub.add('Do_Split_Line: l_to_create_shipment_rec.ship_to_party_site_id :'||l_to_create_shipment_rec.ship_to_party_site_id);
811 END IF;
812
813 END IF;
814
815
816 IF P_ln_Shipment_Tbl(j).ship_to_party_id <> FND_API.G_MISS_NUM THEN
817
818 l_to_create_shipment_rec.ship_to_party_id := P_ln_Shipment_Tbl(j).ship_to_party_id;
819
820 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
821 aso_debug_pub.add('Do_Split_Line: l_to_create_shipment_rec.ship_to_party_id :'||l_to_create_shipment_rec.ship_to_party_id);
822 END IF;
823
824 END IF;
825
826
827 IF P_ln_Shipment_Tbl(j).ship_method_code <> FND_API.G_MISS_CHAR THEN
828
829 l_to_create_shipment_rec.ship_method_code := P_ln_Shipment_Tbl(j).ship_method_code;
830 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
831 aso_debug_pub.add('Do_Split_Line: l_to_create_shipment_rec.ship_method_code :'||l_to_create_shipment_rec.ship_method_code);
832 END IF;
833
834 END IF;
835
836
837 IF P_ln_Shipment_Tbl(j).shipping_instructions <> FND_API.G_MISS_CHAR THEN
838
839 l_to_create_shipment_rec.shipping_instructions := P_ln_Shipment_Tbl(j).shipping_instructions;
840 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
841 aso_debug_pub.add('Do_Split_Line: l_to_create_shipment_rec.shipping_instructions :'||l_to_create_shipment_rec.shipping_instructions);
842 END IF;
843
844 END IF;
845
846
847 IF P_ln_Shipment_Tbl(j).packing_instructions <> FND_API.G_MISS_CHAR THEN
848
849 l_to_create_shipment_rec.packing_instructions := P_ln_Shipment_Tbl(j).packing_instructions;
850 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
851 aso_debug_pub.add('Do_Split_Line: l_to_create_shipment_rec.packing_instructions :'||l_to_create_shipment_rec.packing_instructions);
852 END IF;
853
854 END IF;
855
856 END IF;
857
858 END LOOP;
859
860 l_to_create_shipment_tbl(nvl(l_to_create_shipment_tbl.count,0)+1) := l_to_create_shipment_rec;
861
862
863 --Populate quote line details records
864
865 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
866 aso_debug_pub.add('Do_Split_Line: l_qte_line_dtl_tbl.count :'||l_qte_line_dtl_tbl.count, 1, 'N');
867 END IF;
868
869 FOR k IN 1 .. l_qte_line_dtl_tbl.count LOOP
870
871 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
872 aso_debug_pub.add('Do_Split_Line: Inside l_qte_line_dtl_tbl loop', 1, 'N');
873 END IF;
874
875 l_qte_line_dtl_rec := l_qte_line_dtl_tbl(k);
876 l_qte_line_dtl_rec.operation_code := 'CREATE';
877 l_qte_line_dtl_rec.quote_line_detail_id := FND_API.G_MISS_NUM;
878 l_qte_line_dtl_rec.quote_line_id := FND_API.G_MISS_NUM;
879 l_qte_line_dtl_rec.qte_line_index := i;
880 l_qte_line_dtl_rec.service_ref_qte_line_index := FND_API.G_MISS_NUM;
881 l_qte_line_dtl_rec.service_ref_line_id := FND_API.G_MISS_NUM;
882
883 l_to_create_qte_line_dtl_tbl(nvl(l_to_create_qte_line_dtl_tbl.count,0)+1) := l_qte_line_dtl_rec;
884 END LOOP;
885
886 --Populate payment records
887 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
888 aso_debug_pub.add('Do_Split_Line: l_payment_tbl.count :'||l_payment_tbl.count, 1, 'N');
889 END IF;
890
891 /* FOR k IN 1 .. l_payment_tbl.count LOOP
892
893 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
894 aso_debug_pub.add('Do_Split_Line: Inside l_payment_tbl loop', 1, 'N');
895 END IF;
896
897 l_payment_rec := l_payment_tbl(k);
898 l_payment_rec.operation_code := 'CREATE';
899 l_payment_rec.payment_id := FND_API.G_MISS_NUM;
900 l_payment_rec.quote_line_id := FND_API.G_MISS_NUM;
901 l_payment_rec.quote_shipment_id := FND_API.G_MISS_NUM;
902 l_payment_rec.qte_line_index := i;
903 l_payment_rec.credit_card_approval_code := FND_API.G_MISS_CHAR;
904 l_payment_rec.credit_card_approval_date := FND_API.G_MISS_DATE;
905
906 l_to_create_payment_tbl(nvl(l_to_create_payment_tbl.count,0)+1) := l_payment_rec;
907
908 END LOOP; */
909
910 --Populate sales credit records
911
912 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
913 aso_debug_pub.add('Do_Split_Line: l_sales_credit_tbl.count :'||l_sales_credit_tbl.count, 1, 'N');
914 END IF;
915
916 FOR k IN 1 .. l_sales_credit_tbl.count LOOP
917
918 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
919 aso_debug_pub.add('Do_Split_Line: Inside l_sales_credit_tbl', 1, 'N');
920 END IF;
921
922 l_sales_credit_rec := l_sales_credit_tbl(k);
923 l_sales_credit_rec.operation_code := 'CREATE';
924 l_sales_credit_rec.sales_credit_id := FND_API.G_MISS_NUM;
925 l_sales_credit_rec.quote_line_id := FND_API.G_MISS_NUM;
926 l_sales_credit_rec.qte_line_index := i;
927
928 l_to_create_sales_credit_tbl(nvl(l_to_create_sales_credit_tbl.count,0)+1) := l_sales_credit_rec;
929 END LOOP;
930
931 --Populate price attributes records
932
933 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
934 aso_debug_pub.add('Do_Split_Line: l_price_attr_tbl.count :'||l_price_attr_tbl.count, 1, 'N');
935 END IF;
936
937 FOR k IN 1 .. l_price_attr_tbl.count LOOP
938
939 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
940 aso_debug_pub.add('Do_Split_Line: Inside l_price_attr_tbl loop', 1, 'N');
941 END IF;
942
943 l_price_attr_rec := l_price_attr_tbl(k);
944 l_price_attr_rec.operation_code := 'CREATE';
945 l_price_attr_rec.price_attribute_id := FND_API.G_MISS_NUM;
946 l_price_attr_rec.quote_line_id := FND_API.G_MISS_NUM;
947 l_price_attr_rec.qte_line_index := i;
948
949 l_to_create_price_attr_tbl(nvl(l_to_create_price_attr_tbl.count,0)+1) := l_price_attr_rec;
950
951 END LOOP;
952
953 --Populate price adjustments records
954 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
955 aso_debug_pub.add('Do_Split_Line: l_price_adj_tbl.count :'||l_price_adj_tbl.count, 1, 'N');
956 END IF;
957
958 FOR k IN 1 .. l_price_adj_tbl.count LOOP
959
960 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
961 aso_debug_pub.add('Do_Split_Line: Inside l_price_adj_tbl loop', 1, 'N');
962 aso_debug_pub.add('l_price_adj_tbl(k).modifier_line_type_code :'||l_price_adj_tbl(k).modifier_line_type_code, 1, 'N');
963 END IF;
964
965
966 l_price_adj_rec := l_price_adj_tbl(k);
967
968
969 l_search_index(l_price_adj_rec.price_adjustment_id) := nvl(l_to_create_price_adj_tbl.count,0)+1; --k;
970
971 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
972 aso_debug_pub.add('Do_Split_Line: l_search_index(' || l_price_adj_rec.price_adjustment_id || ')' || l_search_index(l_price_adj_rec.price_adjustment_id));
973 END IF;
974
975 l_price_adj_rec.operation_code := 'CREATE';
976 l_price_adj_rec.price_adjustment_id := FND_API.G_MISS_NUM;
977 l_price_adj_rec.creation_date := FND_API.G_MISS_DATE;
978 l_price_adj_rec.quote_line_id := FND_API.G_MISS_NUM;
979 l_price_adj_rec.quote_shipment_id := FND_API.G_MISS_NUM;
980 l_price_adj_rec.qte_line_index := i;
981 l_price_adj_rec.shipment_index := FND_API.G_MISS_NUM;
982
983 l_to_create_price_adj_tbl(nvl(l_to_create_price_adj_tbl.count,0)+1) := l_price_adj_rec;
984
985
986 END LOOP;
987
988 FOR k IN 1 .. l_price_adj_rltship_tbl.count LOOP
989
990 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
991 aso_debug_pub.add('Do_Split_Line: Inside l_price_adj_rltship_tbl loop', 1, 'N');
992 END IF;
993
994 l_price_adj_rltship_rec := l_price_adj_rltship_tbl(k);
995
996 IF l_search_index.exists(l_price_adj_rltship_rec.price_adjustment_id) THEN
997
998 IF l_search_index.exists(l_price_adj_rltship_rec.rltd_price_adj_id) THEN
999
1000 l_price_adj_rltship_rec.price_adj_index := l_search_index(l_price_adj_rltship_rec.price_adjustment_id);
1001 l_price_adj_rltship_rec.rltd_price_adj_index := l_search_index(l_price_adj_rltship_rec.rltd_price_adj_id);
1002
1003 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1004 aso_debug_pub.add('l_price_adj_rltship_rec.price_adj_index :'||l_price_adj_rltship_rec.price_adj_index, 1, 'N');
1005 aso_debug_pub.add('l_price_adj_rltship_rec.rltd_price_adj_index :'||l_price_adj_rltship_rec.rltd_price_adj_index, 1, 'N');
1006 END IF;
1007
1008 l_price_adj_rltship_rec.operation_code := 'CREATE';
1009 l_price_adj_rltship_rec.adj_relationship_id := fnd_api.g_miss_num;
1010 l_price_adj_rltship_rec.creation_date := fnd_api.g_miss_date;
1011 l_price_adj_rltship_rec.quote_line_id := fnd_api.g_miss_num;
1012 l_price_adj_rltship_rec.qte_line_index := i;
1013 l_price_adj_rltship_rec.quote_shipment_id := fnd_api.g_miss_num;
1014 l_price_adj_rltship_rec.price_adjustment_id := fnd_api.g_miss_num;
1015 l_price_adj_rltship_rec.rltd_price_adj_id := fnd_api.g_miss_num;
1016
1017 l_create_price_adj_rltn_tbl(nvl(l_create_price_adj_rltn_tbl.count,0)+1) := l_price_adj_rltship_rec;
1018
1019 END IF;
1020
1021 END IF;
1022
1023 END LOOP;
1024
1025
1026 FOR k IN 1 .. l_price_adj_attr_tbl.count LOOP
1027
1028 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1029 aso_debug_pub.add('Do_Split_Line: Inside l_price_adj_attr_tbl loop', 1, 'N');
1030 END IF;
1031
1032 l_price_adj_attr_rec := l_price_adj_attr_tbl(k);
1033
1034 IF l_search_index.exists(l_price_adj_attr_rec.price_adjustment_id) THEN
1035 l_price_adj_attr_rec.price_adj_index := l_search_index(l_price_adj_attr_rec.price_adjustment_id);
1036 END IF;
1037
1038 l_price_adj_attr_rec.operation_code := 'CREATE';
1039 l_price_adj_attr_rec.price_adj_attrib_id := fnd_api.g_miss_num;
1040 l_price_adj_attr_rec.creation_date := fnd_api.g_miss_date;
1041 l_price_adj_attr_rec.qte_line_index := i;
1042 l_price_adj_attr_rec.price_adjustment_id := fnd_api.g_miss_num;
1043
1044 l_create_price_adj_attr_tbl(nvl(l_create_price_adj_attr_tbl.count,0)+1) := l_price_adj_attr_rec;
1045
1046 END LOOP;
1047
1048 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1049 aso_debug_pub.add('Do_Split_Line: l_srv_line_index: '|| l_srv_line_index, 1, 'N');
1050 aso_debug_pub.add('Do_Split_Line: l_line_count: '|| l_line_count, 1, 'N');
1051 END IF;
1052
1053 IF l_srv_line_index <> l_line_count THEN
1054
1055 l_srv_line_index := l_to_create_quote_line_tbl.LAST + 1;
1056
1057 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1058 aso_debug_pub.add('Do_Split_Line: Inside IF l_srv_line_index <> l_line_count Condition. l_srv_line_index: '||l_srv_line_index, 1, 'N');
1059 END IF;
1060
1061 END IF;
1062
1063 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1064 aso_debug_pub.add('Do_Split_Line: p_serviceable_item: '||p_serviceable_item, 1, 'N');
1065 END IF;
1066
1067 IF p_serviceable_item = FND_API.G_TRUE THEN
1068
1069 FOR row IN get_service_lines(l_qte_line_rec.quote_line_id) LOOP
1070
1071 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1072 aso_debug_pub.add('Do_Split_Line: Inside service items quote line loop', 1, 'N');
1073 END IF;
1074
1075 l_srv_qte_line_rec := ASO_UTILITY_PVT.Query_Qte_Line_Row(row.quote_line_id);
1076
1077 l_srv_ln_Shipment_Tbl := ASO_UTILITY_PVT.Query_Shipment_Rows( l_srv_qte_line_rec.quote_header_id, row.quote_line_id);
1078
1079 l_srv_qte_line_dtl_tbl := ASO_UTILITY_PVT.Query_Line_Dtl_Rows(row.quote_line_id);
1080
1081 l_srv_payment_tbl := ASO_UTILITY_PVT.Query_Payment_Rows( l_srv_qte_line_rec.quote_header_id, row.quote_line_id);
1082
1083 l_srv_sales_credit_tbl := ASO_UTILITY_PVT.Query_Sales_Credit_Row( l_srv_qte_line_rec.quote_header_id, row.quote_line_id);
1084
1085 l_srv_price_attr_tbl := ASO_UTILITY_PVT.Query_Price_Attr_Rows( l_srv_qte_line_rec.quote_header_id, row.quote_line_id);
1086
1087 l_srv_price_adj_tbl := ASO_UTILITY_PVT.Query_Price_Adj_nonPRG_Rows( l_srv_qte_line_rec.quote_header_id, row.quote_line_id);
1088 l_srv_price_adj_rltship_tbl := aso_utility_pvt.Query_Price_Adj_Rltn_Rows(row.quote_line_id);
1089 l_srv_price_adj_attr_tbl := aso_utility_pvt.Query_Price_Adj_Attr_Rows(l_srv_price_adj_tbl);
1090
1091 l_to_create_quote_line_rec := l_srv_qte_line_rec;
1092 l_to_create_quote_line_rec.quantity := p_qte_line_tbl(i).quantity;
1093 l_to_create_quote_line_rec.operation_code := 'CREATE';
1094 l_to_create_quote_line_rec.quote_line_id := FND_API.G_MISS_NUM;
1095 l_to_create_quote_line_rec.line_number := FND_API.G_MISS_NUM;
1096
1097 IF l_srv_line_index <> l_line_count THEN
1098
1099 l_to_create_quote_line_tbl(l_to_create_quote_line_tbl.LAST + 1) := l_to_create_quote_line_rec;
1100 l_map_qte_line_tbl(l_map_qte_line_tbl.last + 1).quote_line_id := l_srv_qte_line_rec.quote_line_id;
1101 ELSE
1102 l_to_create_quote_line_tbl(l_srv_line_index) := l_to_create_quote_line_rec;
1103 l_map_qte_line_tbl(l_srv_line_index).quote_line_id := l_srv_qte_line_rec.quote_line_id;
1104
1105 END IF;
1106
1107 --Populate Service Shipment records
1108
1109 l_to_create_shipment_rec := l_srv_ln_Shipment_Tbl(1);
1110 l_to_create_shipment_rec.operation_code := 'CREATE';
1111 l_to_create_shipment_rec.shipment_id := FND_API.G_MISS_NUM;
1112 l_to_create_shipment_rec.quote_line_id := FND_API.G_MISS_NUM;
1113 l_to_create_shipment_rec.qte_line_index := l_srv_line_index;
1114 l_to_create_shipment_rec.quantity := p_qte_line_tbl(i).quantity;
1115
1116 l_to_create_shipment_tbl(nvl(l_to_create_shipment_tbl.count,0)+1) := l_to_create_shipment_rec;
1117
1118 --Populate service quote line details records
1119 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1120 aso_debug_pub.add('Do_Split_Line: l_srv_qte_line_dtl_tbl.count :'||l_srv_qte_line_dtl_tbl.count, 1, 'N');
1121 END IF;
1122 FOR k IN 1 .. l_srv_qte_line_dtl_tbl.count LOOP
1123
1124 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1125 aso_debug_pub.add('Do_Split_Line: Inside l_srv_qte_line_dtl_tbl loop', 1, 'N');
1126 END IF;
1127
1128 l_qte_line_dtl_rec := l_srv_qte_line_dtl_tbl(k);
1129 l_qte_line_dtl_rec.operation_code := 'CREATE';
1130 l_qte_line_dtl_rec.quote_line_detail_id := FND_API.G_MISS_NUM;
1131 l_qte_line_dtl_rec.quote_line_id := FND_API.G_MISS_NUM;
1132 l_qte_line_dtl_rec.qte_line_index := l_srv_line_index;
1133 l_qte_line_dtl_rec.service_ref_qte_line_index := i;
1134 l_qte_line_dtl_rec.service_ref_line_id := FND_API.G_MISS_NUM;
1135
1136 l_to_create_qte_line_dtl_tbl(nvl(l_to_create_qte_line_dtl_tbl.count,0)+1) := l_qte_line_dtl_rec;
1137 END LOOP;
1138
1139 --Populate Service payment records
1140 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1141 aso_debug_pub.add('Do_Split_Line: l_srv_payment_tbl.count :'||l_srv_payment_tbl.count, 1, 'N');
1142 END IF;
1143 /* FOR k IN 1 .. l_srv_payment_tbl.count LOOP
1144
1145 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1146 aso_debug_pub.add('Do_Split_Line: Inside l_srv_payment_tbl loop', 1, 'N');
1147 END IF;
1148
1149 l_payment_rec := l_srv_payment_tbl(k);
1150 l_payment_rec.operation_code := 'CREATE';
1151 l_payment_rec.payment_id := FND_API.G_MISS_NUM;
1152 l_payment_rec.quote_line_id := FND_API.G_MISS_NUM;
1153 l_payment_rec.quote_shipment_id := FND_API.G_MISS_NUM;
1154 l_payment_rec.qte_line_index := l_srv_line_index;
1155 l_payment_rec.credit_card_approval_code := FND_API.G_MISS_CHAR;
1156 l_payment_rec.credit_card_approval_date := FND_API.G_MISS_DATE;
1157
1158 l_to_create_payment_tbl(nvl(l_to_create_payment_tbl.count,0)+1) := l_payment_rec;
1159
1160 END LOOP; */
1161
1162 --Populate service sales credit records
1163 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1164 aso_debug_pub.add('Do_Split_Line: l_srv_sales_credit_tbl.count :'||l_srv_sales_credit_tbl.count, 1, 'N');
1165 END IF;
1166
1167 FOR k IN 1 .. l_srv_sales_credit_tbl.count LOOP
1168
1169 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1170 aso_debug_pub.add('Do_Split_Line: Inside l_srv_sales_credit_tbl', 1, 'N');
1171 END IF;
1172
1173 l_sales_credit_rec := l_srv_sales_credit_tbl(k);
1174 l_sales_credit_rec.operation_code := 'CREATE';
1175 l_sales_credit_rec.sales_credit_id := FND_API.G_MISS_NUM;
1176 l_sales_credit_rec.quote_line_id := FND_API.G_MISS_NUM;
1177 l_sales_credit_rec.qte_line_index := l_srv_line_index;
1178
1179 l_to_create_sales_credit_tbl(nvl(l_to_create_sales_credit_tbl.count,0)+1) := l_sales_credit_rec;
1180 END LOOP;
1181
1182 --Populate Service price attributes records
1183 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1184 aso_debug_pub.add('Do_Split_Line: l_srv_price_attr_tbl.count :'||l_srv_price_attr_tbl.count, 1, 'N');
1185 END IF;
1186
1187 FOR k IN 1 .. l_srv_price_attr_tbl.count LOOP
1188
1189 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1190 aso_debug_pub.add('Do_Split_Line: Inside l_srv_price_attr_tbl loop', 1, 'N');
1191 END IF;
1192
1193 l_price_attr_rec := l_srv_price_attr_tbl(k);
1194 l_price_attr_rec.operation_code := 'CREATE';
1195 l_price_attr_rec.price_attribute_id := FND_API.G_MISS_NUM;
1196 l_price_attr_rec.quote_line_id := FND_API.G_MISS_NUM;
1197 l_price_attr_rec.qte_line_index := l_srv_line_index;
1198
1199 l_to_create_price_attr_tbl(nvl(l_to_create_price_attr_tbl.count,0)+1) := l_price_attr_rec;
1200 END LOOP;
1201
1202 --Populate Service price adjustments records
1203 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1204 aso_debug_pub.add('Do_Split_Line: l_srv_price_adj_tbl.count :'||l_srv_price_adj_tbl.count, 1, 'N');
1205 END IF;
1206 FOR k IN 1 .. l_srv_price_adj_tbl.count LOOP
1207
1208 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1209 aso_debug_pub.add('Do_Split_Line: Inside l_srv_price_adj_tbl loop', 1, 'N');
1210 END IF;
1211
1212 l_price_adj_rec := l_srv_price_adj_tbl(k);
1213
1214 l_search_index(l_price_adj_rec.price_adjustment_id) := k;
1215
1216 l_price_adj_rec.operation_code := 'CREATE';
1217 l_price_adj_rec.price_adjustment_id := FND_API.G_MISS_NUM;
1218 l_price_adj_rec.creation_date := FND_API.G_MISS_DATE;
1219 l_price_adj_rec.quote_line_id := FND_API.G_MISS_NUM;
1220 l_price_adj_rec.quote_shipment_id := FND_API.G_MISS_NUM;
1221 l_price_adj_rec.qte_line_index := l_srv_line_index;
1222 l_price_adj_rec.shipment_index := FND_API.G_MISS_NUM;
1223
1224 l_to_create_price_adj_tbl(nvl(l_to_create_price_adj_tbl.count,0)+1) := l_price_adj_rec;
1225
1226 END LOOP;
1227
1228
1229 FOR k IN 1 .. l_srv_price_adj_rltship_tbl.count LOOP
1230
1231 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1232 aso_debug_pub.add('Do_Split_Line: Inside l_srv_price_adj_rltship_tbl loop', 1, 'N');
1233 END IF;
1234
1235 l_price_adj_rltship_rec := l_srv_price_adj_rltship_tbl(k);
1236
1237 IF l_search_index.exists(l_price_adj_rltship_rec.price_adjustment_id) THEN
1238 l_price_adj_rltship_rec.price_adj_index := l_search_index(l_price_adj_rltship_rec.price_adjustment_id);
1239 END IF;
1240
1241 IF l_search_index.exists(l_price_adj_rltship_rec.rltd_price_adj_id) THEN
1242 l_price_adj_rltship_rec.rltd_price_adj_index := l_search_index(l_price_adj_rltship_rec.rltd_price_adj_id);
1243 END IF;
1244
1245 l_price_adj_rltship_rec.operation_code := 'CREATE';
1246 l_price_adj_rltship_rec.adj_relationship_id := fnd_api.g_miss_num;
1247 l_price_adj_rltship_rec.creation_date := fnd_api.g_miss_date;
1248 l_price_adj_rltship_rec.quote_line_id := fnd_api.g_miss_num;
1249 l_price_adj_rltship_rec.qte_line_index := l_srv_line_index;
1250 l_price_adj_rltship_rec.quote_shipment_id := fnd_api.g_miss_num;
1251 l_price_adj_rltship_rec.price_adjustment_id := fnd_api.g_miss_num;
1252 l_price_adj_rltship_rec.rltd_price_adj_id := fnd_api.g_miss_num;
1253
1254 l_create_price_adj_rltn_tbl(nvl(l_create_price_adj_rltn_tbl.count,0)+1) := l_price_adj_rltship_rec;
1255
1256 END LOOP;
1257
1258
1259 FOR k IN 1 .. l_srv_price_adj_attr_tbl.count LOOP
1260
1261 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1262 aso_debug_pub.add('Do_Split_Line: Inside l_srv_price_adj_attr_tbl loop', 1, 'N');
1263 END IF;
1264
1265 l_price_adj_attr_rec := l_srv_price_adj_attr_tbl(k);
1266
1267 IF l_search_index.exists(l_price_adj_attr_rec.price_adjustment_id) THEN
1268 l_price_adj_attr_rec.price_adj_index := l_search_index(l_price_adj_attr_rec.price_adjustment_id);
1269 END IF;
1270
1271 l_price_adj_attr_rec.operation_code := 'CREATE';
1272 l_price_adj_attr_rec.price_adj_attrib_id := fnd_api.g_miss_num;
1273 l_price_adj_attr_rec.creation_date := fnd_api.g_miss_date;
1274 l_price_adj_attr_rec.qte_line_index := l_srv_line_index;
1275 l_price_adj_attr_rec.price_adjustment_id := fnd_api.g_miss_num;
1276
1277 l_create_price_adj_attr_tbl(nvl(l_create_price_adj_attr_tbl.count,0)+1) := l_price_adj_attr_rec;
1278
1279 END LOOP;
1280
1281 l_srv_line_index := l_srv_line_index + 1;
1282
1283 END LOOP;
1284
1285 END IF;
1286
1287 END IF;
1288
1289 END LOOP;
1290
1291 IF l_to_create_quote_line_tbl.count > 0 THEN
1292
1293 IF l_qte_line_rec.quantity = 0 THEN
1294 l_qte_line_rec.operation_code := 'DELETE';
1295
1296 l_orig_payment_tbl := aso_utility_pvt.query_payment_rows(l_qte_line_rec.quote_header_id,
1297 l_qte_line_rec.quote_line_id);
1298
1299 l_orig_line_deleted := 'Y';
1300
1301 ELSE
1302 l_qte_line_rec.operation_code := 'UPDATE';
1303 END IF;
1304
1305 l_to_create_quote_line_tbl(l_to_create_quote_line_tbl.LAST + 1) := l_qte_line_rec;
1306
1307 -- set the defaulting fwk off so that no new records are created by defaulting
1308 l_control_rec := p_control_rec;
1309
1310 l_control_rec.DEFAULTING_FLAG := FND_API.G_FALSE;
1311 l_control_rec.DEFAULTING_FWK_FLAG := 'N';
1312
1313
1314 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1315 aso_debug_pub.add('Do_Split_Line: Before call to Update Quote', 1, 'Y');
1316 END IF;
1317
1318 ASO_QUOTE_PUB.Update_quote(
1319 P_Api_Version_Number => 1.0,
1320 P_Init_Msg_List => FND_API.G_FALSE,
1321 P_Commit => P_Commit,
1322 P_Validation_Level => FND_API.G_VALID_LEVEL_FULL,
1323 P_Control_Rec => l_control_rec,
1324 P_Qte_Header_Rec => p_qte_header_rec,
1325 P_hd_Price_Attributes_Tbl => ASO_QUOTE_PUB.G_Miss_Price_Attributes_Tbl,
1326 P_hd_Payment_Tbl => ASO_QUOTE_PUB.G_MISS_PAYMENT_TBL,
1327 P_hd_Shipment_Tbl => ASO_QUOTE_PUB.G_MISS_SHIPMENT_TBL,
1328 P_hd_Freight_Charge_Tbl => ASO_QUOTE_PUB.G_Miss_Freight_Charge_Tbl,
1329 P_hd_Tax_Detail_Tbl => ASO_QUOTE_PUB.G_Miss_Tax_Detail_Tbl,
1330 P_hd_Attr_Ext_Tbl => ASO_QUOTE_PUB.G_MISS_Line_Attribs_Ext_TBL,
1331 P_hd_Sales_Credit_Tbl => ASO_QUOTE_PUB.G_MISS_Sales_Credit_Tbl,
1332 P_hd_Quote_Party_Tbl => ASO_QUOTE_PUB.G_MISS_Quote_Party_Tbl,
1333 P_Qte_Line_Tbl => l_to_create_quote_line_tbl,
1334 P_Qte_Line_Dtl_Tbl => l_to_create_qte_line_dtl_tbl,
1335 P_Line_Attr_Ext_Tbl => ASO_QUOTE_PUB.G_MISS_Line_Attribs_Ext_TBL,
1336 P_line_rltship_tbl => ASO_QUOTE_PUB.G_MISS_Line_Rltship_Tbl,
1337 P_Price_Adjustment_Tbl => l_to_create_price_adj_tbl,
1338 P_Price_Adj_Attr_Tbl => l_create_price_adj_attr_tbl,
1339 P_Price_Adj_Rltship_Tbl => l_create_price_adj_rltn_tbl,
1340 P_Ln_Price_Attributes_Tbl => l_to_create_price_attr_tbl,
1341 P_Ln_Payment_Tbl => ASO_QUOTE_PUB.G_MISS_PAYMENT_TBL,
1342 P_Ln_Shipment_Tbl => l_to_create_shipment_tbl,
1343 P_Ln_Freight_Charge_Tbl => ASO_QUOTE_PUB.G_Miss_Freight_Charge_Tbl,
1344 P_Ln_Tax_Detail_Tbl => ASO_QUOTE_PUB.G_Miss_Tax_Detail_Tbl,
1345 P_ln_Sales_Credit_Tbl => l_to_create_sales_credit_tbl,
1346 P_ln_Quote_Party_Tbl => ASO_QUOTE_PUB.G_MISS_Quote_Party_Tbl,
1347 x_Qte_Header_Rec => lx_qte_header_rec,
1348 X_Qte_Line_Tbl => lx_Qte_Line_Tbl,
1349 X_Qte_Line_Dtl_Tbl => lx_Qte_Line_Dtl_Tbl,
1350 X_Hd_Price_Attributes_Tbl => lx_hd_price_attr_tbl,
1351 X_Hd_Payment_Tbl => lx_hd_Payment_Tbl,
1352 X_Hd_Shipment_Tbl => lx_hd_Shipment_Tbl,
1353 X_Hd_Freight_Charge_Tbl => lx_hd_Freight_Charge_Tbl,
1354 X_Hd_Tax_Detail_Tbl => lx_hd_Tax_Detail_Tbl,
1355 X_hd_Attr_Ext_Tbl => lx_hd_Attr_Ext_Tbl,
1356 X_hd_Sales_Credit_Tbl => lx_hd_sales_credit_tbl,
1357 X_hd_Quote_Party_Tbl => lx_hd_Quote_Party_Tbl,
1358 x_Line_Attr_Ext_Tbl => lx_Line_Attr_Ext_Tbl,
1359 X_line_rltship_tbl => lx_line_rltship_tbl,
1360 X_Price_Adjustment_Tbl => lx_Price_Adjustment_Tbl,
1361 X_Price_Adj_Attr_Tbl => lx_Price_Adj_Attr_Tbl,
1362 X_Price_Adj_Rltship_Tbl => lx_Price_Adj_Rltship_Tbl,
1363 X_Ln_Price_Attributes_Tbl => lx_ln_price_attr_tbl,
1364 X_Ln_Payment_Tbl => lx_ln_Payment_Tbl,
1365 X_Ln_Shipment_Tbl => lx_ln_Shipment_Tbl,
1366 X_Ln_Freight_Charge_Tbl => lx_ln_Freight_Charge_Tbl,
1367 X_Ln_Tax_Detail_Tbl => lx_ln_Tax_Detail_Tbl,
1368 X_Ln_Sales_Credit_Tbl => lx_ln_sales_credit_tbl,
1369 X_Ln_Quote_Party_Tbl => lx_Ln_Quote_Party_Tbl,
1370 X_Return_Status => x_Return_Status,
1371 X_Msg_Count => x_Msg_Count,
1372 X_Msg_Data => x_Msg_Data
1373 );
1374
1375 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1376 aso_debug_pub.add('Do_Split_Line: After call to Update Quote');
1377 aso_debug_pub.add('Do_Split_Line: x_Return_Status :'||x_Return_Status, 1, 'N');
1378 END IF;
1379
1380 IF x_Return_Status <> FND_API.G_RET_STS_SUCCESS THEN
1381
1382 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1383 aso_debug_pub.add('Do_Split_Line: Error in Update_Quote', 1, 'N');
1384 END IF;
1385
1386 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1387
1388 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1389 FND_MESSAGE.Set_Name('ASO', 'ASO_API_UNEXP_ERROR');
1390 FND_MSG_PUB.ADD;
1391 END IF;
1392
1393 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1394
1395 ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
1396
1397 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1398 FND_MESSAGE.Set_Name('ASO', 'ASO_API_EXP_ERROR');
1399 FND_MSG_PUB.ADD;
1400 END IF;
1401
1402 RAISE FND_API.G_EXC_ERROR;
1403
1404 END IF;
1405
1406 END IF;
1407
1408 X_Qte_Line_Tbl := lx_Qte_Line_Tbl;
1409
1410
1411 -- Copy the header payment record
1412
1413 IF ( l_orig_line_deleted = 'Y' ) THEN
1414 l_payment_tbl := l_orig_payment_tbl;
1415 ELSE
1416 l_payment_tbl := aso_utility_pvt.query_payment_rows(l_qte_line_rec.quote_header_id,
1417 l_qte_line_rec.quote_line_id);
1418 END IF;
1419
1420 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1421 aso_debug_pub.add('Do_Split_Line: l_orig_line_deleted: '|| l_orig_line_deleted);
1422 aso_debug_pub.add('Do_Split_Line: l_orig_payment_tbl.count: '|| l_orig_payment_tbl.count);
1423 aso_debug_pub.add('Do_Split_Line: l_payment_tbl.count: '|| l_payment_tbl.count);
1424 END IF;
1425
1426
1427 FOR i IN 1 .. lx_Qte_Line_Tbl.count LOOP
1428
1429 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1430 aso_debug_pub.add('Do_Split_Line: lx_qte_line_tbl('||i||').quote_line_id: '|| lx_qte_line_tbl(i).quote_line_id);
1431 END IF;
1432
1433 -- Start Copy payment record
1434 IF ((l_qte_line_rec.quote_line_id <> lx_Qte_Line_Tbl(i).quote_line_id) and (l_payment_tbl.count > 0)) then
1435 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1436 aso_debug_pub.add('Do_Split_Line: Creating the payment record ', 1, 'N');
1437 END IF;
1438
1439 l_payment_rec := l_payment_tbl(1);
1440 l_payment_rec.payment_id := null;
1441 l_payment_rec.quote_header_id := l_qte_line_rec.quote_header_id;
1442 l_payment_rec.quote_line_id := lx_qte_line_tbl(i).quote_line_id;
1443 l_payment_rec.credit_card_approval_code := FND_API.G_MISS_CHAR;
1444 l_payment_rec.credit_card_approval_date := FND_API.G_MISS_DATE;
1445
1446 IF aso_debug_pub.g_debug_flag = 'Y' THEN
1447 aso_debug_pub.add('Do_Split_Line: Before call to copy_payment_row ', 1, 'Y');
1448 END IF;
1449
1450 aso_copy_quote_pvt.copy_payment_row(p_payment_rec => l_payment_rec ,
1451 x_return_status => x_return_status,
1452 x_msg_count => x_msg_count,
1453 x_msg_data => x_msg_data);
1454
1455 IF aso_debug_pub.g_debug_flag = 'Y' THEN
1456 aso_debug_pub.add('Copy_Header: After call to copy_payment_row: x_return_status: '||x_return_status, 1, 'Y');
1457 END IF;
1458 IF ( x_return_status = FND_API.G_RET_STS_UNEXP_ERROR ) THEN
1459 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1460 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1461 ELSIF ( x_return_status = FND_API.G_RET_STS_ERROR ) THEN
1462 x_return_status := FND_API.G_RET_STS_ERROR;
1463 RAISE FND_API.G_EXC_ERROR;
1464 END IF;
1465 End if;
1466
1467 -- End Copy payment record
1468
1469 IF l_qte_line_rec.quote_line_id <> lx_Qte_Line_Tbl(i).quote_line_id
1470 and (lx_Qte_Line_Tbl(i).pricing_line_type_indicator is null or
1471 lx_Qte_Line_Tbl(i).pricing_line_type_indicator = fnd_api.g_miss_char) THEN
1472
1473 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1474 aso_debug_pub.add('Do_Split_Line: Before call to Copy_Attachments');
1475 END IF;
1476
1477 ASO_ATTACHMENT_INT.Copy_Attachments(
1478 p_api_version => 1.0,
1479 p_init_msg_list => FND_API.G_FALSE,
1480 p_commit => FND_API.G_FALSE,
1481 p_old_object_code => 'ASO_QUOTE_LINES_ALL',
1482 p_new_object_code => 'ASO_QUOTE_LINES_ALL',
1483 p_old_object_id => l_map_qte_line_tbl(i).quote_line_id,
1484 p_new_object_id => lx_qte_line_tbl(i).quote_line_id,
1485 x_return_status => x_return_status,
1486 x_msg_count => x_msg_count,
1487 x_msg_data => x_msg_data
1488 );
1489
1490 IF aso_debug_pub.g_debug_flag = 'Y' THEN
1491 aso_debug_pub.add('Do_Split_Line: After call to Copy_Attachments');
1492 aso_debug_pub.add('Do_Split_Line: x_return_status: '|| x_return_status);
1493 END IF;
1494
1495 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1496
1497 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1498 aso_debug_pub.add('Do_Split_Line: Error in Copy_Attachments');
1499 END IF;
1500
1501 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1502
1503 RAISE FND_API.G_EXC_ERROR;
1504
1505 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1506
1507 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1508
1509 END IF;
1510
1511 END IF;
1512
1513 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1514 aso_debug_pub.add('Do_Split_Line: Attachment copied from quote_line_id: '||l_map_qte_line_tbl(i).quote_line_id);
1515 aso_debug_pub.add('Do_Split_Line: Attachment copied to quote_line_id: '||lx_qte_line_tbl(i).quote_line_id);
1516 END IF;
1517
1518
1519 -- changes for sales supp enhancement see bug 2940126
1520 IF aso_debug_pub.g_debug_flag = 'Y' THEN
1521 aso_debug_pub.add('Do_Split_Line: Before call to Copy_Line_Level_Sales_Supp');
1522 END IF;
1523
1524 ASO_COPY_QUOTE_PVT.INSERT_SALES_SUPP_DATA
1525 (
1526 P_Api_Version_Number => 1.0,
1527 P_Init_Msg_List => FND_API.G_FALSE,
1528 P_Commit => P_Commit,
1529 P_OLD_QUOTE_LINE_ID => l_map_qte_line_tbl(i).quote_line_id,
1530 P_NEW_QUOTE_LINE_ID => lx_qte_line_tbl(i).quote_line_id,
1531 X_Return_Status => x_return_status,
1532 X_Msg_Count => X_Msg_Count,
1533 X_Msg_Data => X_Msg_Data );
1534
1535 IF aso_debug_pub.g_debug_flag = 'Y' THEN
1536 aso_debug_pub.add('Do_Split_Line: After call to Copy_Line_Level_Sales_Supp');
1537 aso_debug_pub.add('Do_Split_Line: x_return_status: '|| x_return_status);
1538 END IF;
1539
1540 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1541
1542 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1543 aso_debug_pub.add('Do_Split_Line: Error in Copy_Line_Level_Sales_Supp');
1544 END IF;
1545
1546 IF x_return_status = FND_API.G_RET_STS_ERROR THEN
1547
1548 RAISE FND_API.G_EXC_ERROR;
1549
1550 ELSIF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1551
1552 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1553
1554 END IF;
1555
1556 END IF;
1557
1558 END IF;
1559
1560 END LOOP;
1561
1562 ELSE
1563
1564 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1565 aso_debug_pub.add('Do_Split_Line: No call made to Update_Quote');
1566 END IF;
1567
1568 END IF;
1569
1570 --Standard call to get message count and if count is 1, get message info.
1571 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count,
1572 p_data => x_msg_data );
1573
1574
1575 EXCEPTION
1576
1577 WHEN FND_API.G_EXC_ERROR THEN
1578
1579 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1580 aso_debug_pub.add('Do_Split_Line: WHEN FND_API.G_EXC_ERROR', 1, 'N');
1581 END IF;
1582
1583 ASO_UTILITY_PVT.HANDLE_EXCEPTIONS( P_API_NAME => L_API_NAME,
1584 P_PKG_NAME => G_PKG_NAME,
1585 P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR,
1586 P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_INT,
1587 X_MSG_COUNT => X_MSG_COUNT,
1588 X_MSG_DATA => X_MSG_DATA,
1589 X_RETURN_STATUS => X_RETURN_STATUS
1590 );
1591
1592 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1593
1594 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1595 aso_debug_pub.add('Do_Split_Line: WHEN FND_API.G_EXC_UNEXPECTED_ERROR', 1, 'N');
1596 END IF;
1597
1598 ASO_UTILITY_PVT.HANDLE_EXCEPTIONS( P_API_NAME => L_API_NAME,
1599 P_PKG_NAME => G_PKG_NAME,
1600 P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR,
1601 P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_INT,
1602 X_MSG_COUNT => X_MSG_COUNT,
1603 X_MSG_DATA => X_MSG_DATA,
1604 X_RETURN_STATUS => X_RETURN_STATUS
1605 );
1606
1607 WHEN OTHERS THEN
1608
1609 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1610 aso_debug_pub.add('Do_Split_Line: WHEN OTHERS', 1, 'N');
1611 END IF;
1612
1613 ASO_UTILITY_PVT.HANDLE_EXCEPTIONS( P_API_NAME => L_API_NAME,
1614 P_PKG_NAME => G_PKG_NAME,
1615 P_SQLERRM => SQLERRM,
1616 P_SQLCODE => SQLCODE,
1617 P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS,
1618 P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_INT,
1619 X_MSG_COUNT => X_MSG_COUNT,
1620 X_MSG_DATA => X_MSG_DATA,
1621 X_RETURN_STATUS => X_RETURN_STATUS
1622 );
1623
1624 End Do_Split_line;
1625
1626 End ASO_SPLIT_LINE_INT;