DBA Data[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;