DBA Data[Home] [Help]

PACKAGE BODY: APPS.ASO_PRICING_FLOWS_PVT

Source


1 PACKAGE BODY ASO_PRICING_FLOWS_PVT as
2 /* $Header: asovpflb.pls 120.6.12000000.2 2007/07/09 12:55:18 akushwah ship $ */
3 -- Start of Comments
4 -- Package name     : ASO_PRICING_FLOWS_PVT
5 -- Purpose          :
6 -- History          :
7 -- NOTE             :
8 -- End of Comments
9 
10 
11 G_PKG_NAME  CONSTANT VARCHAR2(30):= 'ASO_PRICING_FLOWS_PVT';
12 G_FILE_NAME CONSTANT VARCHAR2(12) := 'asovpflb.pls';
13 --G_ADJ_NUM   CONSTANT NUMBER := 999;
14 
15 /******************************************************************************
16  *                                                                            *
17  *  Code Path when price mode is ENTIRE_QUOTE                                 *
18  *                                                                            *
19  ******************************************************************************/
20 
21 PROCEDURE Price_Entire_Quote(
22      P_Api_Version_Number       IN   NUMBER,
23      P_Init_Msg_List            IN   VARCHAR2 := FND_API.G_FALSE,
24      P_Commit                   IN   VARCHAR2 := FND_API.G_FALSE,
25      p_control_rec              IN   ASO_PRICING_INT.PRICING_CONTROL_REC_TYPE,
26      p_qte_header_rec           IN   ASO_QUOTE_PUB.Qte_Header_Rec_Type,
27      p_hd_shipment_rec          IN   ASO_QUOTE_PUB.Shipment_Rec_Type
28                                      := ASO_QUOTE_PUB.G_Miss_Shipment_Rec,
29      p_qte_line_tbl             IN   ASO_QUOTE_PUB.Qte_Line_Tbl_Type,
30 	p_internal_call_flag       IN   VARCHAR2 := 'N',
31 	x_qte_line_tbl             OUT NOCOPY /* file.sql.39 change */ ASO_QUOTE_PUB.Qte_Line_Tbl_Type,
32      x_return_status            OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
33      x_msg_count                OUT NOCOPY /* file.sql.39 change */ NUMBER,
34      x_msg_data                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2)
35 IS
36     l_api_name                    CONSTANT VARCHAR2(30) := 'Price_Entire_Quote';
37     l_api_version_number          CONSTANT NUMBER   := 1.0;
38     l_req_control_rec             QP_PREQ_GRP.CONTROL_RECORD_TYPE;
39     l_prc_control_rec             ASO_PRICING_INT.PRICING_CONTROL_REC_TYPE;
40     l_qte_line_id                 NUMBER;
41     l_qte_line_dtl_rec            ASO_QUOTE_PUB.Qte_Line_Dtl_Rec_Type;
42     l_shipment_rec                ASO_QUOTE_PUB.Shipment_Rec_Type;
43     l_return_status               VARCHAR2(1);
44     l_return_status_text          VARCHAR2(2000);
45     l_message_text                VARCHAR2(2000);
46     i                             BINARY_INTEGER;
47     j                             BINARY_INTEGER;
48     l_qte_line_tbl                ASO_QUOTE_PUB.Qte_Line_Tbl_Type;
49     l_qte_line_dtl_tbl            ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type;
50     l_shipment_tbl                ASO_QUOTE_PUB.Shipment_Tbl_Type;
51     x_pass_line                   VARCHAR2(10);
52     l_qte_line_id_tbl             JTF_NUMBER_TABLE;
53     l_qte_adj_id_tbl              JTF_NUMBER_TABLE;
54     l_service_qte_line_id_tbl     JTF_NUMBER_TABLE;
55     l_index_counter               Number; -- This is used to keep track of lx_index_counter
56     lx_index_counter              Number;
57     lx_order_status_rec           QP_UTIL_PUB.ORDER_LINES_STATUS_REC_TYPE;
58     l_adj_id_tbl                  Index_Link_Tbl_Type;
59     l_price_index                 Number;
60     px_line_index_search_tbl      ASO_PRICING_CORE_PVT.Index_Link_Tbl_Type;
61     l_global_pls_tbl              QP_PREQ_GRP.pls_integer_type;
62     l_global_num_tbl              QP_PREQ_GRP.NUMBER_TYPE;
63     l_pricing_start_time          NUMBER;
64     l_pricing_end_time            NUMBER;
65     l_accum_aso_time              NUMBER;
66     l_accum_qp_time               NUMBER;
67 
68 
69 BEGIN
70 
71 -- Standard call to check for call compatibility.
72 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
73                                      p_api_version_number,
74                                      l_api_name,
75                                      G_PKG_NAME)
76 THEN
77    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
78 END IF;
79 
80 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
81   l_pricing_start_time := dbms_utility.get_time;
82   aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:Start of Price_Entire_Quote',1,'Y');
83 END IF;
84 
85 x_return_status := FND_API.G_RET_STS_SUCCESS;
86 
87 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
88   aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:p_control_rec.request_type:'||p_control_rec.request_type,1,'Y');
89   aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:p_control_rec.pricing_event:'||p_control_rec.pricing_event,1,'Y');
90    aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: p_control_rec.calculate_flag:'||p_control_rec.calculate_flag,1,'Y');
91 END IF;
92 
93 l_prc_control_rec := p_control_rec;
94 l_price_index := 1;
95 
96    IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
97      aso_debug_pub.add('********************* PROCESSING HEADER STARTS *******************************',1,'Y');
98      aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: p_internal_call_flag: '||p_internal_call_flag,1,'Y');
99    END IF;
100 
101    If p_internal_call_flag = 'N' then
102    IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
103      aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Set_Global_Rec  - Header Level...  ',1,'Y');
104    END IF;
105    ASO_PRICING_INT.G_HEADER_REC := ASO_PRICING_CORE_PVT.Set_Global_Rec (
106           p_qte_header_rec     => p_qte_header_rec,
107           p_shipment_rec       => p_hd_shipment_rec);
108    end If;--If p_internal_call_flag = 'N' then
109 
110    ASO_PRICING_CORE_PVT.Print_G_Header_Rec;
111    IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
112       l_pricing_end_time := dbms_utility.get_time;
113       l_accum_aso_time := l_pricing_end_time - l_pricing_start_time;
114    END IF;
115 
116    QP_Price_Request_Context.Set_Request_Id;
117 
118    QP_ATTR_MAPPING_PUB.Build_Contexts (
119       P_REQUEST_TYPE_CODE          => p_control_rec.request_type,
120       P_PRICING_TYPE_CODE          => 'H',
121       P_line_index                 => l_price_index,
122       P_pricing_event              => p_control_rec.pricing_event,
123       p_check_line_flag            => 'N',
124       x_pass_line                  => x_pass_line);
125 
126 
127    IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
128      l_pricing_start_time := dbms_utility.get_time;
129      l_accum_qp_time := l_pricing_start_time - l_pricing_end_time;
130      aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: x_pass_line: '||nvl(x_pass_line,'null'),1,'Y');
131      aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Copy_Header_To_Request...',1,'Y');
132    END IF;
133 
134 
135    ASO_PRICING_CORE_PVT.Copy_Header_To_Request(
136        p_Request_Type                   => p_control_rec.request_type,
137        p_price_line_index               => l_price_index,
138        px_index_counter                 => 1);
139 
140    IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
141      aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Append_asked_for...',1,'Y');
142    END IF;
143 
144    lx_index_counter:= 1;
145    ASO_PRICING_CORE_PVT.Append_asked_for(
146         p_pricing_event                   => p_control_rec.pricing_event,
147         p_price_line_index                => l_price_index,
148         p_header_id                       => p_qte_header_rec.quote_header_id,
149         px_index_counter                  => lx_index_counter);
150 
151    IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
152      aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:After Append Ask for lx_index_counter:'
153                         ||lx_index_counter,1,'Y');
154    END IF;
155     --increment the line index
156    l_price_index:= l_price_index+1;
157 
158    -- Header ends here
159 
160    IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
161      aso_debug_pub.add('************************ HEADER LEVEL ENDS *******************************',1,'Y');
162      aso_debug_pub.add('  ',1,'Y');
163      aso_debug_pub.add('************************ LINE LEVEL BEGINS *******************************',1,'Y');
164      aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of ASO UTL PVT Query_Pricing_Line_Rows...',1,'Y');
165      aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Before call Get_Order_Lines_Status:p_control_rec.pricing_event:'
166                         ||p_control_rec.pricing_event,1,'Y');
167      aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Before call Get_Order_Lines_Status:p_control_rec.request_type:'
168                         ||p_control_rec.request_type,1,'Y');
169 	l_pricing_end_time := dbms_utility.get_time;
170 	l_accum_aso_time := l_accum_aso_time + (l_pricing_end_time - l_pricing_start_time);
171    END IF;
172 
173    QP_UTIL_PUB.Get_Order_Lines_Status(p_event_code         => p_control_rec.pricing_event,
174                                       x_order_status_rec   => lx_order_status_rec,
175 							   p_freight_call_flag  => 'Y',
176 							   p_request_type_code  => p_control_rec.request_type);
177 
178    IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
179       l_pricing_start_time := dbms_utility.get_time;
180 	 l_accum_qp_time := l_accum_qp_time + (l_pricing_start_time - l_pricing_end_time);
181 
182       aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:lx_order_status_rec.all_lines_flag:'
183                          ||lx_order_status_rec.all_lines_flag,1,'Y');
184       aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:lx_order_status_rec.changed_lines_flag:'
185                          ||lx_order_status_rec.changed_lines_flag,1,'Y');
186       aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:lx_order_status_rec.summary_line_flag:'
187                          ||lx_order_status_rec.summary_line_flag,1,'Y');
188    END IF;
189 
190    If lx_order_status_rec.all_lines_flag = 'N' then
191      l_prc_control_rec.PRG_REPRICE_MODE := 'F';
192    else
193      l_prc_control_rec.PRG_REPRICE_MODE := 'A';
194    end if;
195 
196    l_qte_line_tbl := ASO_UTILITY_PVT.Query_Pricing_Line_Rows(p_qte_header_rec.quote_header_id);
197 
198    IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
199      aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: l_qte_line_tbl.count :'||NVL(l_qte_line_tbl.count,0),1,'Y');
200      l_pricing_end_time := dbms_utility.get_time;
201      l_accum_aso_time := l_accum_aso_time + (l_pricing_end_time - l_pricing_start_time);
202    END IF;
203 
204    --  Added this code to delete all the adjustments when there are no items in the cart
205    If l_qte_line_tbl.count = 0 Then
206       IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
207         aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:No lines in the database',1,'Y');
208       END IF;
209 
210    Else
211       -- Line Count <> 0.
212 
213       For i in 1..l_qte_line_tbl.count Loop
214 
215           IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
216             l_pricing_start_time := dbms_utility.get_time;
217             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Query_Line_Dtl_Rows...',1,'Y');
218             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: l_qte_line_tbl(i).quote_line_id:'
219 					      ||NVL(l_qte_line_tbl(i).quote_line_id,0),1,'Y');
220             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: l_qte_line_tbl(i).pricing_line_type_indicator:'
221 					      ||l_qte_line_tbl(i).pricing_line_type_indicator,1,'Y');
222           END IF;
223 
224   		l_qte_line_id := l_qte_line_tbl(i).quote_line_id;
225 		l_qte_line_dtl_tbl := ASO_UTILITY_PVT.Query_Line_Dtl_Rows(l_qte_line_id);
226 
227           IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
228             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Defaulting Hdr Lvl Price List and Currency..',1,'Y');
229             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: p_qte_header_rec.currency_code :'
230 					      ||NVL(p_qte_header_rec.currency_code,'NULL'),1,'Y');
231             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: p_qte_header_rec.price_list_id :'
232 					      ||NVL(to_char(p_qte_header_rec.price_list_id),'NULL'),1,'Y');
233           END IF;
234   		-- Pass header_level currency_code to line level by default.
235   		l_qte_line_tbl(i).currency_code := p_qte_header_rec.currency_code;
236 
237           IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
238             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: l_qte_line_tbl(i).price_list_id :'
239 					      ||NVL(to_char(l_qte_line_tbl(i).price_list_id),'NULL'),1,'Y');
240           END IF;
241 	     -- Pass Header level price list by default.
242 		IF l_qte_line_tbl(i).pricing_line_type_indicator = 'F' then
243 		   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
244 		       aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Free line so not defaulting of the price list',1,'Y');
245 			  END IF;
246           ELSE
247 		   /*Default the price list*/
248   		   If (l_qte_line_tbl(i).price_list_id is null
249 		      OR l_qte_line_tbl(i).price_list_id= FND_API.G_MISS_NUM) Then
250         	   	    l_qte_line_tbl(i).price_list_id := p_qte_header_rec.price_list_id;
251                    IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
252                      aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:Price list id defaulted from Header:'
253 				   	         ||NVL(to_char(l_qte_line_tbl(i).price_list_id),'NULL'),1,'Y');
254                    END IF;
255   		   End if;
256           END IF;--l_qte_line_tbl(i).pricing_line_type_indicator = 'F'
257 
258           IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
259             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: l_qte_line_dtl_tbl.count :'
260 					      ||NVL(l_qte_line_dtl_tbl.count,0),1,'Y');
261           END IF;
262   		IF l_qte_line_dtl_tbl.count = 1 THEN
263         		l_qte_line_dtl_rec := l_qte_line_dtl_tbl(1);
264                 ELSE
265   			l_qte_line_dtl_rec := ASO_QUOTE_PUB.G_Miss_Qte_Line_Dtl_REC ;
266   		END IF;
267 
268           IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
269             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Query_Shipment_Rows..',1,'Y');
270           END IF;
271   		l_shipment_tbl := ASO_UTILITY_PVT.Query_Shipment_Rows
272 				                        (p_qte_header_rec.quote_header_id, l_QTE_LINE_ID);
273           IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
274             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: l_shipment_tbl.count :'
275 					      ||NVL(l_shipment_tbl.count,0),1,'Y');
276           END IF;
277   		IF l_shipment_tbl.count = 1 THEN
278         		l_shipment_rec := l_shipment_tbl(1);
279 		else
280   		     l_shipment_rec := ASO_QUOTE_PUB.G_Miss_Shipment_rec;
281   		END IF;
282 
283           IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
284             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Set_Global_Rec - Line Level...', 1, 'Y');
285 		  aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:These values will be defaulted from header for pricing qualification only:',1,'Y');
286 		  aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:l_qte_line_tbl(i).invoice_to_party_site_id:'
287 						 ||NVL(to_char(l_qte_line_tbl(i).invoice_to_party_site_id),'NULL'),1,'Y');
288 		  aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:l_shipment_rec.ship_to_party_site_id:'
289 						 ||NVL(to_char(l_shipment_rec.ship_to_party_site_id),'NULL'),1,'Y');
290 		  aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:l_qte_line_tbl(i).agreement_id:'
291 						 ||NVL(to_char(l_qte_line_tbl(i).agreement_id),'NULL'),1,'Y');
292 		  aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:l_shipment_rec.ship_method_code:'
293 						 ||NVL(l_shipment_rec.ship_method_code,'NULL'),1,'Y');
294 		  aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:l_shipment_rec.freight_terms_code:'
295 						 ||NVL(l_shipment_rec.freight_terms_code,'NULL'),1,'Y');
296 		  aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:l_shipment_rec.FREIGHT_CARRIER_CODE:'
297 						 ||NVL(l_shipment_rec.FREIGHT_CARRIER_CODE,'NULL'),1,'Y');
298 		  aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:l_shipment_rec.FOB_CODE:'
299 						 ||NVL(l_shipment_rec.FOB_CODE,'NULL'),1,'Y');
300 		  aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:l_shipment_rec.REQUEST_DATE:'
301 						 ||NVL(to_char(l_shipment_rec.REQUEST_DATE),'NULL'),1,'Y');
302           END IF;
303 
304           ASO_PRICING_INT.G_LINE_REC := ASO_PRICING_CORE_PVT.Set_Global_Rec (
305                 	p_qte_line_rec               => l_qte_line_tbl(i),
306                 	p_qte_line_dtl_rec           => l_qte_line_dtl_rec,
307                 	p_shipment_rec               => l_shipment_rec);
308 
309           ASO_PRICING_CORE_PVT.Print_G_Line_Rec;
310 
311     		IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
312     		  aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of QP Build_Contexts - Line Level...',1,'Y');
313             l_pricing_end_time := dbms_utility.get_time;
314 		  l_accum_aso_time := l_accum_aso_time + (l_pricing_end_time - l_pricing_start_time);
315     		END IF;
316           QP_ATTR_MAPPING_PUB.Build_Contexts (
317                     p_request_type_code          => p_control_rec.request_type,
318                     p_line_index                 => l_price_index,
319                     p_check_line_flag            => 'N',
320                     p_pricing_event              => p_control_rec.pricing_event,
321                     p_pricing_type_code          => 'L',
322                     p_price_list_validated_flag  => 'N',
323                     x_pass_line                  => x_pass_line);
324           IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
325             l_pricing_start_time := dbms_utility.get_time;
326 		  l_accum_qp_time := l_accum_qp_time +(l_pricing_start_time - l_pricing_end_time);
327             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: x_pass_line: '||nvl(x_pass_line,'null'),1,'Y');
328     		  aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Copy_Line_To_Request...',1,'Y');
329           END IF;
330 
331     		ASO_PRICING_CORE_PVT.Copy_Line_To_Request(
332     			p_Request_Type         => p_control_rec.request_type,
333                p_price_line_index    => l_price_index,
334     			px_index_counter       => i+1);
335 
336 
337     		IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
338     		  aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Append_asked_for...',1,'Y');
339             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:Before Append Ask for lx_index_counter:'
340                                ||lx_index_counter,1,'Y');
341     		END IF;
342 		l_index_counter := lx_index_counter;
343           ASO_PRICING_CORE_PVT.Append_asked_for(
344         		                p_pricing_event   => p_control_rec.pricing_event,
345                                p_price_line_index => l_price_index,
346        			           p_header_id       => p_qte_header_rec.quote_header_id,
347        			           p_line_id         => l_qte_line_tbl(i).quote_line_id,
348     			                px_index_counter  => lx_index_counter);
349           IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
350             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:After Append Ask for lx_index_counter:'
351                                ||lx_index_counter,1,'Y');
352           END IF;
353 		If lx_index_counter = 0 then
354 		   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
355 		      aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:Assigning the value of l_index_counter back to lx_index_counter:'||l_index_counter,1,'Y');
356 		   END IF;
357 		   lx_index_counter := l_index_counter;
358 		end if;
359 
360           /*Store the line_id of all the service_lines*/
361           If l_qte_line_tbl(i).service_item_flag = 'Y' then
362              if l_service_qte_line_id_tbl.EXISTS(1) then
363                 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
364     		         aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of l_service_qte_line_id_tbl.extend...',1,'Y');
365                  END IF;
366                  l_service_qte_line_id_tbl.extend;
367                  l_service_qte_line_id_tbl(l_service_qte_line_id_tbl.count)
368 								            := l_qte_line_tbl(i).quote_line_id;
369               else
370                  IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
371     		          aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: First quote_line_id in l_service_qte_line_id_tbl',1,'Y');
372                  END IF;
373                  l_service_qte_line_id_tbl:= JTF_NUMBER_TABLE(l_qte_line_tbl(i).quote_line_id);
374              end if;
375           end if;-- l_qte_line_tbl(i).service_item_flag = 'Y'
376 
377           /*Store all the quote_line_id processed*/
378    		IF l_Qte_Line_id_tbl.EXISTS(1) THEN
379              IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
380     		      aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of l_qte_line_id_tbl.extend...',1,'Y');
381              END IF;
382      	   l_Qte_Line_id_tbl.extend;
386     		      aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: First quote_line_id in l_qte_line_id_tbl',1,'Y');
383      	   l_Qte_Line_id_tbl(l_Qte_Line_id_tbl.count) := l_qte_line_tbl(i).quote_line_id;
384    		 ELSE
385              IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
387              END IF;
388      	   l_Qte_Line_id_tbl := JTF_NUMBER_TABLE(l_qte_line_tbl(i).quote_line_id);
389    	    END IF;
390          --increment the line index
391            px_line_index_search_tbl(l_qte_line_id) := l_price_index;
392            l_price_index:= l_price_index+1;
393 		 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
394              l_pricing_end_time := dbms_utility.get_time;
395 		   l_accum_aso_time := l_accum_aso_time + (l_pricing_end_time - l_pricing_start_time);
396 		 END IF;
397       End Loop; -- l_Qte_Line_tbl.count checking.
398 
399   	 -- Call to Price Adjustment Relationships and Service Relationships
400     	 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
401       l_pricing_start_time := dbms_utility.get_time;
402     	   aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Query_Price_Adjustments...',1,'Y');
403         aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: l_qte_line_id_tbl.count :'
404 					  ||NVL(l_qte_line_id_tbl.count,0),1,'Y');
405     	 END IF;
406 	 ASO_PRICING_CORE_PVT.Query_Price_Adjustments
407 		(p_quote_header_id	     => p_qte_header_rec.quote_header_id,
408  		 p_qte_line_id_tbl       => l_qte_line_id_tbl,
409 		 x_adj_id_tbl            => l_qte_adj_id_tbl);
410 
411       If l_qte_adj_id_tbl.exists(1) OR l_service_qte_line_id_tbl.exists(1) Then
412          -- Adjustment and line Relationships and services...
413          IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
414             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Query_Adj_rltship_Bulk...',1,'Y');
415 		  If l_qte_adj_id_tbl is not null then
416                aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: l_qte_adj_id_tbl.count :'
417 					         ||NVL(l_qte_adj_id_tbl.count,0),1,'Y');
418             end if;
419 		  If l_service_qte_line_id_tbl is not null then
420                aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: l_service_qte_line_id_tbl.count :'
421 					         ||NVL(l_service_qte_line_id_tbl.count,0),1,'Y');
422             end if;
423          END IF;
424          ASO_PRICING_CORE_PVT.Query_relationships
425 		(p_qte_adj_id_tbl           => l_qte_adj_id_tbl,
426            p_service_qte_line_id_tbl  => l_service_qte_line_id_tbl);
427       else
428 	  IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
429          aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: There are no service lines or manual related Adjustments',1,'Y');
430        END IF;
431       end if;--If l_qte_adj_id_tbl.exists(1) OR l_service_qte_line_id_tbl.exists(1)
432 
433   END IF; -- l_qte_line_tbl.count = 0 check.
434 
435 
436   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
437     aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Begin bulk collect adj ids', 1, 'Y');
438   END IF;
439 
440   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
441 	--If nvl(l_qte_adj_id_tbl.count,0) > 0 then
442 	  If l_qte_adj_id_tbl is not null then
443 	   For i in 1..l_qte_adj_id_tbl.count loop
444 	   aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:Querying for the following adjustment  ids:',1,'Y');
445         aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:l_qte_adj_id_tbl(i):'||l_qte_adj_id_tbl(i),1,'Y');
446 	   end loop;
447 	  end if;
448   END IF;
449 
450   SELECT adj.PRICE_ADJUSTMENT_ID
451   BULK COLLECT INTO
452   l_adj_id_tbl
453   FROM ASO_PRICE_ADJUSTMENTS adj
454   WHERE adj.quote_header_id = p_qte_header_rec.quote_header_id
455   AND adj.price_adjustment_id NOT IN (SELECT column_value
456   							   FROM TABLE (CAST(l_qte_adj_id_tbl AS JTF_NUMBER_TABLE)) passed_adj);
457 
458   if aso_debug_pub.g_debug_flag = 'Y' THEN
459      aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: No. of adjustment lines selected is sql%rowcount: '||sql%rowcount,1,'Y');
460   end if;
461 
462   if aso_debug_pub.g_debug_flag = 'Y' THEN
463 
464      if l_adj_id_tbl.count > 0 then
465 
466         for k in l_adj_id_tbl.FIRST..l_adj_id_tbl.LAST loop
467             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:l_adj_id_tbl('||k||'): ' || l_adj_id_tbl(k),1,'Y');
468         end loop;
469 
470      end if;
471 
472   end if;
473 
474   if l_adj_id_tbl.count > 0 then
475      IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
476         aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Begin DELETE FROM ASO_PRICE_ADJ_ATTRIBS', 1, 'Y');
477      END IF;
478      FORALL i IN l_adj_id_tbl.FIRST..l_adj_id_tbl.LAST
479             DELETE FROM ASO_PRICE_ADJ_ATTRIBS
480             WHERE PRICE_ADJUSTMENT_ID = l_adj_id_tbl(i);
481 
482      if aso_debug_pub.g_debug_flag = 'Y' THEN
483         aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:No of adjustment attribute lines deleted is sql%rowcount: '||sql%rowcount,1,'Y');
484      end if;
485 
486  end if;
487 
488   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
489     aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Begin DELETE FROM ASO_PRICE_ADJ_RELATIONSHIPS', 1, 'Y');
490   END IF;
491   DELETE FROM ASO_PRICE_ADJ_RELATIONSHIPS
492   WHERE QUOTE_LINE_ID in (SELECT quote_line_id
493                           FROM ASO_PRICE_ADJUSTMENTS
494                           WHERE quote_header_id = p_qte_header_rec.quote_header_id
495                           AND quote_line_id IS NOT NULL);
496 
497   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
498     aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Rltd adj Lines deleted '||sql%ROWCOUNT,1,'Y');
502   DELETE FROM ASO_PRICE_ADJUSTMENTS
499     aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Begin DELETE FROM ASO_PRICE_ADJUSTMENTS', 1, 'Y');
500   END IF;
501 
503   WHERE quote_header_id = p_qte_header_rec.quote_header_id;
504   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
505     aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Adjustment Lines deleted '||sql%ROWCOUNT,1,'Y');
506   END IF;
507 
508 
509   If (l_qte_line_tbl.count <> 0 ) OR (p_control_rec.pricing_event = 'ORDER') then
510 --Condition was placed because engine call was not necessary if the event is price and there are no lines
511 
512    --Need to modify the global index table of pls integer types
513   l_global_pls_tbl := ASO_PRICING_CORE_PVT.G_LDET_LINE_INDEX_TBL;
514   ASO_PRICING_CORE_PVT.G_LDET_LINE_INDEX_TBL:= ASO_PRICING_CORE_PVT.Modify_Global_PlsIndex_Table(
515                                                     p_global_tbl => l_global_pls_tbl,
516                                                     p_search_tbl => px_line_index_search_tbl);
517   l_global_num_tbl := ASO_PRICING_CORE_PVT.G_RLTD_LINE_INDEX_TBL;
518   ASO_PRICING_CORE_PVT.G_RLTD_LINE_INDEX_TBL:= ASO_PRICING_CORE_PVT.Modify_Global_NumIndex_Table(
519                                                     p_global_tbl => l_global_num_tbl,
520                                                     p_search_tbl => px_line_index_search_tbl);
521   l_global_num_tbl := ASO_PRICING_CORE_PVT.G_RLTD_RELATED_LINE_IND_TBL;
522   ASO_PRICING_CORE_PVT.G_RLTD_RELATED_LINE_IND_TBL:= ASO_PRICING_CORE_PVT.Modify_Global_NumIndex_Table(
523                                                     p_global_tbl => l_global_num_tbl,
524                                                     p_search_tbl => px_line_index_search_tbl);
525 
526   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
527     aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Populate_QP_Temp_tables...',1,'Y');
528     l_pricing_end_time := dbms_utility.get_time;
529     l_accum_aso_time := l_accum_aso_time + (l_pricing_end_time - l_pricing_start_time);
530   END IF;
531 
532   ASO_PRICING_CORE_PVT.populate_qp_temp_tables;
533 
534   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
535      l_pricing_start_time := dbms_utility.get_time;
536      l_accum_qp_time := l_accum_qp_time + (l_pricing_start_time - l_pricing_end_time);
537   END IF;
538 
539 
540   -- Set the control rec for QP
541 
542   l_req_control_rec.pricing_event := p_control_rec.pricing_event;
543   l_req_control_rec.calculate_flag := p_control_rec.calculate_flag;
544   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
545     aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: l_req_control_rec.calculate_flag:'||l_req_control_rec.calculate_flag,1,'Y');
546   END IF;
547   l_req_control_rec.simulation_flag := p_control_rec.simulation_flag;
548   l_req_control_rec.TEMP_TABLE_INSERT_FLAG := 'N';  ---- Modified
549   l_req_control_rec.source_order_amount_flag := 'Y';
550   l_req_control_rec.GSA_CHECK_FLAG := 'Y';
551   l_req_control_rec.GSA_DUP_CHECK_FLAG := 'Y';
552   l_req_control_rec.REQUEST_TYPE_CODE := p_control_rec.request_type;
553   l_req_control_rec.rounding_flag := 'Q';
554 
555   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
556     aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of QP_PREQ_PUB.PRICE_REQUEST', 1, 'Y');
557     l_pricing_end_time := dbms_utility.get_time;
558     l_accum_aso_time := l_accum_aso_time + (l_pricing_end_time - l_pricing_start_time);
559   END IF;
560 
561 /*   Change for populating QP_PREQ_GRP.CONTROL_RECORD_TYPE.ORG_ID Yogeshwar (MOAC)  */
562 
563 	l_req_control_rec.ORG_ID :=  p_qte_header_rec.org_id;
564 
565 /*				End of Change                                (MOAC)  */
566 
567 
568 
569   QP_PREQ_PUB.PRICE_REQUEST
570           	(p_control_rec           =>l_req_control_rec
571           	,x_return_status         =>l_return_status
572           	,x_return_status_Text    =>l_return_status_Text
573           	);
574   IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
575 	x_return_status := l_return_status;
576   IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
577 	FND_MESSAGE.Set_Name('ASO', 'ASO_OM_ERROR');
578 	FND_MESSAGE.Set_Token('MSG_TXT', substr(l_return_status_text, 1,255), FALSE);
579      FND_MSG_PUB.ADD;
580   END IF;
581 	RAISE FND_API.G_EXC_ERROR;
582   END IF;
583 
584   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
585     l_pricing_start_time := dbms_utility.get_time;
586     l_accum_qp_time := l_accum_qp_time + (l_pricing_start_time - l_pricing_end_time);
587     aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: End of QP_PREQ_PUB.PRICE_REQUEST', 1, 'Y');
588     aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: After PRICE_REQUEST l_return_status:'
589                        ||l_return_status, 1, 'Y');
590     aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: After PRICE_REQUEST l_return_status_text '
591                        ||l_return_status_text,1,'Y');
592     aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Post_Price_Request...',1,'Y');
593   END IF;
594 
595 
596   ASO_PRICING_CORE_PVT.Copy_Price_To_Quote(
597      		P_Api_Version_Number       => 1.0,
598      		P_Init_Msg_List            => FND_API.G_FALSE,
599      		P_Commit                   => FND_API.G_FALSE,
600      		p_control_rec		       => l_prc_control_rec,
601      		p_qte_header_rec           => p_qte_header_rec,
602      		x_return_status            => x_return_status,
603      		x_msg_count                => x_msg_count,
604      		x_msg_data                 => x_msg_data);
605  IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
606    aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Copy_Price_To_Quote : x_return_status: '
610  If p_internal_call_flag = 'N' then
607 		    ||nvl(x_return_status,'NULL'),1,'Y');
608  END IF;
609 
611     IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
612        ASO_PRICING_CORE_PVT.Process_PRG(
613      		P_Api_Version_Number       => 1.0,
614      		P_Init_Msg_List            => FND_API.G_FALSE,
615      		P_Commit                   => FND_API.G_FALSE,
616      		p_control_rec		       => l_prc_control_rec,
617      		p_qte_header_rec           => p_qte_header_rec,
618 			x_qte_line_tbl             => x_qte_line_tbl,
619      		x_return_status            => x_return_status,
620      		x_msg_count                => x_msg_count,
621      		x_msg_data                 => x_msg_data);
622 
623        IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
624           aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Process_PRG : x_return_status: '
625                              ||nvl(x_return_status,'NULL'),1,'Y');
626        END IF;
627 
628     END IF;--x_return_status = FND_API.G_RET_STS_SUCCESS
629 
630     IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
631        IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
632           aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: After Process_PRG : x_qte_line_tbl.count: '
633                              ||x_qte_line_tbl.count,1,'Y');
634        END IF;
635 
636        ASO_PRICING_CORE_PVT.Process_Charges(
637                P_Api_Version_Number       => 1.0,
638                P_Init_Msg_List            => FND_API.G_FALSE,
639                P_Commit                   => FND_API.G_FALSE,
640                p_control_rec              => l_prc_control_rec,
641                p_qte_header_rec           => p_qte_header_rec,
642                x_return_status            => x_return_status,
643                x_msg_count                => x_msg_count,
644                x_msg_data                 => x_msg_data);
645       IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
646          aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Process_Charges : x_return_status: '
647                             ||nvl(x_return_status,'NULL'),1,'Y');
648       END IF;
649 
650     END IF;--x_return_status = FND_API.G_RET_STS_SUCCESS
651 
652  End If;--p_internal_call_flag = 'N'
653  End if;--(l_qte_line_tbl.count <> 0 ) OR (p_control_rec.pricing_event = 'ORDER')
654 
655 
656 FND_MSG_PUB.Count_And_Get
657       ( p_encoded    => 'F',
658         p_count      =>   x_msg_count,
659         p_data       =>   x_msg_data
660       );
661 
662 FOR l IN 1 .. x_msg_count LOOP
663     x_msg_data := FND_MSG_PUB.GET( p_msg_index => l, p_encoded => 'F');
664     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
665       aso_debug_pub.add('Messge count and get '||x_msg_data, 1, 'Y');
666       aso_debug_pub.add('Messge count and get '||x_msg_count, 1, 'Y');
667     END IF;
668 END LOOP;
669 
670 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
671    l_pricing_end_time := dbms_utility.get_time;
672    l_accum_aso_time := l_accum_aso_time + (l_pricing_end_time - l_pricing_start_time);
673    aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:**********Timing in Price Entire Quote**************',1,'Y');
674    aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:Total time taken (in secs) in Price Entire Quote(Besides Pricing):'||l_accum_aso_time/100,1,'Y');
675    aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:Total time taken (in secs) in Pricing+BuildContext:'||l_accum_qp_time/100,1,'Y');
676 END IF;
677 
678 END Price_Entire_Quote;
679 
680 
681 /******************************************************************************
682  *                                                                            *
683  *  Code Path when price mode is QUOTE_LINE                                   *
684  *                                                                            *
685  ******************************************************************************/
686 
687 
688 PROCEDURE Price_Quote_Line(
689 
690      P_Api_Version_Number       IN   NUMBER,
691      P_Init_Msg_List            IN   VARCHAR2 := FND_API.G_FALSE,
692      P_Commit                   IN   VARCHAR2 := FND_API.G_FALSE,
693      p_control_rec              IN   ASO_PRICING_INT.PRICING_CONTROL_REC_TYPE,
694      p_qte_header_rec           IN   ASO_QUOTE_PUB.Qte_Header_Rec_Type,
695      p_hd_shipment_rec          IN   ASO_QUOTE_PUB.Shipment_Rec_Type
696                                      := ASO_QUOTE_PUB.G_Miss_Shipment_Rec,
697      p_qte_line_tbl             IN   ASO_QUOTE_PUB.Qte_Line_Tbl_Type,
698      x_return_status            OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
699      x_msg_count                OUT NOCOPY /* file.sql.39 change */ NUMBER,
700      x_msg_data                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2)
701 IS
702     l_api_name                    CONSTANT VARCHAR2(30) := 'Price_Quote_Line';
703     l_api_version_number          CONSTANT NUMBER   := 1.0;
704     --l_request_type                VARCHAR2(60);
705     l_req_control_rec             QP_PREQ_GRP.CONTROL_RECORD_TYPE;
706     l_qte_line_id                 NUMBER;
707     l_child_qte_line_id           NUMBER;
708     l_found                       NUMBER;
709     l_qte_line_dtl_rec            ASO_QUOTE_PUB.Qte_Line_Dtl_Rec_Type;
710     l_shipment_rec                ASO_QUOTE_PUB.Shipment_Rec_Type;
711     l_return_status               VARCHAR2(1);
712     l_return_status_text          VARCHAR2(2000);
713     l_message_text                VARCHAR2(2000);
714     i                             BINARY_INTEGER;
715     j                             BINARY_INTEGER;
719     x_pass_line                   VARCHAR2(10);
716     l_qte_line_tbl                ASO_QUOTE_PUB.Qte_Line_Tbl_Type;
717     l_qte_line_dtl_tbl            ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type;
718     l_shipment_tbl                ASO_QUOTE_PUB.Shipment_Tbl_Type;
720     l_qte_line_id_tbl             JTF_NUMBER_TABLE;
721     l_qte_adj_id_tbl              JTF_NUMBER_TABLE;
722     l_service_qte_line_id_tbl     JTF_NUMBER_TABLE;
723     l_qte_line_rec            	  ASO_QUOTE_PUB.Qte_Line_Rec_Type;
724     l_ref_type_code               ASO_QUOTE_LINE_DETAILS.SERVICE_REF_TYPE_CODE%TYPE;
725     l_service_ref_line_id         ASO_QUOTE_LINE_DETAILS.SERVICE_REF_LINE_ID%TYPE;
726     l_service_proc_done_flag      VARCHAR2(1);
727     l_service_product_id_tbl      Index_Link_Tbl_Type;
728     l_service_ref_line_id_tbl     Index_Link_Tbl_Type;
729     l_service_id_tbl              Index_Link_Tbl_Type;
730     lx_index_counter              Number;
731     l_index_counter               Number; -- This is used to keep track of lx_index_counter
732     l_price_index                 Number;
733     px_line_index_search_tbl      ASO_PRICING_CORE_PVT.Index_Link_Tbl_Type;
734     l_global_pls_tbl              QP_PREQ_GRP.pls_integer_type;
735     l_global_num_tbl              QP_PREQ_GRP.NUMBER_TYPE;
736 
737     -- The following three cursors are needed for service lines processing.
738     CURSOR c_Qte_Line_SVC_ref(p_qte_line_id IN NUMBER) IS
739 	 SELECT service_ref_type_code , service_ref_line_id
740 	 FROM   ASO_QUOTE_LINE_DETAILS
741 	 WHERE  quote_line_id = p_qte_line_id;
742 
743     CURSOR c_order_line (p_order_line_id IN NUMBER) IS
744 	 SELECT line_id, inventory_item_id, pricing_quantity, pricing_quantity_uom,
745 	        unit_list_price, price_list_id
746 	 FROM OE_ORDER_LINES_ALL
747 	 WHERE line_id = p_order_line_id;
748 
749     -- Cursors used for the customer account (Sold_to_org_id)
750     CURSOR c_get_cust_acct_id IS
751 	 SELECT cust_account_id
752 	 FROM ASO_QUOTE_HEADERS_ALL
753 	 WHERE quote_header_id = p_qte_header_rec.quote_header_id;
754 
755     CURSOR c_csi_line(p_instance_id IN NUMBER, p_cust_account_id NUMBER) IS
756 	 SELECT   original_order_line_id
757 	 FROM     csi_instance_accts_rg_v
758 	 WHERE    customer_product_id = p_instance_id
759 	 AND      account_id          = p_cust_account_id;
760 
761 BEGIN
762 
763 
764 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
765   aso_debug_pub.add('Start of Price_Quote_Line',1,'Y');
766 END IF;
767 -- Standard Start of API savepoint
768 SAVEPOINT PRICE_QUOTE_LINE_PVT;
769 
770 -- Standard call to check for call compatibility.
771 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
772                                      p_api_version_number,
773                                      l_api_name,
774                                      G_PKG_NAME)
775 THEN
776    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
777 END IF;
778 
779 x_return_status := FND_API.G_RET_STS_SUCCESS;
780 
781 
782 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
783   aso_debug_pub.add('p_control_rec.request_type:'||p_control_rec.request_type,1,'Y');
784   aso_debug_pub.add('p_control_rec.pricing_event:'||p_control_rec.pricing_event,1,'Y');
785 END IF;
786 
787 
788 l_price_index := 1;
789 
790 
791 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
792   aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Set_Global_Rec  - Header Level...  ',1,'Y');
793 END IF;
794 ASO_PRICING_INT.G_HEADER_REC := ASO_PRICING_CORE_PVT.Set_Global_Rec (
795   p_qte_header_rec     => p_qte_header_rec,
796   p_shipment_rec       => p_hd_shipment_rec);
797 
798 ASO_PRICING_CORE_PVT.Print_G_Header_Rec;
799 
800 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
801   aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of QP Build Contexts  - Header Level ...  ',1,'Y');
802   aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: p_qte_header_rec.quote_header_id: '
803                      ||NVL(to_char(p_qte_header_rec.quote_header_id),'NULL'),1,'Y');
804 END IF;
805 
806 QP_Price_Request_Context.Set_Request_Id;
807 
808 QP_ATTR_MAPPING_PUB.Build_Contexts (
809   P_REQUEST_TYPE_CODE          => p_control_rec.request_type,
810   P_PRICING_TYPE_CODE          => 'H',
811   P_line_index                 => l_price_index,
812   P_pricing_event              => p_control_rec.pricing_event,
813   p_check_line_flag            => 'N',
814   x_pass_line                  => x_pass_line);
815 
816 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
817   aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: x_pass_line: '||nvl(x_pass_line,'null'),1,'Y');
818   aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Copy_Header_To_Request...',1,'Y');
819 END IF;
820 
821 
822 ASO_PRICING_CORE_PVT.Copy_Header_To_Request(
823   p_Request_Type                => p_control_rec.request_type,
824   p_price_line_index            => l_price_index,
825   px_index_counter              => 1);
826 
827 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
828   aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Append_asked_for...',1,'Y');
829 END IF;
830 
831 lx_index_counter := 1;
832 ASO_PRICING_CORE_PVT.Append_asked_for(
833   p_pricing_event                => p_control_rec.pricing_event,
834   p_price_line_index             => l_price_index,
835   p_header_id                    => p_qte_header_rec.quote_header_id,
836   px_index_counter               => lx_index_counter);
837 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
841 
838   aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: After Header Append_asked_for: lx_index_counter:'
839                      ||lx_index_counter,1,'Y');
840 END IF;
842 IF ( p_control_rec.pricing_event = 'BATCH' ) THEN
843    IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
844      aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Query_Price_Adj_Header...',1,'Y');
845    END IF;
846    ASO_PRICING_CORE_PVT.Query_Price_Adj_Header(
847    p_quote_header_id        => p_qte_header_rec.quote_header_id) ;
848 END IF;
849 --increment the line index
850 l_price_index:= l_price_index+1;
851 
852 -- Header ends here
853 
854 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
855   aso_debug_pub.add('************************ HEADER LEVEL ENDS *******************************',1,'Y');
856   aso_debug_pub.add('Code Path PRICE_MODE = QUOTE_LINE where  Line Count <> 0 ',1,'Y');
857   aso_debug_pub.add('************************ LINE LEVEL BEGINS *******************************',1,'Y');
858 END IF;
859 
860 --  Added this code to delete all the adjustments when there are no items in the cart
861 IF NVL(p_qte_line_tbl.count,0) = 0 THEN
862    IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
863       aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Deleting from ASO_PRICE_ADJUSTMENTS if p_qte_line_tbl.count = 0',1,'Y');
864    END IF;
865 
866    IF p_control_rec.pricing_event = 'BATCH' THEN
867       DELETE FROM aso_price_adjustments
868       WHERE quote_header_id = p_qte_header_rec.quote_header_id
869       AND   quote_line_id IS NULL;
870     End if;--p_control_rec.pricing_event = 'BATCH'
871 
872     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
873        aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Adjustment Lines deleted if p_qte_line_tbl.count = 0 '||sql%ROWCOUNT,1,'Y');
874     END IF;
875 END IF; -- p_qte_line_tbl.count = 0
876 
877 
878 IF p_qte_line_tbl.count IS NOT NULL AND
879    p_qte_line_tbl.count > 0
880 THEN
881      IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
882         aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: p_qte_line_tbl.count                      :'||NVL(p_qte_line_tbl.count,0),1,'Y');
883      END IF;
884 
885 
886      -- Filtering OUT NOCOPY /* file.sql.39 change */ deleted and updated lines from p_qte_line_tbl.
887 
888      IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
889         aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Filtering Quote lines that are deleted...',1,'Y');
890      END IF;
891      l_service_proc_done_flag := 'N';
892      IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
893         aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Initialize... l_service_proc_done_flag     :'||NVL(l_service_proc_done_flag,'null'),1,'Y');
894      END IF;
895      For i in 1..p_qte_line_tbl.count Loop
896 	IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
897 	   aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: p_qte_line_tbl('||i||').quote_line_id           :'||NVL(to_char(p_qte_line_tbl(i).quote_line_id),'NULL'),1,'Y');
898 	   aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: p_qte_line_tbl('||i||').operation_code          :'||NVL(p_qte_line_tbl(i).operation_code,'null'),1,'Y');
899 	   aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: p_qte_line_tbl('||i||').service_item_flag       :'||NVL(p_qte_line_tbl(i).service_item_flag,'null'),1,'Y');
900 	  aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: p_qte_line_tbl('||i||').serviceable_product_flag:'||NVL(p_qte_line_tbl(i).serviceable_product_flag,'null'),1,'Y');
901 	END IF;
902 	IF p_qte_line_tbl(i).operation_code = 'DELETE' THEN
903               IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
904                  aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: p_qte_line_tbl('||i||').quote_line_id - deleted :'||NVL(to_char(p_qte_line_tbl(i).quote_line_id),'NULL'),1,'Y');
905               END IF;
906 	   -- This Quote Line is not added to the l_quote_line_tbl.
907 	ELSE
908 	   -- Operation is either CREATE or UPDATE.
909 
910 	   -- Service Processing Logic Begins Here...
911 
912 		IF NVL(p_qte_line_tbl(i).serviceable_product_flag,'N') = 'Y'  AND
913                    NVL(l_service_proc_done_flag,'N') = 'N'
914 		THEN
915 		    l_service_product_id_tbl(p_qte_line_tbl(i).quote_line_id) := p_qte_line_tbl(i).quote_line_id;
916                     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
917                        aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: l_service_product_id_tbl('||p_qte_line_tbl(i).quote_line_id||').           :'||NVL(to_char(l_service_product_id_tbl(p_qte_line_tbl(i).quote_line_id)),'null'),1,'Y');
918 		    END IF;
919 		END IF;
920 
921 		IF NVL(p_qte_line_tbl(i).service_item_flag,'N') = 'Y'  THEN
922 		    IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
923 		       aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Service lines processing........ ',1,'Y');
924 		    END IF;
925 		    IF NVL(l_service_proc_done_flag,'N') = 'N' THEN
926 			   FOR j IN i..p_qte_line_tbl.COUNT LOOP
927 				IF NVL(p_qte_line_tbl(j).serviceable_product_flag,'N') = 'Y' THEN
928 				   l_service_product_id_tbl(p_qte_line_tbl(j).quote_line_id) := p_qte_line_tbl(j).quote_line_id;
929 				   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
930 				      aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: l_service_product_id_tbl('||p_qte_line_tbl(j).quote_line_id||').            :'||NVL(to_char(l_service_product_id_tbl(p_qte_line_tbl(j).quote_line_id)),'null'),1,'Y');
931 				   END IF;
932 				END IF;
933 				IF NVL(p_qte_line_tbl(j).service_item_flag,'N') = 'Y' THEN
934 				   l_service_id_tbl(p_qte_line_tbl(j).quote_line_id) := p_qte_line_tbl(j).quote_line_id;
935 				   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
936 				      aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: l_service_id_tbl('||p_qte_line_tbl(j).quote_line_id||').                  :'||NVL(to_char(l_service_id_tbl(p_qte_line_tbl(j).quote_line_id)),'null'),1,'Y');
940 			   l_service_proc_done_flag := 'Y';
937 				   END IF;
938 				END IF;
939 			   END LOOP;
941 		    END IF;
942 		    IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
943 		       aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: l_service_proc_done_flag: '||NVL(l_service_proc_done_flag,'null'),1,'Y');
944 			IF (l_service_id_tbl.exists(1)) THEN
945 				aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: l_service_id_tbl.count: '||NVL(l_service_id_tbl.count,0),1,'Y');
946 			END IF;
947 			IF (l_service_product_id_tbl.exists(1)) THEN
948 				aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: l_service_product_id_tbl.count: '||NVL(l_service_product_id_tbl.count,0),1,'Y');
949 			END IF;
950 		    END IF;
951 
952 		    OPEN c_qte_line_SVC_ref(p_qte_line_tbl(i).quote_line_id);
953 		    FETCH c_qte_line_SVC_ref INTO l_ref_type_code, l_service_ref_line_id;
954 		    CLOSE c_qte_line_SVC_ref;
955 
956 		    IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
957 			aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: l_ref_type_code: '||NVL(l_ref_type_code,'null'),1,'Y');
958 			aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: l_service_ref_line_id: '||NVL(to_char(l_service_ref_line_id),'NULL'),1,'Y');
959 			aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Service Line collection  to pass for Query Relationships procedure... ',1,'Y');
960 		    END IF;
961 
962 		    -- l_service_qte_line_id_tbl is used to collect all quote line id(s) of service lines only.
963 		    -- l_service_qte_line_id_tbl is one of the parameter for ASO_PRICING_CORE_PVT.Query_Relationships procedure.
964 		    IF l_service_qte_line_id_tbl.exists(1) THEN
965 			IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
966 				aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Service Qte Line ID Tbl already exists... ',1,'Y');
967 			END IF;
968 			l_service_qte_line_id_tbl.extend;
969 			l_service_qte_line_id_tbl(l_service_qte_line_id_tbl.COUNT) := p_qte_line_tbl(i).quote_line_id;
970 		    ELSE
971 			IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
972 				aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Service Qte Line ID Tbl NOT exists... ',1,'Y');
973 			END IF;
974 			l_service_qte_line_id_tbl := JTF_NUMBER_TABLE(p_qte_line_tbl(i).quote_line_id);
975 		    END IF;
976 
977 		    IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
978 			aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Parent Service Line collection ... ',1,'Y');
979 		    END IF;
980 
981 
982  		    -- l_service_ref_line_id_tbl is used for parent line id collection and its different
983 		    -- from l_service_qte_line_id_tbl.
984 
985 		    IF l_ref_type_code = 'ORDER' THEN
986 			IF l_service_ref_line_id_tbl.exists(l_service_ref_line_id) THEN
987 				IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
988 				   aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Parent Order Line exists in p_qte_line_tbl. ',1,'Y');
989 				END IF;
990 			ELSE
991 				FOR c_order_line_rec IN c_order_line(l_service_ref_line_id) LOOP
992 				    l_service_ref_line_id_tbl(l_service_ref_line_id) := l_service_ref_line_id;
993     				    IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
994 				       aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Parent Order Line Not Exists... ', 1, 'N');
995 				       aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: l_service_ref_line_id_tbl('||l_service_ref_line_id||').: '||NVL(to_char(l_service_ref_line_id_tbl(l_service_ref_line_id)),'null'),1,'Y');
996 				    END IF;
997 				    l_qte_line_rec.QUOTE_LINE_ID := c_order_line_rec.LINE_ID;
998 				    l_qte_line_rec.INVENTORY_ITEM_ID := c_order_line_rec.INVENTORY_ITEM_ID;
999 				    l_qte_line_rec.QUANTITY := c_order_line_rec.PRICING_QUANTITY;
1000 				    l_qte_line_rec.UOM_CODE := c_order_line_rec.PRICING_QUANTITY_UOM;
1001 				    l_qte_line_rec.PRICE_LIST_ID := c_order_line_rec.PRICE_LIST_ID;
1002 				    l_qte_line_rec.LINE_LIST_PRICE := c_order_line_rec.UNIT_LIST_PRICE;
1003 				    l_qte_line_rec.LINE_CATEGORY_CODE := 'SERVICE_REF_ORDER_LINE';
1004 
1005 				    l_Qte_Line_tbl(l_Qte_Line_tbl.COUNT+1) := l_Qte_Line_rec;
1006 				    IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1007 					aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Order Line Count: '|| NVL(l_Qte_line_tbl.COUNT,0), 1, 'N');
1008 				    END IF;
1009 				END LOOP;
1010 			END IF; -- Parent line already exists.
1011 		    ELSIF l_ref_type_code = 'CUSTOMER_PRODUCT' THEN
1012 			IF l_service_ref_line_id_tbl.exists(l_service_ref_line_id) THEN
1013 				IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1014 					aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Parent Instance Line exists in p_qte_line_tbl. ',1,'Y');
1015 				END IF;
1016 			ELSE
1017 				FOR c_get_cust_acct_id_rec IN c_get_cust_acct_id LOOP
1018 				     FOR c_csi_line_rec IN c_csi_line
1019 				          (l_service_ref_line_id,c_get_cust_acct_id_rec.cust_account_id) LOOP
1020 					IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1021 						aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: c_get_cust_acct_id_rec.cust_account_id'||c_get_cust_acct_id_rec.cust_account_id, 1, 'N');
1022 					END IF;
1023 					l_service_ref_line_id_tbl(l_service_ref_line_id) := l_service_ref_line_id;
1024 					IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1025 						aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Parent Instance Line not exists...', 1, 'N');
1026 						aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: l_service_ref_line_id_tbl('||l_service_ref_line_id||').: '||NVL(to_char(l_service_ref_line_id_tbl(l_service_ref_line_id)),'null'),1,'Y');
1027 					END IF;
1028 					FOR c_order_line_rec IN c_order_line(c_csi_line_rec.original_order_line_id) LOOP
1029 						l_qte_line_rec.QUOTE_LINE_ID := l_service_ref_line_id;
1030 						l_qte_line_rec.INVENTORY_ITEM_ID := c_order_line_rec.INVENTORY_ITEM_ID;
1031 						l_qte_line_rec.QUANTITY := c_order_line_rec.PRICING_QUANTITY;
1032 						l_qte_line_rec.UOM_CODE := c_order_line_rec.PRICING_QUANTITY_UOM;
1036 						l_Qte_Line_tbl(l_Qte_Line_tbl.COUNT+1) := l_Qte_Line_rec;
1033 						l_qte_line_rec.PRICE_LIST_ID := c_order_line_rec.PRICE_LIST_ID;
1034 						l_qte_line_rec.LINE_LIST_PRICE := c_order_line_rec.UNIT_LIST_PRICE;
1035 						l_qte_line_rec.LINE_CATEGORY_CODE := 'SERVICE_REF_CUSTOMER_LINE';
1037 						IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1038 							aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Instance Line Count: '|| NVL(l_Qte_line_tbl.COUNT,0), 1, 'N');
1039 						END IF;
1040 					END LOOP;--c_order_line
1041 				     END LOOP;--c_csi_line
1042 				END LOOP;-- c_get_cust_acct_id
1043 			END IF; -- Parent line already exists.
1044 		    ELSIF l_ref_type_code = 'QUOTE' THEN
1045 			IF l_service_ref_line_id_tbl.exists(l_service_ref_line_id) OR
1046 			   l_service_product_id_tbl.exists(l_service_ref_line_id)
1047 			THEN
1048 				IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1049 					aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Parent Quote Line exists in p_qte_line_tbl. ',1,'Y');
1050 				END IF;
1051 			ELSE
1052 				l_service_ref_line_id_tbl(l_service_ref_line_id) := l_service_ref_line_id;
1053 				IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1054 					aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Parent Quote Line NOT exists in p_qte_line_tbl. ',1,'Y');
1055 					aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: l_service_ref_line_id_tbl('||l_service_ref_line_id||').                       :'||NVL(to_char(l_service_ref_line_id_tbl(l_service_ref_line_id)),'null'),1,'Y');
1056 				END IF;
1057 				l_qte_line_tbl(l_qte_line_tbl.COUNT+1) := ASO_UTILITY_PVT.Query_Qte_Line_Row(l_service_ref_line_id);
1058 				IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1059 					aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Quote Line Count: '|| NVL(l_Qte_line_tbl.COUNT,0), 1, 'N');
1060 				END IF;
1061 			END IF;-- Parent line already exists.
1062 		    END IF; -- ref_type_code check.
1063 		END IF; -- Service Item Flag Check.
1064 		IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1065 			aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start the Process of adding the service(child)or any normal lines into l_qte_line_tbl ...',1,'Y');
1066 		END IF;
1067 		IF l_qte_line_tbl.exists(1) THEN
1068 			IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1069 				aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: One or more records exists in l_qte_line_tbl...',1,'Y');
1070      		END IF;
1071 			--changes for bug 4353654
1072 			l_qte_line_rec := ASO_UTILITY_PVT.Query_Qte_Line_Row(p_qte_line_tbl(i).quote_line_id);
1073 			l_qte_line_tbl(l_qte_line_tbl.COUNT+1) := l_qte_line_rec;
1074 			IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1075 				aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: After adding a new record in l_qte_line_tbl...',1,'Y');
1076 			END IF;
1077 		ELSE
1078 			IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1079 				aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: No record exists in l_qte_line_tbl...',1,'Y');
1080 			END IF;
1081 			l_qte_line_tbl(1) := ASO_UTILITY_PVT.Query_Qte_Line_Row(p_qte_line_tbl(i).quote_line_id);
1082 			IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1083 				aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: After adding a new record in l_qte_line_tbl...',1,'Y');
1084 			END IF;
1085 		END IF; -- l_qte_line_tbl.exists.
1086 	END IF; -- operation code check
1087      END LOOP;
1088 
1089      IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1090 	aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: TOTAL Number of records in  l_qte_line_tbl...   :'||NVL(l_qte_line_tbl.count,0),1,'Y');
1091 	aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: *************** l_qte_line_tbl List ****************   ',1,'Y');
1092 	For i in 1..l_qte_line_tbl.count Loop
1093 		aso_debug_pub.add('ASO_PRICING_FLOWS_PVT : l_qte_line_tbl('||i||').quote_line_id       :'||NVL(l_qte_line_tbl(i).quote_line_id,0),1,'Y');
1094 		aso_debug_pub.add('ASO_PRICING_FLOWS_PVT : l_qte_line_tbl('||i||').serviceable_product_flag:'||NVL(l_qte_line_tbl(i).serviceable_product_flag,'null'),1,'Y');
1095 		aso_debug_pub.add('ASO_PRICING_FLOWS_PVT : l_qte_line_tbl('||i||').service_item_flag:'||NVL(l_qte_line_tbl(i).service_item_flag,'null'),1,'Y');
1096 	END LOOP;
1097 	aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: *************** l_qte_line_tbl List End ****************   ',1,'Y');
1098     END IF;
1099 
1100     IF (l_service_qte_line_id_tbl.exists(1)) THEN
1101 	IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1102 		aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: l_service_qte_line_id_tbl.count                 :'||NVL(l_service_qte_line_id_tbl.count,0),1,'Y');
1103 	END IF;
1104     ELSE
1105 	IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1106 		aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: No service lines exists',1,'Y');
1107 	END IF;
1108     END IF;
1109 
1110     For i in 1..l_qte_line_tbl.count Loop
1111 
1112 		IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1113 			aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Query_Line_Dtl_Rows...',1,'Y');
1114 			aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: l_qte_line_tbl('||i||').quote_line_id               :'||NVL(l_qte_line_tbl(i).quote_line_id,0),1,'Y');
1115 		END IF;
1116 		l_qte_line_id := l_qte_line_tbl(i).quote_line_id;
1117 		l_qte_line_dtl_tbl := ASO_UTILITY_PVT.Query_Line_Dtl_Rows(l_qte_line_id);
1118 
1119 
1120 		IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1121 			aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Defaulting Hdr Lvl Price List and Currency..',1,'Y');
1122 			aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: p_qte_header_rec.currency_code                :'||NVL(p_qte_header_rec.currency_code,'NULL'),1,'Y');
1123 			aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: p_qte_header_rec.price_list_id                :'||NVL(to_char(p_qte_header_rec.price_list_id),'NULL'),1,'Y');
1124 		END IF;
1125 		-- Pass header_level currency_code to line level by default.
1126 		l_qte_line_tbl(i).currency_code := p_qte_header_rec.currency_code;
1127 
1128 
1129 		IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1133 		IF (l_qte_line_tbl(i).price_list_id is null OR
1130 			aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: l_qte_line_tbl(i).price_list_id               :'||NVL(to_char(l_qte_line_tbl(i).price_list_id),'NULL'),1,'Y');
1131 		END IF;
1132 		-- Pass Header level price list by default.
1134 		    l_qte_line_tbl(i).price_list_id= FND_API.G_MISS_NUM) THEN
1135 		    l_qte_line_tbl(i).price_list_id := p_qte_header_rec.price_list_id;
1136 		END IF;
1137 
1138 
1139 		IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1140 			aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: l_qte_line_dtl_tbl.count                      :'||NVL(l_qte_line_dtl_tbl.count,0),1,'Y');
1141 		END IF;
1142 		IF l_qte_line_dtl_tbl.count = 1 THEN
1143 			l_qte_line_dtl_rec := l_qte_line_dtl_tbl(1);
1144 		ELSE
1145 			l_qte_line_dtl_rec := ASO_QUOTE_PUB.G_Miss_Qte_Line_Dtl_REC ;
1146 		END IF;
1147 
1148 		IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1149 			aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Query_Shipment_Rows..',1,'Y');
1150 		END IF;
1151 		l_shipment_tbl := ASO_UTILITY_PVT.Query_Shipment_Rows
1152 				  (p_qte_header_rec.quote_header_id, l_QTE_LINE_ID);
1153 		IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1154 			aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: l_shipment_tbl.count                          :'||NVL(l_shipment_tbl.count,0),1,'Y');
1155 		END IF;
1156 		l_shipment_rec := ASO_QUOTE_PUB.G_Miss_Shipment_rec;
1157 		IF l_shipment_tbl.count = 1 THEN
1158 			l_shipment_rec := l_shipment_tbl(1);
1159 		END IF;
1160 
1161 
1162 		IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1163 			aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Set_Global_Rec - Line Level...', 1, 'Y');
1164 		END IF;
1165 		ASO_PRICING_INT.G_LINE_REC := ASO_PRICING_CORE_PVT.Set_Global_Rec (
1166 			p_qte_line_rec               => l_qte_line_tbl(i),
1167 			p_qte_line_dtl_rec           => l_qte_line_dtl_rec,
1168 			p_shipment_rec               => l_shipment_rec);
1169 
1170 		ASO_PRICING_CORE_PVT.Print_G_Line_Rec;
1171 
1172 
1173 		IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1174 			aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of QP Build_Contexts - Line Level...',1,'Y');
1175 		END IF;
1176 
1177          QP_ATTR_MAPPING_PUB.Build_Contexts (
1178               p_request_type_code          => p_control_rec.request_type,
1179               p_line_index                 => l_price_index,
1180               p_check_line_flag            => 'N',
1181               p_pricing_event              => p_control_rec.pricing_event,
1182               p_pricing_type_code          => 'L',
1183               p_price_list_validated_flag  => 'N',
1184               x_pass_line                  => x_pass_line);
1185 
1186 
1187 		IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1188 			aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: x_pass_line                                   : '||nvl(x_pass_line,'null'),1,'Y');
1189 			aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Copy_Line_To_Request...',1,'Y');
1190 		END IF;
1191 
1192 -- Begin fix for bug 5951790.
1193 -- We should send null as selling_price to pricing engine when the pricing_event is PRICE.
1194 
1195      IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1196 
1197         aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: p_control_rec.pricing_event: ' || p_control_rec.pricing_event,1,'Y');
1198         aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Old ASO_PRICING_INT.G_LINE_REC.line_quote_price: ' || ASO_PRICING_INT.G_LINE_REC.line_quote_price,1,'Y');
1199 
1200     END IF;
1201 
1202     IF (p_control_rec.pricing_event = 'PRICE') THEN
1203         ASO_PRICING_INT.G_LINE_REC.line_quote_price :=  null;
1204     END IF;
1205 
1206    IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1207       aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: New ASO_PRICING_INT.G_LINE_REC.line_quote_price: ' ||   ASO_PRICING_INT.G_LINE_REC.line_quote_price,1,'Y');
1208    END IF;
1209 
1210 -- End fix for bug 5951790.
1211 
1212 		ASO_PRICING_CORE_PVT.Copy_Line_To_Request(
1213 			p_Request_Type         => p_control_rec.request_type,
1214                p_price_line_index    => l_price_index,
1215 			px_index_counter       => i+1);
1216 
1217 
1218 		IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1219 			aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Append_asked_for...',1,'Y');
1223 		ASO_PRICING_CORE_PVT.Append_asked_for(
1220 		END IF;
1221 
1222 		l_index_counter := lx_index_counter;
1224 			p_pricing_event       => p_control_rec.pricing_event
1225               ,p_price_line_index    => l_price_index
1226               ,p_header_id           => p_qte_header_rec.quote_header_id
1227               ,p_line_id             => l_qte_line_tbl(i).quote_line_id
1228               ,px_index_counter      => lx_index_counter);
1229 		IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1230 			aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: After Line Append_asked_for: lx_index_counter : '||NVL(lx_index_counter,0),1,'Y');
1231 		END IF;
1232 		IF lx_index_counter = 0 THEN
1233 			IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1234 				aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:Assigning the value of l_index_counter back to lx_index_counter:'||l_index_counter,1,'Y');
1235 			END IF;
1236 			lx_index_counter := l_index_counter;
1237                 END IF;
1238 
1239 		IF ( i = 1 ) THEN
1240 			l_Qte_Line_id_tbl := JTF_NUMBER_TABLE(l_qte_line_tbl(i).quote_line_id);
1241 		ELSE
1242 			l_Qte_Line_id_tbl.extend;
1243 			l_Qte_Line_id_tbl(i) := l_qte_line_tbl(i).quote_line_id;
1244 		END IF;
1245 
1246           --increment the line index
1247           px_line_index_search_tbl(l_qte_line_id) := l_price_index;
1248           l_price_index:= l_price_index+1;
1249 
1250      END LOOP;
1251 
1252      -- Call to Price Adjustment Relationships and Service Relationships
1253      IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1254         aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Query_Price_Adjustments...',1,'Y');
1255         aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: l_qte_line_id_tbl.count                               : '||NVL(l_qte_line_id_tbl.count,0),1,'Y');
1256      END IF;
1257 
1258      IF p_control_rec.pricing_event = 'BATCH' THEN
1259 		ASO_PRICING_CORE_PVT.Query_Price_Adjustments(
1260 			p_quote_header_id => p_qte_header_rec.quote_header_id,
1261 			p_qte_line_id_tbl => l_qte_line_id_tbl,
1262 			x_adj_id_tbl      => l_qte_adj_id_tbl);
1263 		IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1264 			aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: l_qte_adj_id_tbl.count                                : '||NVL(l_qte_adj_id_tbl.count,0),1,'Y');
1265 		END IF;
1266      END IF;--p_control_rec.pricing_event = 'BATCH'
1267 
1268      -- Adjustment,line,Services Relationships.
1269      IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1270         aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Query_Relationships...',1,'Y');
1271      END IF;
1272      ASO_PRICING_CORE_PVT.Query_Relationships(
1273        p_qte_adj_id_tbl  => l_qte_adj_id_tbl,
1274        p_service_qte_line_id_tbl => l_service_qte_line_id_tbl);
1275 
1276      FOR i IN 1..l_qte_line_tbl.count LOOP
1277 	IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1278 		aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Begin DELETE FROM ASO_PRICE_ADJ_ATTRIBS', 1, 'Y');
1279 	END IF;
1280 	IF p_control_rec.pricing_event = 'BATCH' THEN
1281 		DELETE FROM ASO_PRICE_ADJ_ATTRIBS
1282 		WHERE  PRICE_ADJUSTMENT_ID IN (SELECT PRICE_ADJUSTMENT_ID
1283 								 FROM ASO_PRICE_ADJUSTMENTS
1284 								 WHERE QUOTE_HEADER_ID = p_qte_header_rec.quote_header_id
1285 								 AND QUOTE_LINE_ID = l_qte_line_tbl(i).quote_line_id);
1286 
1287 		IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1288 			aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Adj Attribs Lines deleted '||sql%ROWCOUNT,1,'Y');
1289 		     aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Begin DELETE FROM ASO_PRICE_ADJ_RELATIONSHIPS', 1, 'Y');
1290 		END IF;
1291 		DELETE FROM ASO_PRICE_ADJ_RELATIONSHIPS
1292 		WHERE QUOTE_LINE_ID = l_qte_line_tbl(i).quote_line_id;
1293 		IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1294 			aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Rltd adj Lines deleted '||sql%ROWCOUNT,1,'Y');
1295 			aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Begin DELETE FROM ASO_PRICE_ADJUSTMENTS', 1, 'Y');
1296 		END IF;
1297 
1298 		DELETE FROM ASO_PRICE_ADJUSTMENTS
1299 		WHERE quote_line_id = l_qte_line_tbl(i).quote_line_id;
1300 		IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1301 			aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Adjustment Lines deleted '||sql%ROWCOUNT,1,'Y');
1302 		END IF;
1303 	END IF;--p_control_rec.pricing_event = 'BATCH'
1304      END LOOP;
1305 
1306 END IF;  -- p_qte_line_tbl.count > 0.
1307 
1308     If l_qte_line_tbl.count >0 then
1309 
1310        --Need to modify the global index table of pls integer types
1311        l_global_pls_tbl := ASO_PRICING_CORE_PVT.G_LDET_LINE_INDEX_TBL;
1312        ASO_PRICING_CORE_PVT.G_LDET_LINE_INDEX_TBL:= ASO_PRICING_CORE_PVT.Modify_Global_PlsIndex_Table(
1313                                                     p_global_tbl => l_global_pls_tbl,
1314                                                     p_search_tbl => px_line_index_search_tbl);
1315        l_global_num_tbl := ASO_PRICING_CORE_PVT.G_RLTD_LINE_INDEX_TBL;
1316        ASO_PRICING_CORE_PVT.G_RLTD_LINE_INDEX_TBL:= ASO_PRICING_CORE_PVT.Modify_Global_NumIndex_Table(
1317                                                     p_global_tbl => l_global_num_tbl,
1318                                                     p_search_tbl => px_line_index_search_tbl);
1319        l_global_num_tbl := ASO_PRICING_CORE_PVT.G_RLTD_RELATED_LINE_IND_TBL;
1320        ASO_PRICING_CORE_PVT.G_RLTD_RELATED_LINE_IND_TBL:= ASO_PRICING_CORE_PVT.Modify_Global_NumIndex_Table(
1321                                                     p_global_tbl => l_global_num_tbl,
1322                                                     p_search_tbl => px_line_index_search_tbl);
1323 
1324     End If; -- l_qte_line_tbl.count >0
1325 
1326     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1330     ASO_PRICING_CORE_PVT.populate_qp_temp_tables;
1327        aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Populate_QP_Temp_tables...',1,'Y');
1328     END IF;
1329 
1331 
1332 	-- Set the control rec for QP
1333 
1334 	l_req_control_rec.pricing_event := p_control_rec.pricing_event;
1335 	l_req_control_rec.calculate_flag := p_control_rec.calculate_flag;
1336 	l_req_control_rec.simulation_flag := p_control_rec.simulation_flag;
1337 	l_req_control_rec.TEMP_TABLE_INSERT_FLAG := 'N';  ---- Modified
1338 	l_req_control_rec.source_order_amount_flag := 'Y';
1339 	l_req_control_rec.GSA_CHECK_FLAG := 'Y';
1340 	l_req_control_rec.GSA_DUP_CHECK_FLAG := 'Y';
1341 	l_req_control_rec.REQUEST_TYPE_CODE := p_control_rec.request_type;
1342 	l_req_control_rec.rounding_flag := 'Q';
1343 
1344 	IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1345 	  aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of QP_PREQ_PUB.PRICE_REQUEST', 1, 'Y');
1346 	END IF;
1347 
1348      /*   Change for populating QP_PREQ_GRP.CONTROL_RECORD_TYPE.ORG_ID Yogeshwar (MOAC) */
1349 
1350 	            l_req_control_rec.ORG_ID :=  p_qte_header_rec.org_id;
1351 
1352     /*				End of Change                                    (MOAC) */
1353 
1354 
1355 
1356      QP_PREQ_PUB.PRICE_REQUEST
1357 	          (p_control_rec           =>l_req_control_rec
1358 	          ,x_return_status         =>l_return_status
1359 	          ,x_return_status_Text    =>l_return_status_Text
1360 	          );
1361 
1362      IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1363 	   x_return_status := l_return_status;
1364      IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1365 	   FND_MESSAGE.Set_Name('ASO', 'ASO_OM_ERROR');
1366 	   FND_MESSAGE.Set_Token('MSG_TXT', substr(l_return_status_text, 1,255), FALSE);
1367         FND_MSG_PUB.ADD;
1368      END IF;
1369 	   RAISE FND_API.G_EXC_ERROR;
1370      END IF;
1371 
1372 	IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1373 	  aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: End of QP_PREQ_PUB.PRICE_REQUEST', 1, 'Y');
1374 	  aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: After PRICE_REQUEST l_return_status:'
1375 					 ||l_return_status, 1, 'Y');
1376 	  aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: After PRICE_REQUEST l_return_status_text '
1377 					 ||l_return_status_text,1,'Y');
1378        aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Copy_Price_To_Quote...',1,'Y');
1379 	END IF;
1380 
1381 
1382 	ASO_PRICING_CORE_PVT.Copy_Price_To_Quote(
1383 	     P_Api_Version_Number       => 1.0,
1384 	     P_Init_Msg_List            => FND_API.G_FALSE,
1385 	     P_Commit                   => p_commit,
1386 	     p_control_rec		       => p_control_rec,
1387 	     p_qte_header_rec           => p_qte_header_rec,
1388 	     x_return_status            => x_return_status,
1389 	     x_msg_count                => x_msg_count,
1390 	     x_msg_data                 => x_msg_data);
1391     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1392        aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Copy_Price_To_Quote : x_return_status: '
1393 					 ||NVL(x_return_status,'X'),1,'Y');
1394        aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Copy_Price_To_Quote : x_msg_count: '
1395 					 ||NVL(x_msg_count,0),1,'Y');
1396        aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Copy_Price_To_Quote : x_msg_data: '
1397 					 ||NVL(x_msg_data,'X'),1,'Y');
1398     END IF;
1399 
1400 IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
1401 
1402 ASO_PRICING_CORE_PVT.Process_Charges(
1403                P_Api_Version_Number       => 1.0,
1404                P_Init_Msg_List            => FND_API.G_FALSE,
1405                P_Commit                   => p_commit,
1406                p_control_rec              => p_control_rec,
1407                p_qte_header_rec           => p_qte_header_rec,
1408                x_return_status            => x_return_status,
1409                x_msg_count                => x_msg_count,
1410                x_msg_data                 => x_msg_data);
1411  IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1412    aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Process_Charges : x_return_status: '
1413               ||nvl(x_return_status,'NULL'),1,'Y');
1414  END IF;
1415 
1416 END IF;--x_return_status = FND_API.G_RET_STS_SUCCESS
1417 FND_MSG_PUB.Count_And_Get
1418       ( p_encoded    => 'F',
1419         p_count      =>   x_msg_count,
1420         p_data       =>   x_msg_data
1421       );
1422 
1423 FOR l IN 1 .. x_msg_count LOOP
1424     x_msg_data := FND_MSG_PUB.GET( p_msg_index => l, p_encoded => 'F');
1425     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1426       aso_debug_pub.add('Messge count and get '||x_msg_data, 1, 'Y');
1427       aso_debug_pub.add('Messge count and get '||x_msg_count, 1, 'Y');
1428     END IF;
1429 END LOOP;
1430 
1431 EXCEPTION
1432       WHEN FND_API.G_EXC_ERROR THEN
1433       IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1434         aso_debug_pub.add('after inside EXCEPTION  return status'||x_return_status, 1, 'Y');
1435       END IF;
1436           ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
1437            P_API_NAME => L_API_NAME
1438           ,P_PKG_NAME => G_PKG_NAME
1439           ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_ERROR
1440           ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
1441           ,P_SQLCODE => SQLCODE
1442           ,P_SQLERRM => SQLERRM
1443           ,X_MSG_COUNT => X_MSG_COUNT
1444           ,X_MSG_DATA => X_MSG_DATA
1445           ,X_RETURN_STATUS => X_RETURN_STATUS);
1446 
1447       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1448           ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
1452           ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
1449            P_API_NAME => L_API_NAME
1450           ,P_PKG_NAME => G_PKG_NAME
1451           ,P_EXCEPTION_LEVEL => FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR
1453           ,P_SQLCODE => SQLCODE
1454           ,P_SQLERRM => SQLERRM
1455           ,X_MSG_COUNT => X_MSG_COUNT
1456           ,X_MSG_DATA => X_MSG_DATA
1457           ,X_RETURN_STATUS => X_RETURN_STATUS);
1458 
1459       WHEN OTHERS THEN
1460           ASO_UTILITY_PVT.HANDLE_EXCEPTIONS(
1461            P_API_NAME => L_API_NAME
1462           ,P_PKG_NAME => G_PKG_NAME
1463           ,P_EXCEPTION_LEVEL => ASO_UTILITY_PVT.G_EXC_OTHERS
1464           ,P_PACKAGE_TYPE => ASO_UTILITY_PVT.G_PVT
1465           ,P_SQLCODE => SQLCODE
1466           ,P_SQLERRM => SQLERRM
1467           ,X_MSG_COUNT => X_MSG_COUNT
1468           ,X_MSG_DATA => X_MSG_DATA
1469           ,X_RETURN_STATUS => X_RETURN_STATUS);
1470 
1471 END Price_Quote_Line;
1472 
1473 
1474 /******************************************************************************
1475  *                                                                            *
1476  *  Code Path with change lines logic                                         *
1477  *                                                                            *
1478  ******************************************************************************/
1479 
1480 PROCEDURE Price_Quote_With_Change_Lines(
1481      P_Api_Version_Number       IN   NUMBER,
1482      P_Init_Msg_List            IN   VARCHAR2 := FND_API.G_FALSE,
1483      P_Commit                   IN   VARCHAR2 := FND_API.G_FALSE,
1484      p_control_rec              IN   ASO_PRICING_INT.PRICING_CONTROL_REC_TYPE,
1485      p_qte_header_rec           IN   ASO_QUOTE_PUB.Qte_Header_Rec_Type,
1486      p_hd_shipment_rec          IN   ASO_QUOTE_PUB.Shipment_Rec_Type
1487                                      := ASO_QUOTE_PUB.G_Miss_Shipment_Rec,
1488      p_qte_line_tbl             IN   ASO_QUOTE_PUB.Qte_Line_Tbl_Type,
1489 	p_internal_call_flag       IN   VARCHAR2 := 'N',
1490 	x_qte_line_tbl             OUT NOCOPY /* file.sql.39 change */ ASO_QUOTE_PUB.Qte_Line_Tbl_Type,
1491      x_return_status            OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
1492      x_msg_count                OUT NOCOPY /* file.sql.39 change */ NUMBER,
1493      x_msg_data                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2)
1494 IS
1495     l_api_name                    CONSTANT VARCHAR2(30) := 'Price_Quote_With_Change_Lines';
1496     l_api_version_number          CONSTANT NUMBER   := 1.0;
1497     l_req_control_rec             QP_PREQ_GRP.CONTROL_RECORD_TYPE;
1498     l_prc_control_rec             ASO_PRICING_INT.PRICING_CONTROL_REC_TYPE;
1499     l_qte_line_id                 NUMBER;
1500     l_qte_line_dtl_rec            ASO_QUOTE_PUB.Qte_Line_Dtl_Rec_Type;
1501     l_shipment_rec                ASO_QUOTE_PUB.Shipment_Rec_Type;
1502     l_return_status               VARCHAR2(1);
1503     l_return_status_text          VARCHAR2(2000);
1504     l_message_text                VARCHAR2(2000);
1505     i                             BINARY_INTEGER;
1506     j                             BINARY_INTEGER;
1507     l_qte_line_tbl                ASO_QUOTE_PUB.Qte_Line_Tbl_Type;
1508     lx_Qte_Line_Tbl               ASO_QUOTE_PUB.Qte_Line_Tbl_Type;
1509     l_qte_line_dtl_tbl            ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type;
1510     l_shipment_tbl                ASO_QUOTE_PUB.Shipment_Tbl_Type;
1511     x_pass_line                   VARCHAR2(10);
1512     l_qte_line_id_tbl             JTF_NUMBER_TABLE;
1513     l_qte_adj_id_tbl              JTF_NUMBER_TABLE;
1514     l_service_qte_line_id_tbl     JTF_NUMBER_TABLE;
1515     l_index_counter               Number; -- This is used to keep track of lx_index_counter
1516     lx_index_counter              Number;
1517     lx_order_status_rec           QP_UTIL_PUB.ORDER_LINES_STATUS_REC_TYPE;
1518     l_adj_id_tbl                  Index_Link_Tbl_Type;
1519     l_price_index                 Number;
1520     px_line_index_search_tbl      ASO_PRICING_CORE_PVT.Index_Link_Tbl_Type;
1521     l_global_pls_tbl              QP_PREQ_GRP.pls_integer_type;
1522     l_global_num_tbl              QP_PREQ_GRP.NUMBER_TYPE;
1523 
1524     l_changed_qte_line_tbl        ASO_QUOTE_PUB.Qte_Line_Tbl_Type;
1525     l_changed_line_index          NUMBER;
1526     l_check_line_flag             VARCHAR2(1);
1527     l_complete_qte_flag           VARCHAR2(1);
1528     l_db_ln_counter               NUMBER;
1529     l_processed_flag              VARCHAR2(1);
1530 
1531     l_pricing_start_time          NUMBER;
1532     l_pricing_end_time            NUMBER;
1533     l_accum_aso_time              NUMBER;
1534     l_accum_qp_time               NUMBER;
1535 
1536 
1537 BEGIN
1538 
1539 -- Standard call to check for call compatibility.
1540 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
1541                                      p_api_version_number,
1542                                      l_api_name,
1543                                      G_PKG_NAME)
1544 THEN
1545    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1546 END IF;
1547 
1548 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1549   l_pricing_start_time := dbms_utility.get_time;
1550   aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:Start of Price_Quote_With_Change_Lines',1,'Y');
1551 END IF;
1552 
1553 x_return_status := FND_API.G_RET_STS_SUCCESS;
1554 
1555 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1556   aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:p_control_rec.request_type:'||p_control_rec.request_type,1,'Y');
1557   aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:p_control_rec.pricing_event:'||p_control_rec.pricing_event,1,'Y');
1561 l_prc_control_rec := p_control_rec;
1558   aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:p_control_rec.price_mode:'||p_control_rec.price_mode,1,'Y');
1559 END IF;
1560 
1562 l_price_index := 1;
1563 l_complete_qte_flag := 'Y';
1564 
1565 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1566    aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:l_prc_control_rec.price_mode:'||l_prc_control_rec.price_mode,1,'Y');
1567 END IF;
1568 
1569 --Always process and send the summary line
1570 
1571    IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1572      aso_debug_pub.add('********************* PROCESSING HEADER STARTS *******************************',1,'Y');
1573      aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: p_internal_call_flag: '||p_internal_call_flag,1,'Y');
1574    END IF;
1575 
1576    If p_internal_call_flag = 'N' then
1577    IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1578      aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Set_Global_Rec  - Header Level...  ',1,'Y');
1579    END IF;
1580    ASO_PRICING_INT.G_HEADER_REC := ASO_PRICING_CORE_PVT.Set_Global_Rec (
1581           p_qte_header_rec     => p_qte_header_rec,
1582           p_shipment_rec       => p_hd_shipment_rec);
1583    end If;--If p_internal_call_flag = 'N' then
1584 
1585    ASO_PRICING_CORE_PVT.Print_G_Header_Rec;
1586 
1587    IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1588      aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Build_Context  - Header Level...  ',1,'Y');
1589      l_pricing_end_time := dbms_utility.get_time;
1590      l_accum_aso_time := l_pricing_end_time - l_pricing_start_time;
1591    END IF;
1592 
1593    QP_Price_Request_Context.Set_Request_Id;
1594 
1595 
1596    QP_ATTR_MAPPING_PUB.Build_Contexts (
1597       P_REQUEST_TYPE_CODE          => p_control_rec.request_type,
1598       P_PRICING_TYPE_CODE          => 'H',
1599       P_line_index                 => l_price_index,
1600       P_pricing_event              => p_control_rec.pricing_event,
1601       p_check_line_flag            => 'N',
1602       x_pass_line                  => x_pass_line);
1603 
1604    IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1605      l_pricing_start_time := dbms_utility.get_time;
1606      l_accum_qp_time := l_pricing_start_time - l_pricing_end_time;
1607      aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: x_pass_line: '||nvl(x_pass_line,'null'),1,'Y');
1608      aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Copy_Header_To_Request...',1,'Y');
1609    END IF;
1610 
1611 
1612    ASO_PRICING_CORE_PVT.Copy_Header_To_Request(
1613        p_Request_Type                   => p_control_rec.request_type,
1614        p_price_line_index               => l_price_index,
1615        px_index_counter                 => 1);
1616 
1617    IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1618      aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Append_asked_for...',1,'Y');
1619    END IF;
1620 
1621    lx_index_counter:= 1;
1622    ASO_PRICING_CORE_PVT.Append_asked_for(
1623         p_pricing_event                   => p_control_rec.pricing_event,
1624         p_price_line_index                => l_price_index,
1625         p_header_id                       => p_qte_header_rec.quote_header_id,
1626         px_index_counter                  => lx_index_counter);
1627 
1628    IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1629      aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:After Append Ask for lx_index_counter:'
1630                         ||lx_index_counter,1,'Y');
1631    END IF;
1632    --increment the line index
1633    l_price_index:= l_price_index+1;
1634 
1635    -- Header ends here
1636 
1637    IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1638      aso_debug_pub.add('************************ HEADER LEVEL ENDS *******************************',1,'Y');
1639      aso_debug_pub.add('  ',1,'Y');
1640      aso_debug_pub.add('************************ LINE LEVEL BEGINS *******************************',1,'Y');
1641      aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Before call Get_Order_Lines_Status:p_control_rec.pricing_event:'
1642                         ||p_control_rec.pricing_event,1,'Y');
1643      aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Before call Get_Order_Lines_Status:p_control_rec.request_type:'
1644                         ||p_control_rec.request_type,1,'Y');
1645      l_pricing_end_time := dbms_utility.get_time;
1646      l_accum_aso_time := l_accum_aso_time + (l_pricing_end_time - l_pricing_start_time);
1647    END IF;
1648 
1649    QP_UTIL_PUB.Get_Order_Lines_Status(p_event_code         => p_control_rec.pricing_event,
1650                                       x_order_status_rec   => lx_order_status_rec,
1651 							   p_freight_call_flag  => 'Y',
1652 							   p_request_type_code  => p_control_rec.request_type);
1653 
1654    IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1655       l_pricing_start_time := dbms_utility.get_time;
1656       l_accum_qp_time := l_accum_qp_time + (l_pricing_start_time - l_pricing_end_time);
1657 
1658       aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:lx_order_status_rec.all_lines_flag:'
1659                          ||lx_order_status_rec.all_lines_flag,1,'Y');
1660       aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:lx_order_status_rec.changed_lines_flag:'
1661                          ||lx_order_status_rec.changed_lines_flag,1,'Y');
1662       aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:lx_order_status_rec.summary_line_flag:'
1663                          ||lx_order_status_rec.summary_line_flag,1,'Y');
1664    END IF;
1665 
1666    If lx_order_status_rec.all_lines_flag = 'N' then
1667      l_prc_control_rec.PRG_REPRICE_MODE := 'F';
1668    else
1669      l_prc_control_rec.PRG_REPRICE_MODE := 'A';
1670    end if;
1671 
1672    -- Initialize the id tables
1676    if l_qte_adj_id_tbl is not NULL then
1673    if l_qte_line_id_tbl is not NULL then
1674       l_qte_line_id_tbl.delete;
1675    end if;
1677       l_qte_adj_id_tbl.delete;
1678    end if;
1679    if l_service_qte_line_id_tbl is not NULL then
1680 	 l_service_qte_line_id_tbl.delete;
1681    end if;
1682 
1683    --Query all lines and Serviceable lines
1684    IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1685       aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Query_Pricing_Line_Rows...',1,'Y');
1686    END IF;
1687 
1688    l_qte_line_tbl := ASO_UTILITY_PVT.Query_Pricing_Line_Rows(P_Qte_Header_Id => p_qte_header_rec.quote_header_id,
1689                                                              P_change_line_flag => FND_API.G_TRUE);
1690    IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1691       aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: After Query_Lines_lineIdlocation l_qte_line_tbl.count :'
1692                            ||NVL(l_qte_line_tbl.count,0),1,'Y');
1693       l_pricing_end_time := dbms_utility.get_time;
1694       l_accum_aso_time := l_accum_aso_time + (l_pricing_end_time - l_pricing_start_time);
1695    END IF;
1696 
1697    If l_qte_line_tbl.count > 0 Then
1698       --l_qte_line_tbl.count > 0
1699       --Set Check line flag from the given QP matrix
1700       --If the line is not changed and the all_lines_flag is 'Y' then only l_check_line_flag = 'Y'
1701       IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1702          l_pricing_start_time := dbms_utility.get_time;
1703          aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:Count of passed table p_qte_line_tbl.count:'
1704                             ||nvl(p_qte_line_tbl.count,0),1,'Y');
1705       END IF;
1706 
1707       For i in 1..p_qte_line_tbl.count loop
1708 	     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1709              aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:Operation code:'||p_qte_line_tbl(i).operation_code,1,'Y');
1710              aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:p_qte_line_tbl(i).quote_line_id:'
1711 	                           ||p_qte_line_tbl(i).quote_line_id,1,'Y');
1712 		END IF;
1713           if p_qte_line_tbl(i).operation_code <> 'DELETE' Then
1714              --changed line
1715              --assign all the Is_line_changed_flag to 'N' for the ones that are created and updated i.e. are the chg lines
1716 		   --Is Line Changed flag is set to 'N' because this value is what needs to be sent to BuildContext
1717 		   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1718                 aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:Assign the Is_line_changed_flag to N',1,'Y');
1719 		   END IF;
1720              l_qte_line_tbl(p_qte_line_tbl(i).quote_line_id).Is_line_changed_flag := 'N';
1721 		   l_changed_qte_line_tbl(p_qte_line_tbl(i).quote_line_id) := l_qte_line_tbl(p_qte_line_tbl(i).quote_line_id);
1722           end if;
1723 		IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1724              aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:l_qte_line_tbl(p_qte_line_tbl(i).quote_line_id).Is_line_changed_flag:'
1725 		                      ||l_qte_line_tbl(p_qte_line_tbl(i).quote_line_id).Is_line_changed_flag,1,'Y');
1726 		END IF;
1727       end loop;
1728 
1729 	 --If all lines flag is 'N' and changed lines flag 'Y' then in the table just have the changed lines.
1730 	 If (lx_order_status_rec.all_lines_flag = 'N') AND (lx_order_status_rec.changed_lines_flag = 'Y') then
1731 	    IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1732 	       aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:l_changed_qte_line_tbl.count:'
1733 		                     ||NVL(l_changed_qte_line_tbl.count,0),1,'Y');
1734 	    END IF;
1735 	    l_qte_line_tbl := l_changed_qte_line_tbl;
1736 	 End If;
1737 
1738       i := l_qte_line_tbl.first;
1739       IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1740          l_pricing_end_time := dbms_utility.get_time;
1741          l_accum_aso_time := l_accum_aso_time + (l_pricing_end_time - l_pricing_start_time);
1742       END IF;
1743 
1744       While i is not null Loop
1745 	    IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1746             l_pricing_start_time := dbms_utility.get_time;
1747             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:--------------Start line loop---------------',1,'Y');
1748 	    END IF;
1749 	    IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1750             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: l_qte_line_tbl(i).quote_line_id:'
1751 	                         ||NVL(l_qte_line_tbl(i).quote_line_id,0),1,'Y');
1752 	    END IF;
1753 
1754          l_check_line_flag := l_qte_line_tbl(i).Is_line_changed_flag;
1755 	    IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1756             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: l_check_line_flag passed to Build Context:'
1757                                ||l_check_line_flag,1,'Y');
1758 	    END IF;
1759 
1760          IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1761             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Defaulting Hdr Lvl Price List and Currency..',1,'Y');
1762             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: p_qte_header_rec.currency_code :'
1763                                ||NVL(p_qte_header_rec.currency_code,'NULL'),1,'Y');
1764             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: p_qte_header_rec.price_list_id :'
1765                                ||NVL(to_char(p_qte_header_rec.price_list_id),'NULL'),1,'Y');
1766          END IF;
1767 
1768          -- Pass header_level currency_code to line level by default.
1769          l_qte_line_tbl(i).currency_code := p_qte_header_rec.currency_code;
1770 
1771          IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1772             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: l_qte_line_tbl(i).price_list_id :'
1773                                ||NVL(to_char(l_qte_line_tbl(i).price_list_id),'NULL'),1,'Y');
1774          END IF;
1778                aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Free line so not defaulting of the price list',1,'Y');
1775          -- Pass Header level price list by default.
1776          IF l_qte_line_tbl(i).pricing_line_type_indicator = 'F' then
1777             IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1779             END IF;
1780          ELSE
1781             /*Default the price list*/
1782             If l_qte_line_tbl(i).price_list_id is null Then
1783                l_qte_line_tbl(i).price_list_id := p_qte_header_rec.price_list_id;
1784                IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1785                   aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:Price list id defaulted from Header:'
1786                                     ||NVL(to_char(l_qte_line_tbl(i).price_list_id),'NULL'),1,'Y');
1787                END IF;
1788             End if;
1789          END IF;--l_qte_line_tbl(i).pricing_line_type_indicator = 'F'
1790 
1791          l_qte_line_dtl_tbl := ASO_UTILITY_PVT.Query_Line_Dtl_Rows(l_qte_line_tbl(i).quote_line_id);
1792          IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1793             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: l_qte_line_dtl_tbl.count :'
1794                                ||NVL(l_qte_line_dtl_tbl.count,0),1,'Y');
1795          END IF;
1796          IF l_qte_line_dtl_tbl.count = 1 THEN
1797             l_qte_line_dtl_rec := l_qte_line_dtl_tbl(1);
1798          ELSE
1799             l_qte_line_dtl_rec := ASO_QUOTE_PUB.G_Miss_Qte_Line_Dtl_REC ;
1800          END IF;
1801 
1802          IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1803             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Query_Shipment_Rows..',1,'Y');
1804          END IF;
1805          l_shipment_tbl := ASO_UTILITY_PVT.Query_Shipment_Rows
1806                                            (p_qte_header_rec.quote_header_id, l_qte_line_tbl(i).quote_line_id);
1807          IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1808             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: l_shipment_tbl.count :'
1809                                ||NVL(l_shipment_tbl.count,0),1,'Y');
1810          END IF;
1811          IF l_shipment_tbl.count = 1 THEN
1812             l_shipment_rec := l_shipment_tbl(1);
1813          else
1814             l_shipment_rec := ASO_QUOTE_PUB.G_Miss_Shipment_rec;
1815          END IF;
1816          IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1817             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Set_Global_Rec - Line Level...', 1, 'Y');
1818             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:These values will be defaulted from header for pricing qualification only:',1,'Y');
1819             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:l_qte_line_tbl(i).invoice_to_party_site_id:'
1820                                ||NVL(to_char(l_qte_line_tbl(i).invoice_to_party_site_id),'NULL'),1,'Y');
1821             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:l_shipment_rec.ship_to_party_site_id:'
1822                                ||NVL(to_char(l_shipment_rec.ship_to_party_site_id),'NULL'),1,'Y');
1823             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:l_qte_line_tbl(i).agreement_id:'
1824                                ||NVL(to_char(l_qte_line_tbl(i).agreement_id),'NULL'),1,'Y');
1825             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:l_shipment_rec.ship_method_code:'
1826                                ||NVL(l_shipment_rec.ship_method_code,'NULL'),1,'Y');
1827             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:l_shipment_rec.freight_terms_code:'
1828                                ||NVL(l_shipment_rec.freight_terms_code,'NULL'),1,'Y');
1829             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:l_shipment_rec.FREIGHT_CARRIER_CODE:'
1830                                ||NVL(l_shipment_rec.FREIGHT_CARRIER_CODE,'NULL'),1,'Y');
1831             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:l_shipment_rec.FOB_CODE:'
1832                                ||NVL(l_shipment_rec.FOB_CODE,'NULL'),1,'Y');
1833             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:l_shipment_rec.REQUEST_DATE:'
1834                                ||NVL(to_char(l_shipment_rec.REQUEST_DATE),'NULL'),1,'Y');
1835          END IF;
1836 
1837          ASO_PRICING_INT.G_LINE_REC := ASO_PRICING_CORE_PVT.Set_Global_Rec (
1838                     p_qte_line_rec               => l_qte_line_tbl(i),
1839                     p_qte_line_dtl_rec           => l_qte_line_dtl_rec,
1840                     p_shipment_rec               => l_shipment_rec);
1841 
1842          ASO_PRICING_CORE_PVT.Print_G_Line_Rec;
1843 
1844          IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1845             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of QP Build_Contexts - Line Level...',1,'Y');
1846             l_pricing_end_time := dbms_utility.get_time;
1847             l_accum_aso_time := l_accum_aso_time + (l_pricing_end_time - l_pricing_start_time);
1848          END IF;
1849 
1850          QP_ATTR_MAPPING_PUB.Build_Contexts (
1851                          p_request_type_code          => p_control_rec.request_type,
1852                          p_line_index                 => l_price_index,
1853                          p_check_line_flag            => l_check_line_flag,
1854                          p_pricing_event              => p_control_rec.pricing_event,
1855                          p_pricing_type_code          => 'L',
1856                          p_price_list_validated_flag  => 'N',
1857                          x_pass_line                  => x_pass_line);
1858 
1859          IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1860             l_pricing_start_time := dbms_utility.get_time;
1861             l_accum_qp_time := l_accum_qp_time + (l_pricing_start_time - l_pricing_end_time);
1865          --Note: If the line has been changed, we have to send this line to pricing engine
1862             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: x_pass_line: '||nvl(x_pass_line,'null'),1,'Y');
1863          END IF;
1864 
1866          --Also, if the line has not been changed but x_pass_line is 'Y' then we have to send this line to PE
1867          If (x_pass_line = 'Y' AND l_check_line_flag = 'Y') OR (l_check_line_flag = 'N') then
1868             --Store this in the processed id table and put it in the PE structure
1869             /*Store all the quote_line_id processed*/
1870             IF l_Qte_Line_id_tbl.EXISTS(1) THEN
1871                IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1872                   aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of l_qte_line_id_tbl.extend...',1,'Y');
1873                END IF;
1874                l_Qte_Line_id_tbl.extend;
1875                l_Qte_Line_id_tbl(l_Qte_Line_id_tbl.count) := l_qte_line_tbl(i).quote_line_id;
1876             ELSE
1877                IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1878                   aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: First quote_line_id in l_qte_line_id_tbl',1,'Y');
1879                END IF;
1880                l_Qte_Line_id_tbl := JTF_NUMBER_TABLE(l_qte_line_tbl(i).quote_line_id);
1881             END IF;
1882 
1883             --Store all the service lines processed in the service line id table
1884 	       IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1885 	          aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: l_qte_line_tbl(i).service_item_flag: '
1886 		                       ||l_qte_line_tbl(i).service_item_flag,1,'Y');
1887 		  END IF;
1888             If l_qte_line_tbl(i).service_item_flag = 'Y' then
1889                if l_service_qte_line_id_tbl.EXISTS(1) then
1890                   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1891                      aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of l_service_qte_line_id_tbl.extend...',1,'Y');
1892                   END IF;
1893                   l_service_qte_line_id_tbl.extend;
1894                   l_service_qte_line_id_tbl(l_service_qte_line_id_tbl.count) := l_qte_line_tbl(i).quote_line_id;
1895                else
1896                   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1897                      aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: First quote_line_id in l_service_qte_line_id_tbl',1,'Y');
1898                   END IF;
1899                   l_service_qte_line_id_tbl:= JTF_NUMBER_TABLE(l_qte_line_tbl(i).quote_line_id);
1900                end if;
1901             end if;-- l_qte_line_tbl(i).service_item_flag = 'Y'
1902 
1903             IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1904                aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Copy_Line_To_Request...',1,'Y');
1905             END IF;
1906             ASO_PRICING_CORE_PVT.Copy_Line_To_Request(
1907                       p_Request_Type         => p_control_rec.request_type,
1908                       p_price_line_index    => l_price_index,
1909                       px_index_counter       => l_price_index);
1910 
1911             IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1912                aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Append_asked_for...',1,'Y');
1913                aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:Before Append Ask for lx_index_counter:'
1914                                   ||lx_index_counter,1,'Y');
1915             END IF;
1916             l_index_counter := lx_index_counter;
1917             ASO_PRICING_CORE_PVT.Append_asked_for(
1918                                        p_pricing_event   => p_control_rec.pricing_event,
1919                                        p_price_line_index => l_price_index,
1920                                        p_header_id       => p_qte_header_rec.quote_header_id,
1921                                        p_line_id         => l_qte_line_tbl(i).quote_line_id,
1922                                        px_index_counter  => lx_index_counter);
1923             IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1924                aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:After Append Ask for lx_index_counter:'
1925                                   ||lx_index_counter,1,'Y');
1926             END IF;
1927             If lx_index_counter = 0 then
1928                IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1929                   aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:Assigning l_index_counter back to lx_index_counter:'
1930 		                           ||l_index_counter,1,'Y');
1931                END IF;
1932                lx_index_counter := l_index_counter;
1933             end if;
1934 
1935             px_line_index_search_tbl(l_qte_line_tbl(i).quote_line_id) := l_price_index;--Used for modify globals
1936             --end of building one line
1937             i:= l_qte_line_tbl.next(i);
1938             l_price_index:= l_price_index+1;
1939          Else
1940             -- x_pass_line = 'N' OR l_check_line_flag = 'Y'
1941             l_complete_qte_flag := 'N';
1942             IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1943 	   	     aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:This line is not passed to PE:'
1944 		                     ||l_qte_line_tbl(i).quote_line_id,1,'Y');
1945             END IF;
1946             i:= l_qte_line_tbl.next(i);
1947          end If;--x_pass_line = 'Y' AND l_check_line_flag = 'Y'
1948 	    IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1949             l_pricing_end_time := dbms_utility.get_time;
1950             l_accum_aso_time := l_accum_aso_time + (l_pricing_end_time - l_pricing_start_time);
1951 	    END IF;
1952 
1953       End Loop;--End of While loop
1954 
1955    End If; --l_qte_line_tbl.count > 0
1956 
1957 
1958    --- Need to track the changed lines counter.....
1962         --Check no of lines in the db and the (l_price_index - 2), if <> then l_complete_qte_flag is 'N'
1959    If (lx_order_status_rec.all_lines_flag = 'N') AND (lx_order_status_rec.changed_lines_flag = 'Y') then
1960         --If l_price_index = 2 then there were no changed lines as all the records
1961         --in p_qte_line_tbl were deletes.
1963 
1964         SELECT count(rowid)
1965         INTO   l_db_ln_counter
1966         FROM ASO_QUOTE_LINES_ALL
1967         WHERE quote_header_id = p_qte_header_rec.quote_header_id;
1968         IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1969            aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:l_db_ln_counter:'||l_db_ln_counter,1,'Y');
1970            aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:l_price_index:'||l_price_index,1,'Y');
1971         END IF;
1972         If (l_db_ln_counter <> (l_price_index - 2)) Then
1973             l_complete_qte_flag := 'N';
1974         end if;
1975    elsif (lx_order_status_rec.all_lines_flag = 'N') AND (lx_order_status_rec.changed_lines_flag = 'N') then
1976       --Changed Lines flag = 'N'
1977       --then pass only header to Price_Request
1978 	 --Since we are only sending the summary line to pricing the quote is not completely priced
1979 	 l_complete_qte_flag := 'N';
1980 
1981       IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1982          aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:All line flag is N and changed line flag is N',1,'Y');
1983       END IF;
1984 
1985   End If;
1986 
1987   -- Call to Price Adjustments, Adjustments Relationships, and Service Relationships
1988   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1989      l_pricing_start_time := dbms_utility.get_time;
1990   END IF;
1991   IF l_Qte_Line_id_tbl.EXISTS(1) THEN
1992   	 -- Call to Price Adjustment Relationships and Service Relationships
1993     	 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
1994     	   aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Query_Price_Adjustments...',1,'Y');
1995         aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: l_qte_line_id_tbl.count :'
1996 					  ||NVL(l_qte_line_id_tbl.count,0),1,'Y');
1997     	 END IF;
1998 	 ASO_PRICING_CORE_PVT.Query_Price_Adjustments
1999 		(p_quote_header_id	     => p_qte_header_rec.quote_header_id,
2000  		 p_qte_line_id_tbl       => l_qte_line_id_tbl,
2001 		 x_adj_id_tbl            => l_qte_adj_id_tbl);
2002 
2003       If l_qte_adj_id_tbl.exists(1) OR l_service_qte_line_id_tbl.exists(1) Then
2004          -- Adjustment and line Relationships and services...
2005          IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2006             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Query_Adj_rltship_Bulk...',1,'Y');
2007 		  If l_qte_adj_id_tbl is not null then
2008                aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: l_qte_adj_id_tbl.count :'
2009 					         ||NVL(l_qte_adj_id_tbl.count,0),1,'Y');
2010             end if;
2011 		  If l_service_qte_line_id_tbl is not null then
2012                aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: l_service_qte_line_id_tbl.count :'
2013 					         ||NVL(l_service_qte_line_id_tbl.count,0),1,'Y');
2014             end if;
2015          END IF;
2016          ASO_PRICING_CORE_PVT.Query_relationships
2017 		(p_qte_adj_id_tbl           => l_qte_adj_id_tbl,
2018            p_service_qte_line_id_tbl  => l_service_qte_line_id_tbl);
2019       else
2020 	  IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2021          aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: There are no service lines or manual related Adjustments',1,'Y');
2022        END IF;
2023       end if;--If l_qte_adj_id_tbl.exists(1) OR l_service_qte_line_id_tbl.exists(1)
2024   ELSIF (lx_order_status_rec.summary_line_flag = 'Y') THEN
2025         --Just send the header level manual adjustments
2026         IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2027           aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Query_Price_Adj_Header...',1,'Y');
2028         END IF;
2029         ASO_PRICING_CORE_PVT.Query_Price_Adj_Header
2030             (p_quote_header_id       => p_qte_header_rec.quote_header_id);
2031 
2032   END IF; -- l_Qte_Line_id_tbl.EXISTS(1) check.
2033 
2034 -- Start of  Deleting of attributes logic
2035 
2036   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2037     aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Begin bulk collect adj ids that are not passed to PE', 1, 'Y');
2038   END IF;
2039 
2040   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2041 	If l_qte_adj_id_tbl is not null then
2042 	   For i in 1..l_qte_adj_id_tbl.count loop
2043 	       aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:Querying for the following adjustment  ids:',1,'Y');
2044             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:l_qte_adj_id_tbl(i):'||l_qte_adj_id_tbl(i),1,'Y');
2045 	   end loop;
2046 	end if;
2047   END IF;
2048 
2049   If l_qte_adj_id_tbl.EXISTS(1) then
2050     SELECT adj.PRICE_ADJUSTMENT_ID
2051     BULK COLLECT INTO
2052     l_adj_id_tbl
2053     FROM ASO_PRICE_ADJUSTMENTS adj
2054     WHERE adj.quote_header_id = p_qte_header_rec.quote_header_id
2055     AND adj.price_adjustment_id NOT IN (SELECT column_value
2056     							     FROM TABLE (CAST(l_qte_adj_id_tbl AS JTF_NUMBER_TABLE)) passed_adj);
2057 
2058     IF aso_debug_pub.g_debug_flag = 'Y' THEN
2059        aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: No. of adjustment lines selected is sql%rowcount(Both hdr and lines): '
2060                           ||sql%rowcount,1,'Y');
2061     END IF;
2062   Elsif (lx_order_status_rec.summary_line_flag = 'Y') Then
2063      SELECT adj.PRICE_ADJUSTMENT_ID
2064      BULK COLLECT INTO
2065      l_adj_id_tbl
2066      FROM ASO_PRICE_ADJUSTMENTS adj
2067      WHERE adj.quote_header_id = p_qte_header_rec.quote_header_id
2068      AND adj.quote_line_id IS NULL;
2072      END IF;
2069      IF aso_debug_pub.g_debug_flag = 'Y' THEN
2070        aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: No. of adjustment lines selected is sql%rowcount(Header): '
2071                           ||sql%rowcount,1,'Y');
2073   END If;--l_qte_adj_id_tbl.EXISTS(1)
2074 
2075   IF aso_debug_pub.g_debug_flag = 'Y' THEN
2076 
2077      if l_adj_id_tbl.count > 0 then
2078 
2079         for k in l_adj_id_tbl.FIRST..l_adj_id_tbl.LAST loop
2080             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:l_adj_id_tbl('||k||'): ' || l_adj_id_tbl(k),1,'Y');
2081         end loop;
2082 
2083      end if;
2084 
2085   END IF;
2086 
2087   if l_adj_id_tbl.count > 0 then
2088      IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2089         aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Begin DELETE FROM ASO_PRICE_ADJ_ATTRIBS', 1, 'Y');
2090      END IF;
2091      FORALL i IN l_adj_id_tbl.FIRST..l_adj_id_tbl.LAST
2092            DELETE FROM ASO_PRICE_ADJ_ATTRIBS
2093            WHERE PRICE_ADJUSTMENT_ID = l_adj_id_tbl(i);
2094 
2095      IF aso_debug_pub.g_debug_flag = 'Y' THEN
2096         aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:No of adjustment attribute lines deleted is sql%rowcount: '
2097 	                    ||sql%rowcount,1,'Y');
2098      END IF;
2099 
2100   end if;
2101 
2102   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2103     aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: l_complete_qte_flag before delete:'||l_complete_qte_flag,1,'Y');
2104   END IF;
2105 
2106 -- End Deleting of attributes
2107 
2108   if l_complete_qte_flag = 'Y' then
2109     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2110        aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Begin DELETE FROM ASO_PRICE_ADJ_RELATIONSHIPS', 1, 'Y');
2111     END IF;
2112     DELETE FROM ASO_PRICE_ADJ_RELATIONSHIPS
2113     WHERE QUOTE_LINE_ID in (SELECT quote_line_id
2114                            FROM ASO_PRICE_ADJUSTMENTS
2115                            WHERE quote_header_id = p_qte_header_rec.quote_header_id
2116                            AND quote_line_id IS NOT NULL);
2117 
2118     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2119       aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Rltd adj Lines deleted '||sql%ROWCOUNT,1,'Y');
2120       aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Begin DELETE FROM ASO_PRICE_ADJUSTMENTS', 1, 'Y');
2121     END IF;
2122 
2123     DELETE FROM ASO_PRICE_ADJUSTMENTS
2124     WHERE quote_header_id = p_qte_header_rec.quote_header_id;
2125     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2126       aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Adjustment Lines deleted '||sql%ROWCOUNT,1,'Y');
2127     END IF;
2128 
2129   else
2130     --l_complete_qte_flag is 'N'
2131 
2132     IF l_Qte_Line_id_tbl.EXISTS(1) THEN
2133        IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2134           aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Begin DELETE FROM ASO_PRICE_ADJ_RELATIONSHIPS', 1, 'Y');
2135           For i in 1..l_qte_line_id_tbl.count loop
2136               aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Begin DELETE for l_qte_line_id_tbl(i):'
2137   		                      ||l_qte_line_id_tbl(i), 1, 'Y');
2138          end loop;
2139        END IF;
2140 
2141        DELETE FROM ASO_PRICE_ADJ_RELATIONSHIPS
2142        WHERE quote_line_id IN (SELECT column_value
2143                               FROM TABLE (CAST(l_qte_line_id_tbl AS JTF_NUMBER_TABLE)));
2144 
2145        IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2146           aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Rltd adj Lines deleted '||sql%ROWCOUNT,1,'Y');
2147        END IF;
2148 
2149        IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2150           aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Begin DELETE FROM ASO_PRICE_ADJUSTMENTS', 1, 'Y');
2151        END IF;
2152        DELETE FROM ASO_PRICE_ADJUSTMENTS
2153        WHERE quote_line_id IN (SELECT column_value
2154                               FROM TABLE (CAST(l_qte_line_id_tbl AS JTF_NUMBER_TABLE)))
2155        AND quote_header_id = p_qte_header_rec.quote_header_id;
2156        IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2157           aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Adjustment Lines deleted '||sql%ROWCOUNT,1,'Y');
2158        END IF;
2159 
2160        DELETE FROM ASO_PRICE_ADJUSTMENTS
2161 	  WHERE quote_header_id = p_qte_header_rec.quote_header_id
2162 	  AND quote_line_id is NULL;
2163 
2164        IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2165           aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Header Adjustment deleted '||sql%ROWCOUNT,1,'Y');
2166        END IF;
2167    ELSIF (lx_order_status_rec.summary_line_flag = 'Y') Then
2168       DELETE FROM ASO_PRICE_ADJUSTMENTS
2169       WHERE quote_header_id = p_qte_header_rec.quote_header_id
2170       AND quote_line_id is NULL;
2171 
2172       IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2173           aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Header Adjustment deleted '||sql%ROWCOUNT,1,'Y');
2174       END IF;
2175 
2176    END IF;--l_Qte_Line_id_tbl.EXISTS(1)
2177 
2178 
2179 end if;--l_complete_qte_flag = 'Y'
2180 
2181 
2182   If (l_Qte_Line_id_tbl.EXISTS(1))
2183      OR (p_control_rec.pricing_event = 'ORDER')
2184      OR (lx_order_status_rec.summary_line_flag = 'Y') then
2185 --Condition was placed because engine call was not necessary if the event is price and there are no lines
2186 
2187    --Need to modify the global index table of pls integer types
2188   l_global_pls_tbl := ASO_PRICING_CORE_PVT.G_LDET_LINE_INDEX_TBL;
2189   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2190      aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Modifying G_LDET_LINE_INDEX_TBL',1,'Y');
2191   END IF;
2195   l_global_num_tbl := ASO_PRICING_CORE_PVT.G_RLTD_LINE_INDEX_TBL;
2192   ASO_PRICING_CORE_PVT.G_LDET_LINE_INDEX_TBL:= ASO_PRICING_CORE_PVT.Modify_Global_PlsIndex_Table(
2193                                                     p_global_tbl => l_global_pls_tbl,
2194                                                     p_search_tbl => px_line_index_search_tbl);
2196   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2197      aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Modifying G_RLTD_LINE_INDEX_TBL',1,'Y');
2198   END IF;
2199   ASO_PRICING_CORE_PVT.G_RLTD_LINE_INDEX_TBL:= ASO_PRICING_CORE_PVT.Modify_Global_NumIndex_Table(
2200                                                     p_global_tbl => l_global_num_tbl,
2201                                                     p_search_tbl => px_line_index_search_tbl);
2202   l_global_num_tbl := ASO_PRICING_CORE_PVT.G_RLTD_RELATED_LINE_IND_TBL;
2203   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2204      aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Modifying G_RLTD_RELATED_LINE_IND_TBL',1,'Y');
2205   END IF;
2206   ASO_PRICING_CORE_PVT.G_RLTD_RELATED_LINE_IND_TBL:= ASO_PRICING_CORE_PVT.Modify_Global_NumIndex_Table(
2207                                                     p_global_tbl => l_global_num_tbl,
2208                                                     p_search_tbl => px_line_index_search_tbl);
2209 
2210   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2211     aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Populate_QP_Temp_tables...',1,'Y');
2212     l_pricing_end_time := dbms_utility.get_time;
2213     l_accum_aso_time := l_accum_aso_time + (l_pricing_end_time - l_pricing_start_time);
2214   END IF;
2215 
2216   ASO_PRICING_CORE_PVT.populate_qp_temp_tables;
2217 
2218   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2219      l_pricing_start_time := dbms_utility.get_time;
2220      l_accum_qp_time := l_accum_qp_time + (l_pricing_start_time - l_pricing_end_time);
2221   END IF;
2222   -- Set the control rec for QP
2223 
2224   l_req_control_rec.pricing_event := p_control_rec.pricing_event;
2225   l_req_control_rec.calculate_flag := p_control_rec.calculate_flag;
2226   l_req_control_rec.simulation_flag := p_control_rec.simulation_flag;
2227   l_req_control_rec.TEMP_TABLE_INSERT_FLAG := 'N';  ---- Modified
2228   l_req_control_rec.source_order_amount_flag := 'Y';
2229   l_req_control_rec.GSA_CHECK_FLAG := 'Y';
2230   l_req_control_rec.GSA_DUP_CHECK_FLAG := 'Y';
2231   l_req_control_rec.REQUEST_TYPE_CODE := p_control_rec.request_type;
2232   l_req_control_rec.rounding_flag := 'Q';
2233   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2234     aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: l_req_control_rec.calculate_flag:'||l_req_control_rec.calculate_flag,1,'Y');
2235   END IF;
2236 
2237   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2238     aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of QP_PREQ_PUB.PRICE_REQUEST', 1, 'Y');
2239     l_pricing_end_time := dbms_utility.get_time;
2240     l_accum_aso_time := l_accum_aso_time + (l_pricing_end_time - l_pricing_start_time);
2241   END IF;
2242 
2243   /*   Change for populating QP_PREQ_GRP.CONTROL_RECORD_TYPE.ORG_ID Yogeshwar  (MOAC) */
2244 
2245 	          l_req_control_rec.ORG_ID :=  p_qte_header_rec.org_id;
2246 
2247  /*				End of Change                                  (MOAC) */
2248 
2249 
2250   QP_PREQ_PUB.PRICE_REQUEST
2251           	(p_control_rec           =>l_req_control_rec
2252           	,x_return_status         =>l_return_status
2253           	,x_return_status_Text    =>l_return_status_Text
2254           	);
2255   IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2256 	x_return_status := l_return_status;
2257   IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2258 	FND_MESSAGE.Set_Name('ASO', 'ASO_OM_ERROR');
2259 	FND_MESSAGE.Set_Token('MSG_TXT', substr(l_return_status_text, 1,255), FALSE);
2260      FND_MSG_PUB.ADD;
2261   END IF;
2262 	RAISE FND_API.G_EXC_ERROR;
2263   END IF;
2264 
2265   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2266     l_pricing_start_time := dbms_utility.get_time;
2267     l_accum_qp_time := l_accum_qp_time + (l_pricing_start_time - l_pricing_end_time);
2268     aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: End of QP_PREQ_PUB.PRICE_REQUEST', 1, 'Y');
2269     aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: After PRICE_REQUEST l_return_status:'
2270                        ||l_return_status, 1, 'Y');
2271     aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: After PRICE_REQUEST l_return_status_text '
2272                        ||l_return_status_text,1,'Y');
2273     aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Post_Price_Request...',1,'Y');
2274     aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: l_complete_qte_flag:'||l_complete_qte_flag,1,'Y');
2275   END IF;
2276   /*Insert all the applied adjustments and the nonapplied manual adjustments*/
2277   ASO_PRICING_CORE_PVT.Copy_Price_To_Quote(
2278      		P_Api_Version_Number       => 1.0,
2279      		P_Init_Msg_List            => FND_API.G_FALSE,
2280      		P_Commit                   => FND_API.G_FALSE,
2281      		p_control_rec		       => l_prc_control_rec,
2282      		p_qte_header_rec           => p_qte_header_rec,
2283 			P_Insert_Type              => 'HDR',
2284      		x_return_status            => x_return_status,
2285      		x_msg_count                => x_msg_count,
2286      		x_msg_data                 => x_msg_data);
2287   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2288       aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Copy_Price_To_Quote : x_return_status: '
2289 	   	       ||nvl(x_return_status,'NULL'),1,'Y');
2290   END IF;
2291 
2292  If p_internal_call_flag = 'N' then
2293     IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
2294        ASO_PRICING_CORE_PVT.Process_PRG(
2295      		P_Api_Version_Number       => 1.0,
2299      		p_qte_header_rec           => p_qte_header_rec,
2296      		P_Init_Msg_List            => FND_API.G_FALSE,
2297      		P_Commit                   => FND_API.G_FALSE,
2298      		p_control_rec		       => l_prc_control_rec,
2300 			x_qte_line_tbl             => x_qte_line_tbl,
2301      		x_return_status            => x_return_status,
2302      		x_msg_count                => x_msg_count,
2303      		x_msg_data                 => x_msg_data);
2304 
2305        IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2306           aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Process_PRG : x_return_status: '
2307                              ||nvl(x_return_status,'NULL'),1,'Y');
2308        END IF;
2309 
2310     END IF;--x_return_status = FND_API.G_RET_STS_SUCCESS
2311 
2312     IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
2313        IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2314           aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: After Process_PRG : x_qte_line_tbl.count: '
2315                              ||x_qte_line_tbl.count,1,'Y');
2316        END IF;
2317 
2318        ASO_PRICING_CORE_PVT.Process_Charges(
2319                P_Api_Version_Number       => 1.0,
2320                P_Init_Msg_List            => FND_API.G_FALSE,
2321                P_Commit                   => FND_API.G_FALSE,
2322                p_control_rec              => l_prc_control_rec,
2323                p_qte_header_rec           => p_qte_header_rec,
2324                x_return_status            => x_return_status,
2325                x_msg_count                => x_msg_count,
2326                x_msg_data                 => x_msg_data);
2327       IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2328          aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Process_Charges : x_return_status: '
2329                             ||nvl(x_return_status,'NULL'),1,'Y');
2330       END IF;
2331 
2332     END IF;--x_return_status = FND_API.G_RET_STS_SUCCESS
2333  End If;--p_internal_call_flag = 'N'??????????Is this okay????
2334 
2335     -- After the code review according to SPGOPAL if the summary line flag is 'N' then we don't need to make
2336     -- the calculate flag. Also we cannot compare the percentage of the header level since in future if there
2337     -- is a bucketing implementation for the header level modifier ASO does not have a way to compare the percentages.
2338     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2339        l_pricing_end_time := dbms_utility.get_time;
2340        l_accum_aso_time := l_accum_aso_time + (l_pricing_end_time - l_pricing_start_time);
2341        aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:**********Timing Before Calculate Call****************',1,'Y');
2342 
2343        aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:Total time taken (in secs) in Price Entire Quote(Besides Pricing):'||l_accum_aso_time/100,1,'Y');
2344        aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:Total time taken (in secs) in Pricing+BuildContext:'||l_accum_qp_time/100,1,'Y');
2345 END IF;
2346 
2347     IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
2348        IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2349 	     aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:Before Calling Calculate Call l_complete_qte_flag:'
2350 		                  ||l_complete_qte_flag,1,'Y');
2351 		aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:Before Calling Calculate Call lx_order_status_rec.summary_line_flag:'
2352 		                  ||lx_order_status_rec.summary_line_flag,1,'Y');
2353 	  END IF;
2354     If (l_complete_qte_flag = 'N') then
2355       If (lx_order_status_rec.summary_line_flag <> 'N') then
2356         --If the l_processed_flag value is 'C' reprice the whole quote with all the lines with calculate only option
2357 	   --Since the processed flag is not coded for Order Capture, Current work around is such that Order Capture should
2358         --always make the second call except in the above two conditions of complete qte flag and summary line flag.
2359 
2360           IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2361               aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:Price Request should be called again to get header level adj',1,'Y');
2362           END IF;
2363 
2364           l_prc_control_rec.calculate_flag := QP_PREQ_GRP.G_CALCULATE_ONLY;
2365 
2366           --Call Calculate only call
2367 
2368           Price_Quote_Calculate_Call(
2369                  P_Api_Version_Number      => P_Api_Version_Number,
2370                  P_Init_Msg_List           => FND_API.G_FALSE,
2371                  P_Commit                  => FND_API.G_FALSE,
2372                  p_control_rec             => l_prc_control_rec,
2373                  p_qte_header_rec          => p_qte_header_rec,
2374                  p_delta_line_id_tbl       => l_qte_line_id_tbl,
2375 			  x_qte_line_tbl            => lx_Qte_Line_Tbl,
2376                  x_return_status           => x_return_status,
2377                  x_msg_count               => x_msg_count,
2378                  x_msg_data                => x_msg_data);
2379 
2380 	    End If; -- If (lx_order_status_rec.summary_line_flag <> 'N')
2381 
2382 	   End If;-- If l_complete_qte_flag = 'N'
2383 
2384 
2385     END IF;-- x_return_status = FND_API.G_RET_STS_SUCCESS
2386 
2387 
2388  --End If;--p_internal_call_flag = 'N'
2389  End if;-- (l_Qte_Line_id_tbl.EXISTS(1)) OR (p_control_rec.pricing_event = 'ORDER')
2390 
2391 
2392 FND_MSG_PUB.Count_And_Get
2393       ( p_encoded    => 'F',
2394         p_count      =>   x_msg_count,
2395         p_data       =>   x_msg_data
2396       );
2397 
2398 FOR l IN 1 .. x_msg_count LOOP
2399     x_msg_data := FND_MSG_PUB.GET( p_msg_index => l, p_encoded => 'F');
2400     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2401       aso_debug_pub.add('Messge count and get '||x_msg_data, 1, 'Y');
2405 
2402       aso_debug_pub.add('Messge count and get '||x_msg_count, 1, 'Y');
2403     END IF;
2404 END LOOP;
2406 END Price_Quote_With_Change_Lines;
2407 
2408 PROCEDURE Price_Quote_Calculate_Call(
2409      P_Api_Version_Number       IN   NUMBER,
2410      P_Init_Msg_List            IN   VARCHAR2 := FND_API.G_FALSE,
2411      P_Commit                   IN   VARCHAR2 := FND_API.G_FALSE,
2412      p_control_rec              IN   ASO_PRICING_INT.PRICING_CONTROL_REC_TYPE,
2413      p_qte_header_rec           IN   ASO_QUOTE_PUB.Qte_Header_Rec_Type,
2414      p_delta_line_id_tbl        IN   JTF_NUMBER_TABLE,
2415 	x_qte_line_tbl             OUT NOCOPY /* file.sql.39 change */ ASO_QUOTE_PUB.Qte_Line_Tbl_Type,
2416      x_return_status            OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
2417      x_msg_count                OUT NOCOPY /* file.sql.39 change */ NUMBER,
2418      x_msg_data                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2)
2419 IS
2420   l_api_name                    CONSTANT VARCHAR2(30) := 'Price_Quote_Calculate_Call';
2421   l_api_version_number          CONSTANT NUMBER   := 1.0;
2422   l_price_index                 NUMBER;
2423   l_req_control_rec             QP_PREQ_GRP.CONTROL_RECORD_TYPE;
2424   l_prc_control_rec             ASO_PRICING_INT.PRICING_CONTROL_REC_TYPE;
2425   x_pass_line                   VARCHAR2(10);
2426   l_qte_line_tbl                ASO_QUOTE_PUB.Qte_Line_Tbl_Type;
2427   l_qte_line_id                 NUMBER;
2428   l_qte_line_dtl_rec            ASO_QUOTE_PUB.Qte_Line_Dtl_Rec_Type;
2429   l_qte_line_dtl_tbl            ASO_QUOTE_PUB.Qte_Line_Dtl_Tbl_Type;
2430   l_shipment_tbl                ASO_QUOTE_PUB.Shipment_Tbl_Type;
2431   l_shipment_rec                ASO_QUOTE_PUB.Shipment_Rec_Type;
2432   lx_index_counter              Number;
2433   l_index_counter               Number;
2434   l_return_status_text          VARCHAR2(2000);
2435   l_message_text                VARCHAR2(2000);
2436   l_return_status               VARCHAR2(1);
2437 
2438   l_service_qte_line_id_tbl     JTF_NUMBER_TABLE;
2439   l_qte_line_id_tbl             JTF_NUMBER_TABLE;
2440   l_qte_adj_id_tbl              JTF_NUMBER_TABLE;
2441   px_line_index_search_tbl      ASO_PRICING_CORE_PVT.Index_Link_Tbl_Type;
2442   l_global_pls_tbl              QP_PREQ_GRP.pls_integer_type;
2443   l_global_num_tbl              QP_PREQ_GRP.NUMBER_TYPE;
2444 
2445   l_pricing_start_time          NUMBER;
2446   l_pricing_end_time            NUMBER;
2447   l_accum_aso_time                  NUMBER;
2448   l_accum_qp_time                  NUMBER;
2449 
2450 BEGIN
2451   -- Standard call to check for call compatibility.
2452   IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
2453                                      p_api_version_number,
2454                                      l_api_name,
2455                                      G_PKG_NAME)
2456   THEN
2457     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2458   END IF;
2459 
2460   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2461     l_pricing_start_time := dbms_utility.get_time;
2462     aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:Start of Price_Quote_Calculate_Call',1,'Y');
2463   END IF;
2464 
2465   x_return_status := FND_API.G_RET_STS_SUCCESS;
2466 
2467   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2468     aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:p_control_rec.request_type:'||p_control_rec.request_type,1,'Y');
2469     aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:p_control_rec.pricing_event:'||p_control_rec.pricing_event,1,'Y');
2470     aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:p_control_rec.calculate_flag:'||p_control_rec.calculate_flag,1,'Y');
2471     aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:p_qte_header_rec.quote_header_id:'||p_qte_header_rec.quote_header_id,1,'Y');
2472     IF p_delta_line_id_tbl is not null THEN
2473       for i in 1..p_delta_line_id_tbl.count loop
2474          aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:p_delta_line_id_tbl(i):'||p_delta_line_id_tbl(i), 1, 'Y');
2475       end loop;
2476     END IF;
2477   END IF;
2478   l_prc_control_rec := p_control_rec;
2479   l_price_index := 1;
2480 
2481   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2482     aso_debug_pub.add('********************* PROCESSING HEADER STARTS *******************************',1,'Y');
2483   END IF;
2484   ASO_PRICING_CORE_PVT.Print_G_Header_Rec;
2485   /*Initialize the global tables*/
2486   ASO_PRICING_CORE_PVT.Initialize_Global_Tables;
2487 
2488   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2489       l_pricing_end_time := dbms_utility.get_time;
2490       l_accum_aso_time := l_pricing_end_time - l_pricing_start_time;
2491   END IF;
2492 
2493   QP_Price_Request_Context.Set_Request_Id;
2494 
2495   QP_ATTR_MAPPING_PUB.Build_Contexts (
2496       P_REQUEST_TYPE_CODE          => p_control_rec.request_type,
2497       P_PRICING_TYPE_CODE          => 'H',
2498       P_line_index                 => l_price_index,
2499       P_pricing_event              => p_control_rec.pricing_event,
2500       p_check_line_flag            => 'N',
2501       x_pass_line                  => x_pass_line);
2502 
2503   l_price_index := 1;
2504   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2505      l_pricing_start_time := dbms_utility.get_time;
2506      l_accum_qp_time := l_pricing_start_time - l_pricing_end_time;
2507      aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: x_pass_line: '||nvl(x_pass_line,'null'),1,'Y');
2508      aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Copy_Header_To_Request...',1,'Y');
2509   END IF;
2510   ASO_PRICING_CORE_PVT.Copy_Header_To_Request(
2511        p_Request_Type                   => p_control_rec.request_type,
2512        p_price_line_index               => l_price_index,
2516   -- Do we need to do append ask for in the calculate only call????
2513        px_index_counter                 => 1);
2514 
2515 
2517   --increment the line index
2518    l_price_index:= l_price_index+1;
2519 
2520   -- Header ends here
2521 
2522    IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2523      aso_debug_pub.add('************************ HEADER LEVEL ENDS *******************************',1,'Y');
2524      aso_debug_pub.add('  ',1,'Y');
2525      aso_debug_pub.add('************************ LINE LEVEL BEGINS *******************************',1,'Y');
2526      aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of ASO UTL PVT Query_Pricing_Line_Rows...',1,'Y');
2527    END IF;
2528 
2529    l_qte_line_tbl := ASO_UTILITY_PVT.Query_Pricing_Line_Rows(p_qte_header_rec.quote_header_id);
2530    IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2531      aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: l_qte_line_tbl.count :'||NVL(l_qte_line_tbl.count,0),1,'Y');
2532      l_pricing_end_time := dbms_utility.get_time;
2533      l_accum_aso_time := l_accum_aso_time + (l_pricing_end_time - l_pricing_start_time);
2534    END IF;
2535 
2536    If l_qte_line_tbl.count = 0 Then
2537       IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2538         aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:No lines in the database',1,'Y');
2539       END IF;
2540 
2541    Else
2542       -- Line Count <> 0.
2543         For i in 1..l_qte_line_tbl.count Loop
2544 
2545           IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2546             l_pricing_start_time := dbms_utility.get_time;
2547             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Query_Line_Dtl_Rows...',1,'Y');
2548             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: l_qte_line_tbl(i).quote_line_id:'
2549                                ||NVL(l_qte_line_tbl(i).quote_line_id,0),1,'Y');
2550             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: l_qte_line_tbl(i).pricing_line_type_indicator:'
2551                                ||l_qte_line_tbl(i).pricing_line_type_indicator,1,'Y');
2552           END IF;
2553 
2554           l_qte_line_id := l_qte_line_tbl(i).quote_line_id;
2555           l_qte_line_dtl_tbl := ASO_UTILITY_PVT.Query_Line_Dtl_Rows(l_qte_line_id);
2556 
2557           IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2558             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Defaulting Hdr Lvl Price List and Currency..',1,'Y');
2559             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: p_qte_header_rec.currency_code :'
2560                                ||NVL(p_qte_header_rec.currency_code,'NULL'),1,'Y');
2561             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: p_qte_header_rec.price_list_id :'
2562                                ||NVL(to_char(p_qte_header_rec.price_list_id),'NULL'),1,'Y');
2563           END IF;
2564           -- Pass header_level currency_code to line level by default.
2565           l_qte_line_tbl(i).currency_code := p_qte_header_rec.currency_code;
2566 
2567           IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2568             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: l_qte_line_tbl(i).price_list_id :'
2569                                ||NVL(to_char(l_qte_line_tbl(i).price_list_id),'NULL'),1,'Y');
2570           END IF;
2571           -- Pass Header level price list by default.
2572           IF l_qte_line_tbl(i).pricing_line_type_indicator = 'F' then
2573              IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2574                  aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Free line so not defaulting of the price list',1,'Y');
2575                  END IF;
2576           ELSE
2577              /*Default the price list*/
2578              If l_qte_line_tbl(i).price_list_id is null Then
2579                 l_qte_line_tbl(i).price_list_id := p_qte_header_rec.price_list_id;
2580                 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2581                    aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:Price list id defaulted from Header:'
2582                                   ||NVL(to_char(l_qte_line_tbl(i).price_list_id),'NULL'),1,'Y');
2583                 END IF;
2584              End if;
2585           END IF;--l_qte_line_tbl(i).pricing_line_type_indicator = 'F'
2586 
2587           IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2588             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: l_qte_line_dtl_tbl.count :'
2589                                ||NVL(l_qte_line_dtl_tbl.count,0),1,'Y');
2590           END IF;
2591           IF l_qte_line_dtl_tbl.count = 1 THEN
2592                l_qte_line_dtl_rec := l_qte_line_dtl_tbl(1);
2593                 ELSE
2594                l_qte_line_dtl_rec := ASO_QUOTE_PUB.G_Miss_Qte_Line_Dtl_REC ;
2595           END IF;
2596 
2597           IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2598             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Query_Shipment_Rows..',1,'Y');
2599           END IF;
2600           l_shipment_tbl := ASO_UTILITY_PVT.Query_Shipment_Rows
2601                                             (p_qte_header_rec.quote_header_id, l_QTE_LINE_ID);
2602           IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2603             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: l_shipment_tbl.count :'
2604                                ||NVL(l_shipment_tbl.count,0),1,'Y');
2605           END IF;
2606           IF l_shipment_tbl.count = 1 THEN
2607                l_shipment_rec := l_shipment_tbl(1);
2608           else
2609                l_shipment_rec := ASO_QUOTE_PUB.G_Miss_Shipment_rec;
2610           END IF;
2611 
2612 
2613           IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2614             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Set_Global_Rec - Line Level...', 1, 'Y');
2615             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:These values will be defaulted from header for pricing qualification only:',1,'Y');
2616             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:l_qte_line_tbl(i).invoice_to_party_site_id:'
2617                                ||NVL(to_char(l_qte_line_tbl(i).invoice_to_party_site_id),'NULL'),1,'Y');
2618             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:l_shipment_rec.ship_to_party_site_id:'
2619                                ||NVL(to_char(l_shipment_rec.ship_to_party_site_id),'NULL'),1,'Y');
2620             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:l_qte_line_tbl(i).agreement_id:'
2621                                ||NVL(to_char(l_qte_line_tbl(i).agreement_id),'NULL'),1,'Y');
2622             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:l_shipment_rec.ship_method_code:'
2623                                ||NVL(l_shipment_rec.ship_method_code,'NULL'),1,'Y');
2624             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:l_shipment_rec.freight_terms_code:'
2625                                ||NVL(l_shipment_rec.freight_terms_code,'NULL'),1,'Y');
2626             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:l_shipment_rec.FREIGHT_CARRIER_CODE:'
2627                                ||NVL(l_shipment_rec.FREIGHT_CARRIER_CODE,'NULL'),1,'Y');
2628             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:l_shipment_rec.FOB_CODE:'
2629                                ||NVL(l_shipment_rec.FOB_CODE,'NULL'),1,'Y');
2630             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:l_shipment_rec.REQUEST_DATE:'
2631                                ||NVL(to_char(l_shipment_rec.REQUEST_DATE),'NULL'),1,'Y');
2632           END IF;
2633 
2634           ASO_PRICING_INT.G_LINE_REC := ASO_PRICING_CORE_PVT.Set_Global_Rec (
2635                     p_qte_line_rec               => l_qte_line_tbl(i),
2636                     p_qte_line_dtl_rec           => l_qte_line_dtl_rec,
2637                     p_shipment_rec               => l_shipment_rec);
2638 
2639           ASO_PRICING_CORE_PVT.Print_G_Line_Rec;
2640 
2641           IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2642             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of QP Build_Contexts - Line Level...',1,'Y');
2643             l_pricing_end_time := dbms_utility.get_time;
2644             l_accum_aso_time := l_accum_aso_time + (l_pricing_end_time - l_pricing_start_time);
2645           END IF;
2646 
2647           QP_ATTR_MAPPING_PUB.Build_Contexts (
2648                     p_request_type_code          => p_control_rec.request_type,
2649                     p_line_index                 => l_price_index,
2650                     p_check_line_flag            => 'N',
2651                     p_pricing_event              => p_control_rec.pricing_event,
2652                     p_pricing_type_code          => 'L',
2653                     p_price_list_validated_flag  => 'N',
2654                     x_pass_line                  => x_pass_line);
2655            IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2656             l_pricing_start_time := dbms_utility.get_time;
2657             l_accum_qp_time := l_accum_qp_time + (l_pricing_start_time - l_pricing_end_time);
2658             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: x_pass_line: '||nvl(x_pass_line,'null'),1,'Y');
2659             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Copy_Line_To_Request...',1,'Y');
2660           END IF;
2661 
2662           ASO_PRICING_CORE_PVT.Copy_Line_To_Request(
2663                p_Request_Type         => p_control_rec.request_type,
2664                p_price_line_index    => l_price_index,
2665                px_index_counter       => i+1);
2666 
2667 
2668           IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2672           END IF;
2669             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Append_asked_for...',1,'Y');
2670             aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:Before Append Ask for lx_index_counter:'
2671                                ||lx_index_counter,1,'Y');
2673           l_index_counter := lx_index_counter;
2674 
2675           --Do we need to call append ask for at line level
2676 
2677           /*Store the line_id of all the service_lines*/
2678           If l_qte_line_tbl(i).service_item_flag = 'Y' then
2679              if l_service_qte_line_id_tbl.EXISTS(1) then
2680                 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2681                    aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of l_service_qte_line_id_tbl.extend...',1,'Y');
2682                  END IF;
2683                  l_service_qte_line_id_tbl.extend;
2684                  l_service_qte_line_id_tbl(l_service_qte_line_id_tbl.count)
2685                                                     := l_qte_line_tbl(i).quote_line_id;
2686               else
2687                  IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2688                     aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: First quote_line_id in l_service_qte_line_id_tbl',1,'Y');
2689                  END IF;
2690                  l_service_qte_line_id_tbl:= JTF_NUMBER_TABLE(l_qte_line_tbl(i).quote_line_id);
2691              end if;
2692           end if;-- l_qte_line_tbl(i).service_item_flag = 'Y'
2693 
2694           /*Store all the quote_line_id processed*/
2695           IF l_Qte_Line_id_tbl.EXISTS(1) THEN
2696              IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2697                 aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of l_qte_line_id_tbl.extend...',1,'Y');
2698              END IF;
2699              l_Qte_Line_id_tbl.extend;
2700              l_Qte_Line_id_tbl(l_Qte_Line_id_tbl.count) := l_qte_line_tbl(i).quote_line_id;
2701            ELSE
2702              IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2703                 aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: First quote_line_id in l_qte_line_id_tbl',1,'Y');
2704              END IF;
2705              l_Qte_Line_id_tbl := JTF_NUMBER_TABLE(l_qte_line_tbl(i).quote_line_id);
2706          END IF;
2707          --increment the line index
2708          px_line_index_search_tbl(l_qte_line_id) := l_price_index;
2709          l_price_index:= l_price_index+1;
2710          IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2711             l_pricing_end_time := dbms_utility.get_time;
2712             l_accum_aso_time := l_accum_aso_time + (l_pricing_end_time - l_pricing_start_time);
2713          END IF;
2714 
2715       End Loop; -- l_Qte_Line_tbl.count checking.
2716 
2717        -- Call to Price Adjustment Relationships and Service Relationships
2718       IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2719         l_pricing_start_time := dbms_utility.get_time;
2720         aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Query_Price_Adj_All...',1,'Y');
2721       END IF;
2722 
2723 	 ASO_PRICING_CORE_PVT.Query_Price_Adj_All
2724 	 (p_quote_header_id    => p_qte_header_rec.quote_header_id,
2725 	  x_adj_id_tbl         => l_qte_adj_id_tbl);
2726 
2727 
2728      IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2729         aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Query_Relationships...',1,'Y');
2730      END IF;
2731 
2732      ASO_PRICING_CORE_PVT.Query_Relationships(
2733        p_qte_adj_id_tbl  => l_qte_adj_id_tbl,
2734        p_service_qte_line_id_tbl => l_service_qte_line_id_tbl);
2735 
2736 
2737   END IF; -- l_qte_line_tbl.count = 0 check.
2738 
2739   -- Delete only the header level adj that are applied or updated because
2740   -- line level modifiers will not change in Calculate only call
2741   DELETE FROM ASO_PRICE_ADJUSTMENTS
2742   WHERE quote_header_id = p_qte_header_rec.quote_header_id
2743   AND quote_line_id IS NULL
2744   AND (applied_flag = 'Y' OR updated_flag = 'Y');
2745   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2746     aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Adjustment Lines deleted '||sql%ROWCOUNT,1,'Y');
2747   END IF;
2748   DELETE FROM ASO_PRICE_ADJ_ATTRIBS
2749   WHERE  PRICE_ADJUSTMENT_ID IN (SELECT PRICE_ADJUSTMENT_ID
2750                                  FROM ASO_PRICE_ADJUSTMENTS
2751                                  WHERE QUOTE_HEADER_ID = p_qte_header_rec.quote_header_id
2752                                  AND QUOTE_LINE_ID is NULL
2753 						   AND (applied_flag = 'Y' OR updated_flag = 'Y'));
2754   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2755     aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Hdr Adjustment Attributes deleted '||sql%ROWCOUNT,1,'Y');
2756   END IF;
2757 
2758  --Need to modify the global index table of pls integer types
2759   l_global_pls_tbl := ASO_PRICING_CORE_PVT.G_LDET_LINE_INDEX_TBL;
2760   ASO_PRICING_CORE_PVT.G_LDET_LINE_INDEX_TBL:= ASO_PRICING_CORE_PVT.Modify_Global_PlsIndex_Table(
2761                                                     p_global_tbl => l_global_pls_tbl,
2762                                                     p_search_tbl => px_line_index_search_tbl);
2763   l_global_num_tbl := ASO_PRICING_CORE_PVT.G_RLTD_LINE_INDEX_TBL;
2764   ASO_PRICING_CORE_PVT.G_RLTD_LINE_INDEX_TBL:= ASO_PRICING_CORE_PVT.Modify_Global_NumIndex_Table(
2765                                                     p_global_tbl => l_global_num_tbl,
2766                                                     p_search_tbl => px_line_index_search_tbl);
2767   l_global_num_tbl := ASO_PRICING_CORE_PVT.G_RLTD_RELATED_LINE_IND_TBL;
2768   ASO_PRICING_CORE_PVT.G_RLTD_RELATED_LINE_IND_TBL:= ASO_PRICING_CORE_PVT.Modify_Global_NumIndex_Table(
2769                                                     p_global_tbl => l_global_num_tbl,
2770                                                     p_search_tbl => px_line_index_search_tbl);
2771 
2772   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2773     aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Populate_QP_Temp_tables...',1,'Y');
2777 
2774     l_pricing_end_time := dbms_utility.get_time;
2775     l_accum_aso_time := l_accum_aso_time + (l_pricing_end_time - l_pricing_start_time);
2776   END IF;
2778   ASO_PRICING_CORE_PVT.populate_qp_temp_tables;
2779 
2780   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2781      l_pricing_start_time := dbms_utility.get_time;
2782      l_accum_qp_time := l_accum_qp_time + (l_pricing_start_time - l_pricing_end_time);
2783   END IF;
2784   -- Set the control rec for QP
2785 
2786   l_req_control_rec.pricing_event := '';
2787   l_req_control_rec.calculate_flag := p_control_rec.calculate_flag;
2788   l_req_control_rec.simulation_flag := p_control_rec.simulation_flag;
2789   l_req_control_rec.TEMP_TABLE_INSERT_FLAG := 'N';  ---- Modified
2790   l_req_control_rec.source_order_amount_flag := 'Y';
2791   l_req_control_rec.GSA_CHECK_FLAG := 'Y';
2792   l_req_control_rec.GSA_DUP_CHECK_FLAG := 'Y';
2793   l_req_control_rec.REQUEST_TYPE_CODE := p_control_rec.request_type;
2794   l_req_control_rec.rounding_flag := 'Q';
2795 
2796   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2797     aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of QP_PREQ_PUB.PRICE_REQUEST', 1, 'Y');
2798     l_pricing_end_time := dbms_utility.get_time;
2799     l_accum_aso_time := l_accum_aso_time + (l_pricing_end_time - l_pricing_start_time);
2800   END IF;
2801 
2802   /*   Change for populating QP_PREQ_GRP.CONTROL_RECORD_TYPE.ORG_ID Yogeshwar (MOAC) */
2803 
2804 	        l_req_control_rec.ORG_ID :=  p_qte_header_rec.org_id;
2805 
2806  /*				End of Change                                 (MOAC) */
2807 
2808 
2809 
2810 
2811   QP_PREQ_PUB.PRICE_REQUEST
2812                (p_control_rec           =>l_req_control_rec
2813                ,x_return_status         =>l_return_status
2814                ,x_return_status_Text    =>l_return_status_Text
2815                );
2816   IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2817      x_return_status := l_return_status;
2818   IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2819      FND_MESSAGE.Set_Name('ASO', 'ASO_OM_ERROR');
2820      FND_MESSAGE.Set_Token('MSG_TXT', substr(l_return_status_text, 1,255), FALSE);
2821      FND_MSG_PUB.ADD;
2822   END IF;
2823      RAISE FND_API.G_EXC_ERROR;
2824   END IF;
2825 
2826   IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2827     l_pricing_start_time := dbms_utility.get_time;
2828     l_accum_qp_time := l_accum_qp_time + (l_pricing_start_time - l_pricing_end_time);
2829     aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: End of QP_PREQ_PUB.PRICE_REQUEST', 1, 'Y');
2830     aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: After PRICE_REQUEST l_return_status:'
2831                        ||l_return_status, 1, 'Y');
2832     aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: After PRICE_REQUEST l_return_status_text '
2833                        ||l_return_status_text,1,'Y');
2834     aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Start of Post_Price_Request...',1,'Y');
2835   END IF;
2836 
2837   ASO_PRICING_CORE_PVT.Copy_Price_To_Quote(
2838                P_Api_Version_Number       => 1.0,
2839                P_Init_Msg_List            => FND_API.G_FALSE,
2840                P_Commit                   => FND_API.G_FALSE,
2841                p_control_rec              => l_prc_control_rec,
2842                p_qte_header_rec           => p_qte_header_rec,
2843                p_insert_type              => 'HDR_ONLY',
2844                x_return_status            => x_return_status,
2845                x_msg_count                => x_msg_count,
2846                x_msg_data                 => x_msg_data);
2847  IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2848    aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Copy_Price_To_Quote : x_return_status: '
2849               ||nvl(x_return_status,'NULL'),1,'Y');
2850  END IF;
2851  IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
2852   ASO_PRICING_CORE_PVT.Process_Charges(
2853                P_Api_Version_Number       => 1.0,
2854                P_Init_Msg_List            => FND_API.G_FALSE,
2855                P_Commit                   => FND_API.G_FALSE,
2856                p_control_rec              => l_prc_control_rec,
2857                p_qte_header_rec           => p_qte_header_rec,
2858                x_return_status            => x_return_status,
2859                x_msg_count                => x_msg_count,
2860                x_msg_data                 => x_msg_data);
2861       IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2862          aso_debug_pub.add('ASO_PRICING_FLOWS_PVT: Process_Charges : x_return_status: '
2863                             ||nvl(x_return_status,'NULL'),1,'Y');
2864       END IF;
2865  END IF;
2866 
2867 FND_MSG_PUB.Count_And_Get
2868       ( p_encoded    => 'F',
2869         p_count      =>   x_msg_count,
2870         p_data       =>   x_msg_data
2871       );
2872 
2873 FOR l IN 1 .. x_msg_count LOOP
2874     x_msg_data := FND_MSG_PUB.GET( p_msg_index => l, p_encoded => 'F');
2875     IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2876       aso_debug_pub.add('Messge count and get '||x_msg_data, 1, 'Y');
2877       aso_debug_pub.add('Messge count and get '||x_msg_count, 1, 'Y');
2878     END IF;
2879 END LOOP;
2880 
2881 
2882 IF ASO_DEBUG_PUB.G_Debug_Flag = 'Y' THEN
2883    l_pricing_end_time := dbms_utility.get_time;
2884    l_accum_aso_time := l_accum_aso_time + (l_pricing_end_time - l_pricing_start_time);
2885    aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:********Timing in Calculate Call**************',1,'Y');
2886    aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:Total time taken (in secs) in Calculate call(Besides Pricing):'||l_accum_aso_time/100,1,'Y');
2887    aso_debug_pub.add('ASO_PRICING_FLOWS_PVT:Total time taken (in secs) in Pricing+BuildContext:'||l_accum_qp_time/100,1,'Y');
2888 END IF;
2889 
2890 
2891 
2892 END Price_Quote_Calculate_Call;
2893 
2894 
2895 
2896 End ASO_PRICING_FLOWS_PVT;