[Home] [Help]
PACKAGE BODY: APPS.OE_PRICE_ORDER_PVT_OBSOLETE
Source
1 PACKAGE BODY OE_PRICE_ORDER_PVT_OBSOLETE AS
2 /* $Header: OEXVPROB.pls 115.4 2004/05/18 22:01:18 aycui noship $ */
3
4 Type Index_Tbl_Type is table of number
5 Index by Binary_Integer;
6 G_PASS_LINE_TBL Index_Tbl_Type;
7
8 -- AG change
9 G_LINE_INDEX_tbl QP_PREQ_GRP.pls_integer_type;
10 G_LINE_TYPE_CODE_TBL QP_PREQ_GRP.VARCHAR_TYPE;
11 G_PRICING_EFFECTIVE_DATE_TBL QP_PREQ_GRP.DATE_TYPE ;
12 G_ACTIVE_DATE_FIRST_TBL QP_PREQ_GRP.DATE_TYPE ;
13 G_ACTIVE_DATE_FIRST_TYPE_TBL QP_PREQ_GRP.VARCHAR_TYPE;
14 G_ACTIVE_DATE_SECOND_TBL QP_PREQ_GRP.DATE_TYPE ;
15 G_ACTIVE_DATE_SECOND_TYPE_TBL QP_PREQ_GRP.VARCHAR_TYPE ;
16 G_LINE_QUANTITY_TBL QP_PREQ_GRP.NUMBER_TYPE ;
17 G_LINE_UOM_CODE_TBL QP_PREQ_GRP.VARCHAR_TYPE;
18 G_REQUEST_TYPE_CODE_TBL QP_PREQ_GRP.VARCHAR_TYPE;
19 G_PRICED_QUANTITY_TBL QP_PREQ_GRP.NUMBER_TYPE;
20 G_UOM_QUANTITY_TBL QP_PREQ_GRP.NUMBER_TYPE;
21 G_PRICED_UOM_CODE_TBL QP_PREQ_GRP.VARCHAR_TYPE;
22 G_CURRENCY_CODE_TBL QP_PREQ_GRP.VARCHAR_TYPE;
23 G_UNIT_PRICE_TBL QP_PREQ_GRP.NUMBER_TYPE;
24 G_PERCENT_PRICE_TBL QP_PREQ_GRP.NUMBER_TYPE;
25 G_ADJUSTED_UNIT_PRICE_TBL QP_PREQ_GRP.NUMBER_TYPE;
26 G_UPD_ADJUSTED_UNIT_PRICE_TBL QP_PREQ_GRP.NUMBER_TYPE;
27 G_PROCESSED_FLAG_TBL QP_PREQ_GRP.VARCHAR_TYPE;
28 G_PRICE_FLAG_TBL QP_PREQ_GRP.VARCHAR_TYPE;
29 G_LINE_ID_TBL QP_PREQ_GRP.NUMBER_TYPE;
30 G_PROCESSING_ORDER_TBL QP_PREQ_GRP.PLS_INTEGER_TYPE;
31 G_ROUNDING_FACTOR_TBL QP_PREQ_GRP.PLS_INTEGER_TYPE;
32 G_ROUNDING_FLAG_TBL QP_PREQ_GRP.FLAG_TYPE;
33 G_QUALIFIERS_EXIST_FLAG_TBL QP_PREQ_GRP.VARCHAR_TYPE;
34 G_PRICING_ATTRS_EXIST_FLAG_TBL QP_PREQ_GRP.VARCHAR_TYPE;
35 G_PRICE_LIST_ID_TBL QP_PREQ_GRP.NUMBER_TYPE;
36 G_PL_VALIDATED_FLAG_TBL QP_PREQ_GRP.VARCHAR_TYPE;
37 G_PRICE_REQUEST_CODE_TBL QP_PREQ_GRP.VARCHAR_TYPE;
38 G_USAGE_PRICING_TYPE_TBL QP_PREQ_GRP.VARCHAR_TYPE;
39 G_LINE_CATEGORY_TBL QP_PREQ_GRP.VARCHAR_TYPE;
40 G_PRICING_STATUS_CODE_tbl QP_PREQ_GRP.VARCHAR_TYPE;
41 G_PRICING_STATUS_TEXT_tbl QP_PREQ_GRP.VARCHAR_TYPE;
42 G_ATTR_LINE_INDEX_tbl QP_PREQ_GRP.PLS_INTEGER_TYPE;
43 G_ATTR_LINE_DETAIL_INDEX_tbl QP_PREQ_GRP.PLS_INTEGER_TYPE;
44 G_ATTR_VALIDATED_FLAG_tbl QP_PREQ_GRP.VARCHAR_TYPE;
45 G_ATTR_PRICING_CONTEXT_tbl QP_PREQ_GRP.VARCHAR_TYPE;
46 G_ATTR_PRICING_ATTRIBUTE_tbl QP_PREQ_GRP.VARCHAR_TYPE;
47 G_ATTR_ATTRIBUTE_LEVEL_tbl QP_PREQ_GRP.VARCHAR_TYPE;
48 G_ATTR_ATTRIBUTE_TYPE_tbl QP_PREQ_GRP.VARCHAR_TYPE;
49 G_ATTR_APPLIED_FLAG_tbl QP_PREQ_GRP.VARCHAR_TYPE;
50 G_ATTR_PRICING_STATUS_CODE_tbl QP_PREQ_GRP.VARCHAR_TYPE;
51 G_ATTR_PRICING_ATTR_FLAG_tbl QP_PREQ_GRP.VARCHAR_TYPE;
52 G_ATTR_LIST_HEADER_ID_tbl QP_PREQ_GRP.NUMBER_TYPE;
53 G_ATTR_LIST_LINE_ID_tbl QP_PREQ_GRP.NUMBER_TYPE;
54 G_ATTR_VALUE_FROM_tbl QP_PREQ_GRP.VARCHAR_TYPE;
55 G_ATTR_SETUP_VALUE_FROM_tbl QP_PREQ_GRP.VARCHAR_TYPE;
56 G_ATTR_VALUE_TO_tbl QP_PREQ_GRP.VARCHAR_TYPE;
57 G_ATTR_SETUP_VALUE_TO_tbl QP_PREQ_GRP.VARCHAR_TYPE;
58 G_ATTR_GROUPING_NUMBER_tbl QP_PREQ_GRP.PLS_INTEGER_TYPE;
59 G_ATTR_NO_QUAL_IN_GRP_tbl QP_PREQ_GRP.PLS_INTEGER_TYPE;
60 G_ATTR_COMP_OPERATOR_TYPE_tbl QP_PREQ_GRP.VARCHAR_TYPE;
61 G_ATTR_PRICING_STATUS_TEXT_tbl QP_PREQ_GRP.VARCHAR_TYPE;
62 G_ATTR_QUAL_PRECEDENCE_tbl QP_PREQ_GRP.PLS_INTEGER_TYPE;
63 G_ATTR_DATATYPE_tbl QP_PREQ_GRP.VARCHAR_TYPE;
64 G_ATTR_QUALIFIER_TYPE_tbl QP_PREQ_GRP.VARCHAR_TYPE;
65 G_ATTR_PRODUCT_UOM_CODE_TBL QP_PREQ_GRP.VARCHAR_TYPE;
66 G_ATTR_EXCLUDER_FLAG_TBL QP_PREQ_GRP.VARCHAR_TYPE;
67 G_ATTR_PRICING_PHASE_ID_TBL QP_PREQ_GRP.PLS_INTEGER_TYPE;
68 G_ATTR_INCOM_GRP_CODE_TBL QP_PREQ_GRP.VARCHAR_TYPE;
69 G_ATTR_LDET_TYPE_CODE_TBL QP_PREQ_GRP.VARCHAR_TYPE;
70 G_ATTR_MODIFIER_LEVEL_CODE_TBL QP_PREQ_GRP.VARCHAR_TYPE;
71 G_ATTR_PRIMARY_UOM_FLAG_TBL QP_PREQ_GRP.VARCHAR_TYPE;
72 G_CATCHWEIGHT_QTY_TBL QP_PREQ_GRP.NUMBER_TYPE;
73 G_ACTUAL_ORDER_QTY_TBL QP_PREQ_GRP.NUMBER_TYPE;
74
75 Procedure Preprocessing(
76 px_Header_Rec IN OUT NOCOPY OE_ORDER_PUB.Header_Rec_Type
77 ,px_Line_Rec IN OUT NOCOPY OE_ORDER_PUB.Line_Rec_Type
78 ) AS
79 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
80 BEGIN
81 -- Need both header rec and line rec to price the order
82
83 IF (px_header_rec.header_id IS NULL OR
84 px_line_rec.line_id IS NULL ) THEN
85 RAISE FND_API.G_EXC_ERROR;
86 END IF;
87
88 IF l_debug_level > 0 THEN
89 oe_debug_pub.add( 'PRICE_ORDER: SETTING REQUEST ID' , 1 ) ;
90 END IF;
91
92 G_PASS_LINE_TBL.delete;
93 qp_price_request_context.set_request_id;
94
95 IF l_debug_level > 0 THEN
96 oe_debug_pub.add( ' REQUEST ID IS : ' || QP_PREQ_GRP.G_REQUEST_ID , 1 ) ;
97 END IF;
98
99 -- Use the given header to price
100 OE_ORDER_PUB.g_hdr := px_header_rec;
101
102 END Preprocessing;
103
104 Procedure Insert_Manual_Adj(px_Line_Adj_Tbl IN OUT NOCOPY OE_ORDER_PUB.Line_Adj_Tbl_Type
105 )
106 IS
107 i pls_integer;
108 BEGIN
109 -- HTML change
110
111 i := px_line_adj_Tbl.first;
112 while i is not null loop
113 IF ((px_line_adj_tbl(i).modifier_level_code='ORDER' OR G_PASS_LINE_TBL.exists(px_Line_Adj_Tbl(i).line_id)) AND px_line_adj_tbl(i).list_line_id IS NOT NULL and px_line_adj_tbl(i).applied_flag='Y') THEN
114
115 insert into qp_preq_ldets_tmp_t
116 (REQUEST_ID,
117 LINE_DETAIL_INDEX,
118 LINE_DETAIL_TYPE_CODE,
119 PRICE_BREAK_TYPE_CODE,
120 LINE_INDEX,
121 CREATED_FROM_LIST_HEADER_ID,
122 CREATED_FROM_LIST_LINE_ID,
123 CREATED_FROM_LIST_LINE_TYPE,
124 CREATED_FROM_LIST_TYPE_CODE,
125 PRICING_GROUP_SEQUENCE,
126 PRICING_PHASE_ID,
127 OPERAND_CALCULATION_CODE,
128 OPERAND_VALUE,
129 SUBSTITUTION_TYPE_CODE,
130 SUBSTITUTION_VALUE_FROM,
131 SUBSTITUTION_VALUE_TO,
132 PRICE_FORMULA_ID,
133 PRICING_STATUS_CODE,
134 PRODUCT_PRECEDENCE,
135 INCOMPATABILITY_GRP_CODE,
136 APPLIED_FLAG,
137 AUTOMATIC_FLAG,
138 OVERRIDE_FLAG,
139 MODIFIER_LEVEL_CODE,
140 BENEFIT_QTY,
141 BENEFIT_UOM_CODE,
142 LIST_LINE_NO,
143 ACCRUAL_FLAG,
144 ACCRUAL_CONVERSION_RATE,
145 ESTIM_ACCRUAL_RATE,
146 CHARGE_TYPE_CODE,
147 CHARGE_SUBTYPE_CODE,
148 PROCESS_CODE,
149 LINE_QUANTITY,
150 UPDATED_FLAG, -- begin shu, fix Bug 2599822
151 CALCULATION_CODE,
152 CHANGE_REASON_CODE,
153 CHANGE_REASON_TEXT,
154 ADJUSTMENT_AMOUNT)
155 (select QP_PREQ_GRP.G_REQUEST_ID,
156 i,
157 'NULL',
158 'NULL', --ll.PRICE_BREAK_TYPE_CODE,
159 px_line_adj_tbl(i).header_id + nvl(px_line_adj_tbl(i).line_id, 0), --line.LINE_INDEX,
160 px_line_adj_tbl(i).LIST_HEADER_ID,
161 px_line_adj_tbl(i).LIST_LINE_ID,
162 px_line_adj_tbl(i).LIST_LINE_TYPE_CODE,
163 lhdr.LIST_TYPE_CODE,
164 ql.PRICING_GROUP_SEQUENCE,
165 ql.PRICING_PHASE_ID,
166 ql.ARITHMETIC_OPERATOR,
167 px_line_adj_tbl(i).operand, --nvl(adj_iface.OPERAND_PER_PQTY,adj_iface.OPERAND),
168 NULL, --ll.SUBSTITUTION_ATTRIBUTE,
169 NULL, --ll.SUBSTITUTION_VALUE,
170 NULL,
171 NULL, --ll.PRICE_BY_FORMULA_ID,
172 QP_PREQ_PUB.G_STATUS_UNCHANGED,
173 ql.PRODUCT_PRECEDENCE,
174 ql.INCOMPATIBILITY_GRP_CODE,
175 'Y', --adj_iface.APPLIED_FLAG,
176 'Y', --ll.AUTOMATIC_FLAG,
177 'Y', --ll.OVERRIDE_FLAG,
178 px_line_adj_tbl(i).MODIFIER_LEVEL_CODE,
179 NULL, --ll.BENEFIT_QTY,
180 NULL, --ll.BENEFIT_UOM_CODE,
181 ql.LIST_LINE_NO,
182 ql.ACCRUAL_FLAG,
183 ql.ACCRUAL_CONVERSION_RATE,
184 ql.ESTIM_ACCRUAL_RATE,
185 ql.CHARGE_TYPE_CODE,
186 ql.CHARGE_SUBTYPE_CODE,
187 QP_PREQ_PUB.G_STATUS_NEW,
188 NULL,
189 px_line_adj_tbl(i).updated_flag,
190 NULL,
191 NULL,
192 NULL,
193 px_line_adj_tbl(i).adjusted_amount --adj_iface.ADJUSTED_AMOUNT_PER_PQTY
194 From
195 qp_list_lines ql,
196 qp_list_headers_b lhdr
197 Where ql.list_line_id = px_line_adj_tbl(i).list_line_id
198 and lhdr.list_header_id = px_line_adj_tbl(i).list_header_id);
199 END IF;
200 i := px_line_adj_tbl.next(i);
201 end loop;
202 END Insert_Manual_Adj;
203
204 -- AG change --
205 procedure copy_Header_to_request(
206 p_header_rec OE_Order_PUB.Header_Rec_Type
207 ,p_Request_Type_Code varchar2
208 ,p_calculate_price_flag varchar2
209 ,px_line_index in out NOCOPY NUMBER
210 )
211 is
212 l_req_line_rec QP_PREQ_GRP.LINE_REC_TYPE;
213 --l_line_index pls_integer := px_req_line_tbl.count;
214 --
215 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
216 --
217 begin
218 G_STMT_NO := 'copy_Header_to_request#10';
219 IF l_debug_level > 0 THEN
220 oe_debug_pub.add( 'ENTERING OE_ORDER_PRICE_PVT.COPY_HEADER_TO_REQUEST' , 1 ) ;
221 END IF;
222
223 --l_line_index := l_line_index+1;
224 px_line_index := px_line_index+1;
225
226
227 l_req_line_rec.CURRENCY_CODE := p_Header_rec.transactional_curr_code;
228 QP_PREQ_GRP.G_CURRENCY_CODE := l_req_line_rec.currency_code;
229 l_req_line_rec.PRICE_FLAG := p_calculate_price_flag;
230 l_req_line_rec.Active_date_first_type := 'ORD';
231 l_req_line_rec.Active_date_first := p_Header_rec.Ordered_date;
232
233 G_LINE_INDEX_TBL(px_line_index) := p_header_rec.header_id;
234 G_LINE_TYPE_CODE_TBL(px_line_index) := 'ORDER';
235 IF (p_header_rec.pricing_date is not null and p_header_rec.pricing_date <> FND_API.G_MISS_DATE) THEN
236 G_PRICING_EFFECTIVE_DATE_TBL(px_line_index)
237 := TRUNC(nvl(p_header_rec.pricing_date,sysdate));
238 ELSE
239 G_PRICING_EFFECTIVE_DATE_TBL(px_line_index)
240 := TRUNC(sysdate);
241 END IF;
242 IF (p_header_rec.ordered_date is not null and p_header_rec.ordered_date <> FND_API.G_MISS_DATE) THEN
243 G_ACTIVE_DATE_FIRST_TBL(px_line_index)
244 := TRUNC(p_header_rec.Ordered_date);
245 ELSE
246 G_ACTIVE_DATE_FIRST_TBL(px_line_index)
247 := TRUNC(sysdate);
248 END IF;
249 G_ACTIVE_DATE_FIRST_TYPE_TBL(px_line_index)
250 := 'ORD';
251 G_ACTIVE_DATE_SECOND_TBL(px_line_index)
252 := NULL;
253 G_ACTIVE_DATE_SECOND_TYPE_TBL(px_line_index)
254 := NULL;
255 G_LINE_QUANTITY_TBL(px_line_index) := NULL;
256 G_LINE_UOM_CODE_TBL(px_line_index) := NULL;
257 G_REQUEST_TYPE_CODE_TBL(px_line_index) := 'ONT';
258 G_PRICED_QUANTITY_TBL(px_line_index) := NULL;
259 G_UOM_QUANTITY_TBL(px_line_index) := NULL;
260 G_PRICED_UOM_CODE_TBL(px_line_index) := NULL;
261 G_CURRENCY_CODE_TBL(px_line_index) := p_header_rec.transactional_CURR_CODE;
262 G_UNIT_PRICE_TBL(px_line_index) := NULL;
263 G_PERCENT_PRICE_TBL(px_line_index) := NULL;
264 G_ADJUSTED_UNIT_PRICE_TBL(px_line_index) := NULL;
265 G_PROCESSED_FLAG_TBL(px_line_index) := QP_PREQ_GRP.G_NOT_PROCESSED;
266 G_PRICE_FLAG_TBL(px_line_index) := p_calculate_price_flag;
267 G_LINE_ID_TBL(px_line_index) := p_header_rec.header_id;
268 G_ROUNDING_FLAG_TBL(px_line_index)
269 := 'Q';
270 G_ROUNDING_FACTOR_TBL(px_line_index) := NULL;
271 G_PROCESSING_ORDER_TBL(px_line_index) := NULL;
272 G_PRICING_STATUS_CODE_tbl(px_line_index) := QP_PREQ_GRP.G_STATUS_UNCHANGED;
273 G_PRICING_STATUS_TEXT_tbl(px_line_index) := NULL;
274
275 G_QUALIFIERS_EXIST_FLAG_TBL(px_line_index) :='N';
276 G_PRICING_ATTRS_EXIST_FLAG_TBL(px_line_index) :='N';
277 G_PRICE_LIST_ID_TBL(px_line_index) :=NULL;
278 G_PL_VALIDATED_FLAG_TBL(px_line_index) := 'N';
279 IF (p_header_rec.price_request_code is not null and p_header_rec.price_request_code <> FND_API.G_MISS_CHAR) THEN
280 G_PRICE_REQUEST_CODE_TBL(px_line_index) := p_header_rec.price_request_code;
281 ELSE
282 G_PRICE_REQUEST_CODE_TBL(px_line_index) := NULL;
283 END IF;
284 G_USAGE_PRICING_TYPE_TBL(px_line_index) :='REGULAR';
285 G_UPD_ADJUSTED_UNIT_PRICE_TBL(px_line_index) :=NULL;
286 G_LINE_CATEGORY_TBL(px_line_index):=NULL;
287 G_CATCHWEIGHT_QTY_TBL(px_line_index) := NULL;
288 G_ACTUAL_ORDER_QTY_TBL(px_line_index):=NULL;
289
290 IF l_debug_level > 0 THEN
291 oe_debug_pub.add( 'EXISTING OE_ORDER_PRICE_PVT.COPY_HEADER_TO_REQUEST' , 1 ) ;
292 END IF;
293
294 end copy_Header_to_request;
295
296 procedure copy_Line_to_request(
297 p_Line_rec OE_Order_PUB.Line_Rec_Type
298 --,px_req_line_tbl in out nocopy QP_PREQ_GRP.LINE_TBL_TYPE
299 ,p_pricing_events varchar2
300 ,p_request_type_code varchar2
301 ,p_honor_price_flag varchar2
302 ,px_line_index in out NOCOPY NUMBER
303 )
304 is
305 --l_line_index pls_integer := nvl(px_req_line_tbl.count,0);
306 l_uom_rate NUMBER;
307 v_discounting_privilege VARCHAR2(30);
308 l_item_type_code VARCHAR2(30);
309 l_item_rec OE_ORDER_CACHE.item_rec_type; --OPM 2434270
310 l_dummy VARCHAR2(30);
311 x_return_status VARCHAR2(30);
312 x_msg_count NUMBER;
313 x_msg_data VARCHAR2(2000);
314 x_secondary_quantity NUMBER;
315 x_secondary_uom_code VARCHAR2(3);
316 l_shipped_quantity2 NUMBER;
317 x_item_rec OE_Order_Cache.Item_Rec_Type;
318 l_UOM_QUANTITY NUMBER;
319 l_Calculate_Price_Flag varchar2(1);
320 --
321 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
322 --
323 begin
324
325 px_line_index := px_line_index + 1;
326 G_LINE_INDEX_TBL(px_line_index) := p_line_rec.header_id + p_line_rec.line_id;
327 G_LINE_TYPE_CODE_TBL(px_line_index) := 'LINE';
328
329 G_PRICING_EFFECTIVE_DATE_TBL(px_line_index):= TRUNC(nvl(p_line_rec.PRICING_DATE,sysdate));
330 G_ACTIVE_DATE_FIRST_TBL(px_line_index) := OE_Order_Pub.G_HDR.Ordered_date;
331 G_ACTIVE_DATE_FIRST_TYPE_TBL(px_line_index):= 'ORD';
332 IF (p_line_rec.schedule_ship_date is not null) THEN
333 G_ACTIVE_DATE_SECOND_TBL(px_line_index) := TRUNC(p_line_rec.schedule_ship_date);
334 G_ACTIVE_DATE_SECOND_TYPE_TBL(px_line_index):= 'SHIP';
335 ELSE
336 G_ACTIVE_DATE_SECOND_TBL(px_line_index) := NULL;
337 G_ACTIVE_DATE_SECOND_TYPE_TBL(px_line_index):= NULL;
338 END IF;
339 /*
340 IF l_debug_level > 0 THEN
341 oe_debug_pub.add( 'QUANTITY'||L_REQ_LINE_REC.LINE_QUANTITY||' '||L_REQ_LINE_REC.PRICED_QUANTITY , 3 ) ;
342 END IF;
343 IF l_debug_level > 0 THEN
344 oe_debug_pub.add( 'PRICE FLAG'||L_REQ_LINE_REC.PRICE_FLAG ) ;
345 END IF;
346 */
347 G_LINE_QUANTITY_TBL(px_line_index) := p_line_rec.ordered_quantity;
348 G_LINE_UOM_CODE_TBL(px_line_index) := p_line_rec.order_quantity_uom;
349 G_REQUEST_TYPE_CODE_TBL(px_line_index) := 'ONT';
350 G_PRICED_QUANTITY_TBL(px_line_index) := NULL; --p_line_rec.PRICING_QUANTITY;
351 IF (p_line_rec.item_type_code = 'SERVICE' AND p_line_rec.service_period IS NULL) THEN
352 l_UOM_QUANTITY := 0;
353 Elsif (p_Line_rec.service_period = p_Line_rec.Order_quantity_uom) Then
354 l_UOM_QUANTITY := p_Line_rec.service_duration;
355 Elsif (p_line_rec.service_period IS NOT NULL and p_line_rec.service_period <> FND_API.G_MISS_CHAR) THEN
356 INV_CONVERT.INV_UM_CONVERSION(From_Unit => p_Line_rec.service_period
357 ,To_Unit => p_Line_rec.Order_quantity_uom
358 ,Item_ID => p_Line_rec.Inventory_item_id
359 ,Uom_Rate => l_Uom_rate);
360 l_UOM_QUANTITY := p_Line_rec.service_duration * l_uom_rate;
361 End If;
362 G_UOM_QUANTITY_TBL(px_line_index) := l_UOM_QUANTITY;
363 G_PRICED_UOM_CODE_TBL(px_line_index) := p_line_rec.PRICING_QUANTITY_UOM;
364 G_CURRENCY_CODE_TBL(px_line_index) := oe_order_pub.g_hdr.TRANSACTIONAL_CURR_CODE;
365 G_UNIT_PRICE_TBL(px_line_index) := p_line_Rec.UNIT_LIST_PRICE_PER_PQTY;
366 G_PERCENT_PRICE_TBL(px_line_index) := NULL;
367 G_ADJUSTED_UNIT_PRICE_TBL(px_line_index) := p_line_rec.UNIT_SELLING_PRICE_PER_PQTY;
368 G_PROCESSED_FLAG_TBL(px_line_index) := QP_PREQ_GRP.G_NOT_PROCESSED;
369 G_PRICE_FLAG_TBL(px_line_index) := nvl(p_line_rec.CALCULATE_PRICE_FLAG,'Y');
370 G_LINE_ID_TBL(px_line_index) := p_line_rec.LINE_ID;
371 IF l_debug_level > 0 THEN
372 oe_debug_pub.add( 'LINE ID IN G_LINE_ID_TBL:'|| G_LINE_ID_TBL ( PX_LINE_INDEX ) ) ;
373 END IF;
374 G_ROUNDING_FLAG_TBL(px_line_index) := 'Q';
375 G_ROUNDING_FACTOR_TBL(px_line_index) := NULL;
376 G_PROCESSING_ORDER_TBL(px_line_index) := NULL;
377 G_PRICING_STATUS_CODE_tbl(px_line_index) := QP_PREQ_GRP.G_STATUS_UNCHANGED; -- AG
378 G_PRICING_STATUS_TEXT_tbl(px_line_index) := NULL;
379 G_QUALIFIERS_EXIST_FLAG_TBL(px_line_index) :='N';
380 G_PRICING_ATTRS_EXIST_FLAG_TBL(px_line_index) :='N';
381 G_PRICE_LIST_ID_TBL(px_line_index) :=p_line_rec.price_list_id;
382 G_PL_VALIDATED_FLAG_TBL(px_line_index) := 'N';
383 G_PRICE_REQUEST_CODE_TBL(px_line_index) := p_line_rec.price_request_code;
384 G_USAGE_PRICING_TYPE_TBL(px_line_index) :='REGULAR';
385 G_UPD_ADJUSTED_UNIT_PRICE_TBL(px_line_index) :=NULL;
386 G_LINE_CATEGORY_TBL(px_line_index) := p_line_rec.line_category_code;
387 G_catchweight_qty_tbl(px_line_index) := NULL;
388 g_actual_order_qty_tbl(px_line_index):= NULL;
389 IF l_debug_level > 0 THEN
390 oe_debug_pub.add( 'EXISTING OE_ORDER_PRICE_PVT.COPY_LINE_TO_REQUEST' , 1 ) ;
391 END IF;
392
393 end copy_Line_to_request;
394
395 Procedure Insert_lines(
396 p_Header_Rec IN OE_ORDER_PUB.Header_Rec_Type
397 , px_Line_Tbl IN OUT NOCOPY OE_ORDER_PUB.Line_Tbl_Type
398 , p_order_status_rec QP_UTIL_PUB.ORDER_LINES_STATUS_REC_TYPE
399 , p_pricing_events IN VARCHAR2
400 ) IS
401 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
402 l_pass_line_flag VARCHAR2(1);
403 l_check_line_flag VARCHAR2(1);
404 l_source_line_flag VARCHAR2(1);
405 l_line_rec OE_ORDER_PUB.Line_Rec_Type;
406 i pls_integer;
407 l_line_index PLS_INTEGER := 0;
408
409 BEGIN
410 i := px_Line_Tbl.FIRST;
411 While i is Not Null Loop
412 l_line_rec := px_Line_Tbl(i);
413 IF (l_line_rec.PRICING_DATE = FND_API.G_MISS_DATE) THEN
414 l_line_Rec.PRICING_DATE := sysdate;
415 END IF;
416
417 IF (l_line_rec.UNIT_LIST_PRICE_PER_PQTY = FND_API.G_MISS_NUM) THEN
418 IF (l_line_rec.UNIT_LIST_PRICE = FND_API.G_MISS_NUM) THEN
419 l_line_Rec.UNIT_LIST_PRICE := NULL;
420 END IF;
421 l_line_Rec.UNIT_LIST_PRICE_PER_PQTY := l_line_rec.UNIT_LIST_PRICE;
422 END IF;
423 If (l_line_rec.calculate_price_Flag is null or l_line_rec.calculate_price_flag = FND_API.G_MISS_CHAR) THEN
424 l_line_rec.calculate_price_flag := 'Y';
425 End IF;
426
427 If (l_line_rec.operation is null or l_line_rec.operation = FND_API.G_MISS_CHAR) THEN
428 l_line_rec.operation := oe_globals.g_opr_create;
429 End IF;
430
431 l_pass_line_flag := 'N';
432 l_check_line_flag := 'N';
433 l_source_line_flag := 'N';
434 IF (l_line_rec.calculate_price_flag = 'N' AND p_order_status_rec.summary_line_flag = 'Y')
435 THEN
436 l_pass_line_flag := 'Y';
437 ELSIF l_line_rec.calculate_price_flag <> 'N'
438 THEN
439 IF (p_order_status_rec.changed_lines_flag = 'Y' AND (
440 l_line_rec.operation = OE_GLOBALS.G_OPR_CREATE
441 OR l_line_rec.operation = OE_GLOBALS.G_OPR_UPDATE)
442 )
443 THEN
444 l_source_line_flag := 'Y';
445 l_pass_line_flag := 'Y';
446 ELSIF (p_order_status_rec.all_lines_flag = 'Y' AND
447 l_line_rec.operation <> OE_GLOBALS.G_OPR_DELETE)
448 THEN
449 l_check_line_flag := 'Y';
450 l_source_line_flag := 'Y';
451 END IF;
452 END IF;
453
454 IF (l_source_line_flag = 'Y')
455 THEN
456
457 OE_ORDER_PUB.g_line := l_line_rec;
458 QP_Attr_Mapping_PUB.Build_Contexts(
459 p_request_type_code => 'ONT',
460 --p_line_index => l_line_index,
461 p_line_index => l_line_rec.header_id
462 +l_line_rec.line_id,
463 p_pricing_type_code => 'L',
464 p_check_line_flag => l_check_line_flag,
465 p_pricing_event => p_pricing_events,
466 x_pass_line => l_pass_line_flag
467 );
468 END IF;
469
470 IF (l_pass_line_flag = 'Y')
471 THEN
472 copy_Line_to_request(
473 p_Line_rec => l_line_rec
474 ,p_pricing_events => p_pricing_events
475 ,p_request_type_code => 'ONT'
476 ,p_honor_price_flag => 'Y'
477 ,px_line_index => l_line_index
478 );
479
480 G_PASS_LINE_TBL(l_line_rec.line_id) := l_line_rec.line_id;
481 END IF;
482
483 i := px_line_tbl.next(i);
484 END LOOP;
485
486 QP_Attr_Mapping_PUB.Build_Contexts(
487 p_request_type_code => 'ONT',
488 p_line_index=>oe_order_pub.g_hdr.header_id,
489 p_pricing_type_code => 'H'
490 );
491
492
493 copy_header_to_request(
494 p_Header_rec => p_Header_Rec
495 ,p_request_type_code => 'ONT'
496 ,p_calculate_price_flag => 'Y'
497 ,px_line_index => l_line_index
498 );
499
500 END Insert_Lines;
501
502
503 procedure Populate_Temp_Table
504 IS
505 l_return_status varchar2(1) := FND_API.G_RET_STS_SUCCESS;
506 l_return_status_Text varchar2(240) ;
507 --
508 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
509 --
510 BEGIN
511 IF l_debug_level > 0 THEN
512 oe_debug_pub.add( 'BEFORE DIRECT INSERT INTO TEMP TABLE: BULK INSERT'||G_LINE_INDEX_TBL.COUNT , 1 ) ;
513 END IF;
514 QP_PREQ_GRP.INSERT_LINES2
515 (p_LINE_INDEX => G_LINE_INDEX_TBL,
516 p_LINE_TYPE_CODE => G_LINE_TYPE_CODE_TBL,
517 p_PRICING_EFFECTIVE_DATE =>G_PRICING_EFFECTIVE_DATE_TBL,
518 p_ACTIVE_DATE_FIRST =>G_ACTIVE_DATE_FIRST_TBL,
519 p_ACTIVE_DATE_FIRST_TYPE =>G_ACTIVE_DATE_FIRST_TYPE_TBL,
520 p_ACTIVE_DATE_SECOND =>G_ACTIVE_DATE_SECOND_TBL,
521 p_ACTIVE_DATE_SECOND_TYPE =>G_ACTIVE_DATE_SECOND_TYPE_TBL,
522 p_LINE_QUANTITY => G_LINE_QUANTITY_TBL,
523 p_LINE_UOM_CODE => G_LINE_UOM_CODE_TBL,
524 p_REQUEST_TYPE_CODE => G_REQUEST_TYPE_CODE_TBL,
525 p_PRICED_QUANTITY => G_PRICED_QUANTITY_TBL,
526 p_PRICED_UOM_CODE => G_PRICED_UOM_CODE_TBL,
527 p_CURRENCY_CODE => G_CURRENCY_CODE_TBL,
528 p_UNIT_PRICE => G_UNIT_PRICE_TBL,
529 p_PERCENT_PRICE => G_PERCENT_PRICE_TBL,
530 p_UOM_QUANTITY => G_UOM_QUANTITY_TBL,
531 p_ADJUSTED_UNIT_PRICE =>G_ADJUSTED_UNIT_PRICE_TBL,
532 p_UPD_ADJUSTED_UNIT_PRICE =>G_UPD_ADJUSTED_UNIT_PRICE_TBL,
533 p_PROCESSED_FLAG =>G_PROCESSED_FLAG_TBL,
534 p_PRICE_FLAG =>G_PRICE_FLAG_TBL,
535 p_LINE_ID =>G_LINE_ID_TBL,
536 p_PROCESSING_ORDER =>G_PROCESSING_ORDER_TBL,
537 p_PRICING_STATUS_CODE =>G_PRICING_STATUS_CODE_tbl,
538 p_PRICING_STATUS_TEXT =>G_PRICING_STATUS_TEXT_tbl,
539 p_ROUNDING_FLAG =>G_ROUNDING_FLAG_TBL,
540 p_ROUNDING_FACTOR =>G_ROUNDING_FACTOR_TBL,
541 p_QUALIFIERS_EXIST_FLAG => G_QUALIFIERS_EXIST_FLAG_TBL,
542 p_PRICING_ATTRS_EXIST_FLAG =>G_PRICING_ATTRS_EXIST_FLAG_TBL,
543 p_PRICE_LIST_ID => G_PRICE_LIST_ID_TBL,
544 p_VALIDATED_FLAG => G_PL_VALIDATED_FLAG_TBL,
545 p_PRICE_REQUEST_CODE => G_PRICE_REQUEST_CODE_TBL,
546 p_USAGE_PRICING_TYPE => G_USAGE_PRICING_TYPE_tbl,
547 p_line_category => G_LINE_CATEGORY_tbl,
548 p_catchweight_qty => G_CATCHWEIGHT_QTY_tbl,
549 p_actual_order_qty => G_ACTUAL_ORDER_QTY_TBL,
550 x_status_code =>l_return_status,
551 x_status_text =>l_return_status_text);
552
553 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
554 IF l_debug_level > 0 THEN
555 oe_debug_pub.add( 'WRONG IN INSERT_LINES2'||L_RETURN_STATUS_TEXT , 1 ) ;
556 END IF;
557 FND_MESSAGE.SET_NAME('ONT','ONT_PRICING_ERROR');
558 FND_MESSAGE.SET_TOKEN('ERR_TEXT',l_return_status_text);
559 OE_MSG_PUB.Add;
560 RAISE FND_API.G_EXC_ERROR;
561 END IF;
562
563 IF G_ATTR_LINE_INDEX_tbl.count > 0 THEN
564 QP_PREQ_GRP.INSERT_LINE_ATTRS2
565 ( G_ATTR_LINE_INDEX_tbl,
566 G_ATTR_LINE_DETAIL_INDEX_tbl ,
567 G_ATTR_ATTRIBUTE_LEVEL_tbl ,
568 G_ATTR_ATTRIBUTE_TYPE_tbl ,
569 G_ATTR_LIST_HEADER_ID_tbl ,
570 G_ATTR_LIST_LINE_ID_tbl ,
571 G_ATTR_PRICING_CONTEXT_tbl ,
572 G_ATTR_PRICING_ATTRIBUTE_tbl ,
573 G_ATTR_VALUE_FROM_tbl ,
574 G_ATTR_SETUP_VALUE_FROM_tbl ,
575 G_ATTR_VALUE_TO_tbl ,
576 G_ATTR_SETUP_VALUE_TO_tbl ,
577 G_ATTR_GROUPING_NUMBER_tbl ,
578 G_ATTR_NO_QUAL_IN_GRP_tbl ,
579 G_ATTR_COMP_OPERATOR_TYPE_tbl ,
580 G_ATTR_VALIDATED_FLAG_tbl ,
581 G_ATTR_APPLIED_FLAG_tbl ,
582 G_ATTR_PRICING_STATUS_CODE_tbl ,
583 G_ATTR_PRICING_STATUS_TEXT_tbl ,
584 G_ATTR_QUAL_PRECEDENCE_tbl ,
585 G_ATTR_DATATYPE_tbl ,
586 G_ATTR_PRICING_ATTR_FLAG_tbl ,
587 G_ATTR_QUALIFIER_TYPE_tbl ,
588 G_ATTR_PRODUCT_UOM_CODE_TBL ,
589 G_ATTR_EXCLUDER_FLAG_TBL ,
590 G_ATTR_PRICING_PHASE_ID_TBL ,
591 G_ATTR_INCOM_GRP_CODE_TBL,
592 G_ATTR_LDET_TYPE_CODE_TBL,
593 G_ATTR_MODIFIER_LEVEL_CODE_TBL,
594 G_ATTR_PRIMARY_UOM_FLAG_TBL,
595 l_return_status ,
596 l_return_status_text );
597
598 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
599 IF l_debug_level > 0 THEN
600 oe_debug_pub.add( 'ERROR INSERTING INTO LINE ATTRS'||SQLERRM ) ;
601 END IF;
602 FND_MESSAGE.SET_NAME('ONT','ONT_PRICING_ERROR');
603 FND_MESSAGE.SET_TOKEN('ERR_TEXT',l_return_status_text);
604 OE_MSG_PUB.Add;
605 raise fnd_api.g_exc_unexpected_error;
606 END IF;
607
608 END IF;
609 IF l_debug_level > 0 THEN
610 oe_debug_pub.add( 'AFTER DIRECT INSERT INTO TEMP TABLE: BULK INSERT' , 1 ) ;
611 END IF;
612
613 EXCEPTION
614 WHEN OTHERS THEN
615 RAISE FND_API.G_EXC_ERROR;
616 END POPULATE_TEMP_TABLE;
617
618
619 /*+--------------------------------------------------------------------
620 |Reset_All_Tbls
621 |To Reset all pl/sql tables.
622 +--------------------------------------------------------------------
623 */
624 PROCEDURE Reset_All_Tbls
625 AS
626 l_routine VARCHAR2(240):='QP_PREQ_GRP.Reset_All_Tbls';
627 --
628 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
629 --
630 BEGIN
631 G_LINE_INDEX_tbl.delete;
632 G_LINE_TYPE_CODE_TBL.delete ;
633 G_PRICING_EFFECTIVE_DATE_TBL.delete ;
634 G_ACTIVE_DATE_FIRST_TBL.delete ;
635 G_ACTIVE_DATE_FIRST_TYPE_TBL.delete ;
636 G_ACTIVE_DATE_SECOND_TBL.delete ;
637 G_ACTIVE_DATE_SECOND_TYPE_TBL.delete ;
638 G_LINE_QUANTITY_TBL.delete ;
639 G_LINE_UOM_CODE_TBL.delete ;
640 G_REQUEST_TYPE_CODE_TBL.delete ;
641 G_PRICED_QUANTITY_TBL.delete ;
642 G_UOM_QUANTITY_TBL.delete ;
643 G_PRICED_UOM_CODE_TBL.delete ;
644 G_CURRENCY_CODE_TBL.delete ;
645 G_UNIT_PRICE_TBL.delete ;
646 G_PERCENT_PRICE_TBL.delete ;
647 G_ADJUSTED_UNIT_PRICE_TBL.delete ;
648 G_PROCESSED_FLAG_TBL.delete ;
649 G_PRICE_FLAG_TBL.delete ;
650 G_LINE_ID_TBL.delete ;
651 G_PROCESSING_ORDER_TBL.delete ;
652 G_ROUNDING_FLAG_TBL.delete;
653 G_ROUNDING_FACTOR_TBL.delete ;
654 G_PRICING_STATUS_CODE_TBL.delete ;
655 G_PRICING_STATUS_TEXT_TBL.delete ;
656
657 G_ATTR_LINE_INDEX_tbl.delete;
658 G_ATTR_ATTRIBUTE_LEVEL_tbl.delete;
659 G_ATTR_VALIDATED_FLAG_tbl.delete;
660 G_ATTR_ATTRIBUTE_TYPE_tbl.delete;
661 G_ATTR_PRICING_CONTEXT_tbl.delete;
662 G_ATTR_PRICING_ATTRIBUTE_tbl.delete;
663 G_ATTR_APPLIED_FLAG_tbl.delete;
664 G_ATTR_PRICING_STATUS_CODE_tbl.delete;
665 G_ATTR_PRICING_ATTR_FLAG_tbl.delete;
666 G_ATTR_LIST_HEADER_ID_tbl.delete;
667 G_ATTR_LIST_LINE_ID_tbl.delete;
668 G_ATTR_VALUE_FROM_tbl.delete;
669 G_ATTR_SETUP_VALUE_FROM_tbl.delete;
670 G_ATTR_VALUE_TO_tbl.delete;
671 G_ATTR_SETUP_VALUE_TO_tbl.delete;
672 G_ATTR_GROUPING_NUMBER_tbl.delete;
673 G_ATTR_NO_QUAL_IN_GRP_tbl.delete;
674 G_ATTR_COMP_OPERATOR_TYPE_tbl.delete;
675 G_ATTR_VALIDATED_FLAG_tbl.delete;
676 G_ATTR_APPLIED_FLAG_tbl.delete;
677 G_ATTR_PRICING_STATUS_CODE_tbl.delete;
678 G_ATTR_PRICING_STATUS_TEXT_tbl.delete;
679 G_ATTR_QUAL_PRECEDENCE_tbl.delete;
680 G_ATTR_DATATYPE_tbl.delete;
681 G_ATTR_PRICING_ATTR_FLAG_tbl.delete ;
682 G_ATTR_QUALIFIER_TYPE_tbl.delete;
683 G_ATTR_PRODUCT_UOM_CODE_TBL.delete;
684 G_ATTR_EXCLUDER_FLAG_TBL.delete;
685 G_ATTR_PRICING_PHASE_ID_TBL.delete;
686 G_ATTR_INCOM_GRP_CODE_TBL.delete;
687 G_ATTR_LDET_TYPE_CODE_TBL.delete;
688 G_ATTR_MODIFIER_LEVEL_CODE_TBL.delete;
689 G_ATTR_PRIMARY_UOM_FLAG_TBL.delete;
690 EXCEPTION
691 WHEN OTHERS THEN
692 IF l_debug_level > 0 THEN
693 oe_debug_pub.add( L_ROUTINE||': '||SQLERRM , 1 ) ;
694 END IF;
695 END reset_all_tbls;
696
697 procedure Report_Engine_Errors(
698 x_return_status out nocopy Varchar2
699 , px_line_Tbl in out NOCOPY oe_Order_Pub.Line_Tbl_Type
700 , p_header_rec IN oe_Order_Pub.header_rec_type
701 )
702 is
703 l_line_rec oe_order_pub.line_rec_type;
704 l_line_tbl OE_Order_PUB.Line_Tbl_Type;
705 i pls_Integer;
706 j pls_Integer:=0;
707 l_price_list Varchar2(240);
708 l_allow_negative_price Varchar2(30) := nvl(fnd_profile.value('ONT_NEGATIVE_PRICING'),'N');
709 l_invalid_line Varchar2(1):='N';
710 l_temp_line_rec oe_order_pub.line_rec_type;
711 l_request_id NUMBER;
712 vmsg Varchar2(2000);
713
714 cursor wrong_lines is
715 select line_id
716 , line_index
717 , line_type_code
718 , processed_code
719 , pricing_status_code
720 , pricing_status_text status_text
721 , unit_price
722 , adjusted_unit_price
723 , priced_quantity
724 , line_quantity
725 , priced_uom_code
726 from qp_preq_lines_tmp
727 where process_status <> 'NOT_VALID' and
728 (pricing_status_code not in
729 (QP_PREQ_GRP.G_STATUS_UNCHANGED,
730 QP_PREQ_GRP.G_STATUS_UPDATED,
731 QP_PREQ_GRP.G_STATUS_GSA_VIOLATION,
732 'NOT_VALID')
733 OR (l_allow_negative_price = 'N' AND (unit_price<0 OR adjusted_unit_price<0)));
734 cursor wrong_book_lines is
735 select lines.line_id
736 , lines.unit_price
737 , lines.adjusted_unit_price
738 , lines.price_list_header_id
739 , lines.priced_quantity
740 , lines.line_quantity
741 , l.shipped_quantity
742 , l.header_id
743 from oe_order_lines l
744 , qp_preq_lines_tmp lines
745 where lines.line_id = l.line_id
746 and lines.line_type_code='LINE'
747 and l.booked_flag = 'Y'
748 and l.item_type_code NOT IN ('INCLUDED','CONFIG')
749 and (lines.unit_price is NULL
750 or lines.adjusted_unit_price is NULL
751 or lines.price_list_header_id is NULL)
752 and lines.process_status <> 'NOT_VALID'
753 ;
754 -- Bug 2079138: booked lines should always have price
755 --and lines.pricing_status_code in (QP_PREQ_GRP.G_STATUS_UPDATED
756 -- , QP_PREQ_GRP.G_STATUS_GSA_VIOLATION
757 -- );
758 --
759 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
760 --
761 begin
762 -- Update Order Lines
763 IF l_debug_level > 0 THEN
764 oe_debug_pub.add( 'ENTERING OE_ORDER_PRICE_PVT.REPORT_ENGINE_ERROR' , 1 ) ;
765 END IF;
766 G_STMT_NO := 'Report_Engine_Error#10';
767
768 For wrong_line in wrong_lines loop --i:= p_req_line_tbl.first;
769
770 J:= px_Line_Tbl.First;
771 While J is not null loop
772 IF l_debug_level > 0 THEN
773 oe_debug_pub.add( 'ERROR '||J||' LINE'||PX_LINE_TBL ( J ) .LINE_ID||' '||WRONG_LINE.LINE_ID ) ;
774 END IF;
775 If px_Line_Tbl(j).line_id = wrong_line.line_id
776 --or
777 -- J = wrong_line.line_index
778 then
779 l_line_rec := px_Line_Tbl(J);
780 IF l_debug_level > 0 THEN
781 oe_debug_pub.add( 'PRICE'||L_LINE_REC.UNIT_LIST_PRICE||'+'||L_LINE_REC.UNIT_LIST_PRICE_PER_PQTY ) ;
782 END IF;
783 exit;
784 End if;
785 J:= px_Line_Tbl.next(j);
786 end loop;
787
788 OE_MSG_PUB.set_msg_context
789 ( p_entity_code => 'LINE'
790 ,p_entity_id => l_line_rec.line_id
791 ,p_header_id => l_line_rec.header_id
792 ,p_line_id => l_line_rec.line_id
793 ,p_order_source_id => l_line_rec.order_source_id
794 ,p_orig_sys_document_ref => l_line_rec.orig_sys_document_ref
795 ,p_orig_sys_document_line_ref => l_line_rec.orig_sys_line_ref
796 ,p_orig_sys_shipment_ref => l_line_rec.orig_sys_shipment_ref
797 ,p_change_sequence => l_line_rec.change_sequence
798 ,p_source_document_type_id => l_line_rec.source_document_type_id
799 ,p_source_document_id => l_line_rec.source_document_id
800 ,p_source_document_line_id => l_line_rec.source_document_line_id
801 );
802
803 IF l_debug_level > 0 THEN
804 oe_debug_pub.add( 'THE STATUS'||WRONG_LINE.PRICING_STATUS_CODE||':'||WRONG_LINE.PROCESSED_CODE||':'||WRONG_LINE.STATUS_TEXT ) ;
805 END IF;
806 l_invalid_line := 'N';
807 -- add message when the price list is found to be inactive
808 IF wrong_line.line_Type_code ='LINE' and
809 wrong_line.processed_code = QP_PREQ_GRP.G_STS_LHS_NOT_FOUND Then
810 IF l_debug_level > 0 THEN
811 oe_debug_pub.add( 'PRICE LIST NOT FOUND' ) ;
812 END IF;
813 IF l_debug_level > 0 THEN
814 oe_debug_pub.add( 'LINDA , INVALID PRICE LIST ' , 1 ) ;
815 END IF;
816 FND_MESSAGE.SET_NAME('ONT','ONT_NO_PRICE_LIST_FOUND');
817 FND_MESSAGE.SET_TOKEN('ITEM',nvl(l_line_rec.Ordered_Item,l_line_rec.inventory_item_id));
818 FND_MESSAGE.SET_TOKEN('UOM',l_line_rec.Order_Quantity_uom);
819 IF OE_CODE_CONTROL.Get_Code_Release_Level >= '110509' THEN
820 if l_line_rec.shipped_quantity is not null and l_line_rec.shipped_quantity <> FND_API.G_MISS_NUM then
821 vmsg := FND_MESSAGE.GET;
822 else
823 OE_MSG_PUB.Add;
824 end if;
825 else
826 OE_MSG_PUB.Add;
827 end if;
828
829 l_invalid_line := 'Y';
830 END IF;
831
832 if wrong_line.line_Type_code ='LINE' and
833 wrong_line.pricing_status_code in ( QP_PREQ_GRP.G_STATUS_INVALID_PRICE_LIST,
834 QP_PREQ_GRP.G_STS_LHS_NOT_FOUND,
835 QP_PREQ_GRP.G_STATUS_FORMULA_ERROR,
836 QP_PREQ_GRP.G_STATUS_OTHER_ERRORS,
837 FND_API.G_RET_STS_UNEXP_ERROR,
838 FND_API.G_RET_STS_ERROR,
839 QP_PREQ_GRP.G_STATUS_CALC_ERROR,
840 QP_PREQ_GRP.G_STATUS_UOM_FAILURE,
841 QP_PREQ_GRP.G_STATUS_INVALID_UOM,
842 QP_PREQ_GRP.G_STATUS_DUP_PRICE_LIST,
843 QP_PREQ_GRP.G_STATUS_INVALID_UOM_CONV,
844 QP_PREQ_GRP.G_STATUS_INVALID_INCOMP,
845 QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL_ERROR)
846 then
847
848 l_invalid_line := 'Y';
849 Begin
850 Select name into l_price_list
851 from qp_list_headers_vl where
852 list_header_id = l_line_rec.price_list_id;
853 Exception When No_data_found then
854 l_price_list := l_line_rec.price_list_id;
855 End;
856
857 If wrong_line.pricing_status_code = QP_PREQ_GRP.G_STATUS_INVALID_PRICE_LIST then
858 IF l_debug_level > 0 THEN
859 oe_debug_pub.add( 'INVALID ITEM/PRICE LIST COMBINATION'||L_LINE_REC.ORDERED_ITEM||L_LINE_REC.ORDER_QUANTITY_UOM||L_PRICE_LIST ) ;
860 END IF;
861 FND_MESSAGE.SET_NAME('ONT','OE_PRC_NO_LIST_PRICE');
862 FND_MESSAGE.SET_TOKEN('ITEM',nvl(l_line_rec.Ordered_Item,l_line_rec.inventory_item_id));
863 FND_MESSAGE.SET_TOKEN('UNIT',l_line_rec.Order_Quantity_uom);
864 FND_MESSAGE.SET_TOKEN('PRICE_LIST',l_Price_List);
865 IF OE_CODE_CONTROL.Get_Code_Release_Level >= '110509' THEN
866 if l_line_rec.shipped_quantity is not null and l_line_rec.shipped_quantity <> FND_API.G_MISS_NUM then
867 vmsg := FND_MESSAGE.GET;
868 else
869 OE_MSG_PUB.Add;
870 end if;
871 else
872 OE_MSG_PUB.Add;
873 end if;
874 IF l_debug_level > 0 THEN
875 oe_debug_pub.add( 'BEFORE CHECKING BOOK FLAG' ) ;
876 END IF;
877
878 If nvl(l_line_rec.booked_flag,'X') = 'Y' Then
879 IF l_debug_level > 0 THEN
880 oe_debug_pub.add( ' EXCEPTION: PRICE LIST MISSING FOR BOOKED ORDER' ) ;
881 END IF;
882 FND_MESSAGE.SET_NAME('ONT','OE_BOOK_REQD_LINE_ATTRIBUTE');
883 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',OE_ORDER_UTIL.GET_ATTRIBUTE_NAME('UNIT_LIST_PRICE'));
884 OE_MSG_PUB.ADD;
885 RAISE FND_API.G_EXC_ERROR;
886 End If;
887 IF l_debug_level > 0 THEN
888 oe_debug_pub.add( 'PRICE'||L_LINE_REC.UNIT_SELLING_PRICE||':'||L_LINE_REC.UNIT_LIST_PRICE ) ;
889 END IF;
890
891 --Fix bug 1650637
892 If (l_line_rec.unit_selling_price Is Not Null or
893 l_line_rec.unit_list_price Is Not Null
894 ) --AND NOT (p_control_rec.p_write_to_db)
895 THEN
896 l_line_rec.unit_selling_price := NULL;
897 l_line_rec.unit_selling_price_per_pqty := NULL;
898 l_line_rec.unit_list_price := NULL;
899 l_line_rec.unit_list_price_per_pqty := NULL;
900 END IF;
901
902
903 Elsif wrong_line.pricing_status_code = QP_PREQ_GRP.G_STS_LHS_NOT_FOUND Then
904 IF l_debug_level > 0 THEN
905 oe_debug_pub.add( 'PRICE LIST NOT FOUND' ) ;
906 END IF;
907 FND_MESSAGE.SET_NAME('ONT','ONT_NO_PRICE_LIST_FOUND');
908 FND_MESSAGE.SET_TOKEN('ITEM',nvl(l_line_rec.Ordered_Item,l_line_rec.inventory_item_id));
909 FND_MESSAGE.SET_TOKEN('UOM',l_line_rec.Order_Quantity_uom);
910 IF OE_CODE_CONTROL.Get_Code_Release_Level >= '110509' THEN
911 if l_line_rec.shipped_quantity is not null and l_line_rec.shipped_quantity <> FND_API.G_MISS_NUM then
912 vmsg := FND_MESSAGE.GET;
913 else
914 OE_MSG_PUB.Add;
915 end if;
916 else
917 OE_MSG_PUB.Add;
918 end if;
919 Elsif wrong_line.pricing_status_code = QP_PREQ_GRP.G_STATUS_FORMULA_ERROR then
920 IF l_debug_level > 0 THEN
921 oe_debug_pub.add( 'ERROR IN FORMULA PROCESSING' ) ;
922 END IF;
923 FND_MESSAGE.SET_NAME('ONT','ONT_PRC_ERROR_IN_FORMULA');
924 FND_MESSAGE.SET_TOKEN('ERR_TEXT',wrong_line.status_text);
925 IF OE_CODE_CONTROL.Get_Code_Release_Level >= '110509' THEN
926 if l_line_rec.shipped_quantity is not null and l_line_rec.shipped_quantity <> FND_API.G_MISS_NUM then
927 vmsg := FND_MESSAGE.GET;
928 else
929 OE_MSG_PUB.Add;
930 end if;
931 else
932 OE_MSG_PUB.Add;
933 end if;
934 Elsif wrong_line.pricing_status_code in
935 ( QP_PREQ_GRP.G_STATUS_OTHER_ERRORS , FND_API.G_RET_STS_UNEXP_ERROR,
936 FND_API.G_RET_STS_ERROR)
937 then
938 IF l_debug_level > 0 THEN
939 oe_debug_pub.add( 'OTHER ERRORS PROCESSING' ) ;
940 END IF;
941 FND_MESSAGE.SET_NAME('ONT','ONT_PRICING_ERROR');
942 FND_MESSAGE.SET_TOKEN('ERR_TEXT',wrong_line.status_text);
943 IF OE_CODE_CONTROL.Get_Code_Release_Level >= '110509' THEN
944 if l_line_rec.shipped_quantity is not null and l_line_rec.shipped_quantity <> FND_API.G_MISS_NUM then
945 vmsg := FND_MESSAGE.GET;
946 else
947 OE_MSG_PUB.Add;
948 end if;
949 else
950 OE_MSG_PUB.Add;
951 end if;
952 Elsif wrong_line.pricing_status_code = QP_PREQ_GRP.G_STATUS_INVALID_UOM then
953 IF l_debug_level > 0 THEN
954 oe_debug_pub.add( 'INVALID UOM' ) ;
955 END IF;
956 FND_MESSAGE.SET_NAME('ONT','ONT_PRC_INVALID_UOM');
957 FND_MESSAGE.SET_TOKEN('ITEM',nvl(l_line_rec.Ordered_Item,l_line_rec.inventory_item_id));
958 FND_MESSAGE.SET_TOKEN('UOM',l_line_rec.Order_Quantity_uom);
959 IF OE_CODE_CONTROL.Get_Code_Release_Level >= '110509' THEN
960 if l_line_rec.shipped_quantity is not null and l_line_rec.shipped_quantity <> FND_API.G_MISS_NUM then
961 vmsg := FND_MESSAGE.GET;
962 else
963 OE_MSG_PUB.Add;
964 end if;
965 else
966 OE_MSG_PUB.Add;
967 end if;
968 Elsif wrong_line.pricing_status_code = QP_PREQ_GRP.G_STATUS_DUP_PRICE_LIST then
969 IF l_debug_level > 0 THEN
970 oe_debug_pub.add( 'DUPLICATE PRICE LIST' ) ;
971 END IF;
972 FND_MESSAGE.SET_NAME('ONT','ONT_PRC_DUPLICATE_PRICE_LIST');
973
974 Begin
975 Select name into l_price_list
976 from qp_list_headers_vl a,qp_list_lines b where
977 b.list_line_id = to_number(substr(wrong_line.status_text,1,
978 instr(wrong_line.status_text,',')-1))
979 and a.list_header_id=b.list_header_id
980 ;
981 Exception When No_data_found then
982 l_price_list := to_number(substr(wrong_line.status_text,1,
983 instr(wrong_line.status_text,',')-1));
984 When invalid_number then
985 l_price_list := substr(wrong_line.status_text,1,
986 instr(wrong_line.status_text,',')-1);
987
988 End;
989
990 FND_MESSAGE.SET_TOKEN('PRICE_LIST1',
991 '( '||l_line_rec.Ordered_Item||' ) '||l_price_list);
992 Begin
993 Select name into l_price_list
994 from qp_list_headers_vl a,qp_list_lines b where
995 b.list_line_id =
996 to_number(substr(wrong_line.status_text,
997 instr(wrong_line.status_text,',')+1))
998 and a.list_header_id=b.list_header_id ;
999 Exception When No_data_found then
1000 l_price_list := to_number(substr(wrong_line.status_text,
1001 instr(wrong_line.status_text,',')+1));
1002 When invalid_number then
1003 l_price_list := substr(wrong_line.status_text,
1004 instr(wrong_line.status_text,',')+1);
1005 End;
1006 FND_MESSAGE.SET_TOKEN('PRICE_LIST2',l_price_list);
1007 IF OE_CODE_CONTROL.Get_Code_Release_Level >= '110509' THEN
1008 if l_line_rec.shipped_quantity is not null and l_line_rec.shipped_quantity <> FND_API.G_MISS_NUM then
1009 vmsg := FND_MESSAGE.GET;
1010 else
1011 OE_MSG_PUB.Add;
1012 end if;
1013 else
1014 OE_MSG_PUB.Add;
1015 end if;
1016 Elsif wrong_line.pricing_status_code = QP_PREQ_GRP.G_STATUS_INVALID_UOM_CONV then
1017 IF l_debug_level > 0 THEN
1018 oe_debug_pub.add( 'INVALID UOM CONVERSION' ) ;
1019 END IF;
1020 FND_MESSAGE.SET_NAME('ONT','ONT_PRC_INVALID_UOM_CONVERSION');
1021 FND_MESSAGE.SET_TOKEN('UOM_TEXT','( '||l_line_rec.Ordered_Item||' ) '||
1022 wrong_line.status_text);
1023 IF OE_CODE_CONTROL.Get_Code_Release_Level >= '110509' THEN
1024 if l_line_rec.shipped_quantity is not null and l_line_rec.shipped_quantity <> FND_API.G_MISS_NUM then
1025 vmsg := FND_MESSAGE.GET;
1026 else
1027 OE_MSG_PUB.Add;
1028 end if;
1029 else
1030 OE_MSG_PUB.Add;
1031 end if;
1032 Elsif wrong_line.pricing_status_code = QP_PREQ_GRP.G_STATUS_INVALID_INCOMP then
1033 IF l_debug_level > 0 THEN
1034 oe_debug_pub.add( 'UNABLE TO RESOLVE INCOMPATIBILITY' ) ;
1035 END IF;
1036 FND_MESSAGE.SET_NAME('ONT','ONT_PRC_INVALID_INCOMP');
1037 FND_MESSAGE.SET_TOKEN('ERR_TEXT','( '||
1038 l_line_rec.Ordered_Item||' ) '||wrong_line.status_text);
1039 IF OE_CODE_CONTROL.Get_Code_Release_Level >= '110509' THEN
1040 if l_line_rec.shipped_quantity is not null and l_line_rec.shipped_quantity <> FND_API.G_MISS_NUM then
1041 vmsg := FND_MESSAGE.GET;
1042 else
1043 OE_MSG_PUB.Add;
1044 end if;
1045 else
1046 OE_MSG_PUB.Add;
1047 end if;
1048 Elsif wrong_line.pricing_status_code = QP_PREQ_GRP.G_STATUS_BEST_PRICE_EVAL_ERROR then
1049 IF l_debug_level > 0 THEN
1050 oe_debug_pub.add( 'ERROR WHILE EVALUATING THE BEST PRICE' ) ;
1051 END IF;
1052 FND_MESSAGE.SET_NAME('ONT','ONT_PRC_BEST_PRICE_ERROR');
1053 FND_MESSAGE.SET_TOKEN('ITEM',nvl(l_line_rec.Ordered_Item,l_line_rec.inventory_item_id));
1054 FND_MESSAGE.SET_TOKEN('ERR_TEXT',wrong_line.status_text);
1055 IF OE_CODE_CONTROL.Get_Code_Release_Level >= '110509' THEN
1056 if l_line_rec.shipped_quantity is not null and l_line_rec.shipped_quantity <> FND_API.G_MISS_NUM then
1057 vmsg := FND_MESSAGE.GET;
1058 else
1059 OE_MSG_PUB.Add;
1060 end if;
1061 else
1062 OE_MSG_PUB.Add;
1063 end if;
1064 End if; /* wrong pricing status code */
1065
1066 --RAISE FND_API.G_EXC_ERROR;
1067 --btea begin if do not write to db, we still need to
1068 --return line and status code to the caller
1069 -- If Not p_control_rec.p_write_to_db Then
1070 l_line_rec.Header_id := p_header_rec.Header_id;
1071 l_line_rec.line_id := wrong_line.line_id;
1072 l_line_rec.unit_selling_price_per_pqty
1073 := wrong_line.adjusted_unit_price ;
1074 l_line_rec.unit_list_price_per_pqty
1075 := wrong_line.unit_price ;
1076 l_line_rec.pricing_quantity
1077 := wrong_line.priced_quantity ;
1078 l_line_rec.pricing_quantity_uom
1079 := wrong_line.priced_uom_code ;
1080 --use industry_attribute30 as the place holder to hold error status
1081 --since the line_rec doesn't have the place holder to hold error status
1082 l_line_rec.industry_attribute30
1083 := wrong_line.pricing_status_code;
1084 IF l_debug_level > 0 THEN
1085 oe_debug_pub.add( 'J IS '||J ) ;
1086 END IF;
1087 if (j<>0) THEN
1088 px_line_tbl(j) := l_line_rec;
1089 END IF;
1090
1091 IF l_debug_level > 0 THEN
1092 oe_debug_pub.add( 'PASSING BACK PRICE'||L_LINE_REC.UNIT_LIST_PRICE||' '||L_LINE_REC.UNIT_SELLING_PRICE ) ;
1093 END IF;
1094 IF l_debug_level > 0 THEN
1095 oe_debug_pub.add( 'LINE'||L_LINE_REC.HEADER_ID||'+'||L_LINE_REC.LINE_ID ) ;
1096 END IF;
1097 -- End If;
1098 --btea end
1099
1100 elsif
1101 wrong_line.line_Type_code ='LINE' and
1102 wrong_line.pricing_status_code = QP_PREQ_GRP.G_STATUS_OTHER_ERRORS
1103 Then
1104
1105 FND_MESSAGE.SET_NAME('ONT','OE_PRICING_ERROR');
1106 FND_MESSAGE.SET_TOKEN('ERR_TEXT','( '
1107 ||l_line_rec.Ordered_Item||' ) '||wrong_line.status_text);
1108 OE_MSG_PUB.Add;
1109 elsif wrong_line.line_type_code='LINE' and
1110 (wrong_line.unit_price <0 or wrong_line.adjusted_unit_price<0)
1111 Then
1112
1113 IF l_debug_level > 0 THEN
1114 oe_debug_pub.add( 'NEGATIVE LIST PRICE '||WRONG_LINE.UNIT_PRICE ||'OR SELLING PRICE '||WRONG_LINE.ADJUSTED_UNIT_PRICE ) ;
1115 END IF;
1116 FND_MESSAGE.SET_NAME('ONT','ONT_NEGATIVE_PRICE');
1117 FND_MESSAGE.SET_TOKEN('ITEM',nvl(l_line_rec.Ordered_Item,l_line_rec.inventory_item_id));
1118 FND_MESSAGE.SET_TOKEN('LIST_PRICE',wrong_line.unit_price);
1119 FND_MESSAGE.SET_TOKEN('SELLING_PRICE',wrong_line.Adjusted_unit_price);
1120 OE_MSG_PUB.Add;
1121 IF l_debug_level > 0 THEN
1122 oe_debug_pub.add( 'BEFORE SHOWING NEGATIVE MODIFIERS MESSAGE' ) ;
1123 END IF;
1124 FND_MESSAGE.SET_NAME('ONT','ONT_NEGATIVE_MODIFIERS');
1125 --FND_MESSAGE.SET_TOKEN('LIST_LINE_NO',get_list_lines(wrong_line.line_id));
1126 OE_MSG_PUB.Add;
1127 IF l_debug_level > 0 THEN
1128 -- oe_debug_pub.add( 'MODIFIERS:'||GET_LIST_LINES ( WRONG_LINE.LINE_ID ) ) ;
1129 NULL;
1130 END IF;
1131 RAISE FND_API.G_EXC_ERROR;
1132
1133 end if;
1134
1135 end loop; /* wrong_lines cursor */
1136
1137 For book_line in wrong_book_lines loop
1138
1139 If book_line.adjusted_unit_price IS NULL Then
1140 FND_MESSAGE.SET_NAME('ONT','OE_BOOK_REQD_LINE_ATTRIBUTE');
1141 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
1142 OE_Order_UTIL.Get_Attribute_Name('UNIT_SELLING_PRICE'));
1143 OE_MSG_PUB.ADD;
1144 End If;
1145
1146 If book_line.unit_price IS NULL
1147 Then
1148 FND_MESSAGE.SET_NAME('ONT','OE_BOOK_REQD_LINE_ATTRIBUTE');
1149 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
1150 OE_Order_UTIL.Get_Attribute_Name('UNIT_LIST_PRICE'));
1151 IF l_debug_level > 0 THEN
1152 oe_debug_pub.add( ' ERROR: UNIT LIST PRICE CAN NOT BE NULL' ) ;
1153 END IF;
1154 IF OE_CODE_CONTROL.Get_Code_Release_Level >= '110509' THEN
1155 if book_line.shipped_quantity is not null or book_line.shipped_quantity <> FND_API.G_MISS_NUM then
1156 vmsg := FND_MESSAGE.GET;
1157 -- pricing_errors_hold(book_line.header_id,book_line.line_id,vmsg);
1158 else
1159 OE_MSG_PUB.ADD;
1160 l_temp_line_rec.line_id := book_line.line_id;
1161 l_temp_line_rec.ordered_quantity := book_line.line_quantity;
1162 l_temp_line_rec.pricing_quantity := book_line.priced_quantity;
1163 --Oe_Order_Adj_Pvt.Reset_Fields(l_temp_line_rec);
1164 RAISE FND_API.G_EXC_ERROR;
1165 end if;
1166 else
1167 OE_MSG_PUB.ADD;
1168 end if;
1169 End If;
1170
1171 If book_line.price_list_header_id IS NULL Then
1172 FND_MESSAGE.SET_NAME('ONT','OE_BOOK_REQD_LINE_ATTRUIBUTE');
1173 FND_MESSAGE.SET_TOKEN('ATTRIBUTE',OE_ORDER_UTIL.Get_Attribute_Name('PRICE_LIST_ID'));
1174 OE_MSG_PUB.ADD;
1175 IF l_debug_level > 0 THEN
1176 oe_debug_pub.add( ' ERROR: PRICE LIST ID CAN NOT BE NULL' ) ;
1177 END IF;
1178 RAISE FND_API.G_EXC_ERROR;
1179 END IF;
1180
1181 End loop; /* wrong booked lines */
1182 IF l_debug_level > 0 THEN
1183 oe_debug_pub.add( 'EXITING REPORT_ENGINE_ERRORS' ) ;
1184 END IF;
1185 End Report_Engine_Errors;
1186
1187 Procedure Calculate_Adjustments(
1188 px_Header_Rec IN OUT NOCOPY OE_ORDER_PUB.Header_Rec_Type
1189 ,px_Line_Tbl IN OUT NOCOPY OE_ORDER_PUB.Line_Tbl_Type
1190 ,px_Line_Adj_Tbl IN OUT NOCOPY OE_ORDER_PUB.Line_Adj_Tbl_Type
1191 ,p_Line_Price_Att_Tbl IN Price_Att_Tbl_Type
1192 ,p_Action_Code IN VARCHAR2 DEFAULT 'NONE'
1193 ,p_Pricing_Events IN VARCHAR2
1194 ,p_Simulation_Flag IN VARCHAR2
1195 ,p_Get_Freight_Flag IN VARCHAR2
1196 ,x_Return_Status OUT NOCOPY VARCHAR2 )
1197 IS
1198 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1199 l_order_status_rec QP_UTIL_PUB.ORDER_LINES_STATUS_REC_TYPE;
1200 BEGIN
1201
1202
1203 Reset_All_Tbls;
1204
1205 -- call QP API to determine whether or not to
1206 -- call lines to pricing engine
1207 QP_UTIL_PUB.Get_Order_Lines_Status(p_pricing_events,l_order_status_rec);
1208
1209 If l_order_status_rec.ALL_LINES_FLAG = 'Y' OR l_order_status_rec.CHANGED_LINES_FLAG = 'Y'
1210 OR l_order_status_rec.SUMMARY_LINE_FLAG = 'Y'
1211 Then
1212 Insert_Lines( px_Header_Rec
1213 , px_Line_Tbl
1214 , l_order_status_rec
1215 , p_Pricing_Events);
1216
1217 -- insert manual adjustments
1218 Insert_Manual_Adj(px_Line_Adj_Tbl);
1219
1220 Populate_Temp_Table;
1221 End if;
1222
1223 END Calculate_Adjustments;
1224
1225 Procedure Process_Adjustments(px_line_adj_tbl IN OUT NOCOPY oe_order_pub.line_adj_tbl_type
1226 )
1227 Is
1228 i PLS_INTEGER;
1229 Cursor adj_cur IS
1230 SELECT /*+ ORDERED USE_NL(ldets lines qh) */
1231 oe_price_adjustments_s.nextval price_adjustment_id
1232 , oe_order_pub.g_hdr.header_id header_id
1233 , ldets.automatic_flag automatic_flag
1234 , decode(ldets.modifier_level_code,'ORDER',NULL,lines.line_id) line_id
1235 , ldets.LIST_HEADER_ID list_header_id
1236 , ldets.LIST_LINE_ID list_line_id
1237 , ldets.LIST_LINE_TYPE_CODE list_line_type_code
1238 , NULL MODIFIER_MECHANISM_TYPE_CODE
1239 , decode(ldets.list_line_type_code, 'TSN', ldets.substitution_attribute, 'IUE', to_char(ldets.inventory_item_id), NULL) modified_from
1240 , decode(ldets.list_line_type_code, 'TSN', ldets.substitution_value_to, 'IUE', to_char(ldets.related_item_id), NULL) modified_to
1241 , ldets.UPDATED_FLAG
1242 , ldets.override_flag update_allowed
1243 , ldets.APPLIED_FLAG applied_flag
1244 , NULL CHANGE_REASON_CODE
1245 , NULL CHANGE_REASON_TEXT
1246 , ldets.order_qty_operand operand
1247 , ldets.operand_calculation_code arithmetic_operator
1248 , nvl(ldets.order_qty_adj_amt, 99) adjusted_amount
1249 , ldets.pricing_phase_id PRICING_PHASE_ID
1250 , ldets.CHARGE_TYPE_CODE charge_type_code
1251 , ldets.CHARGE_SUBTYPE_CODE charge_subtype_code
1252 , ldets.list_line_no list_line_no
1253 , qh.source_system_code source_system_code
1254 , ldets.benefit_qty benefit_qty
1255 , ldets.benefit_uom_code benefit_uom_code
1256 , ldets.expiration_date expiration_date
1257 , ldets.rebate_transaction_type_code rebate_transaction_Type_code
1258 , ldets.accrual_flag accrual_flag
1259 , ldets.line_quantity range_break_quantity
1260 , ldets.accrual_conversion_rate accrual_conversion_rate
1261 , ldets.pricing_group_sequence pricing_group_sequence
1262 , ldets.modifier_level_code modifier_level_code
1263 , ldets.price_break_type_code price_break_type_code
1264 , ldets.substitution_attribute substitution_attribute
1265 , ldets.proration_type_code proration_type_code
1266 , ldets.include_on_returns_flag include_on_returns_flag
1267 , ldets.OPERAND_value operand_per_pqty
1268 , ldets.adjustment_amount adjusted_amount_per_pqty
1269 FROM
1270 QP_LDETS_v ldets
1271 , QP_PREQ_LINES_TMP lines
1272 , QP_LIST_HEADERS_B QH
1273 WHERE
1274 ldets.list_header_id=qh.list_header_id
1275 AND ldets.process_code in (QP_PREQ_GRP.G_STATUS_NEW, QP_PREQ_GRP.G_STATUS_UPDATED, QP_PREQ_GRP.G_STATUS_UNCHANGED)
1276 AND lines.pricing_status_code in (QP_PREQ_GRP.G_STATUS_NEW,QP_PREQ_GRP.G_STATUS_UPDATED,QP_PREQ_GRP.G_STATUS_GSA_VIOLATION)
1277 AND lines.process_status <> 'NOT_VALID'
1278 AND ldets.line_index=lines.line_index
1279 --AND ldets.pricing_status_code = QP_PREQ_GRP.G_STATUS_NEW
1280 --AND nvl(ldets.automatic_flag,'N') = 'Y'
1281 -- or
1282 -- (ldets.list_line_type_code = 'FREIGHT_CHARGE'))
1283 AND ldets.created_from_list_type_code not in ('PRL','AGR')
1284 AND ldets.list_line_type_code<>'PLL'
1285 -- AND (l_booked_flag = 'N' or ldets.list_line_type_code<>'IUE')
1286 ;
1287 l_adj_tbl OE_ORDER_PUB.LINE_ADJ_TBL_TYPE;
1288 BEGIN
1289 -- Populating QP line details table
1290
1291 -- Populating pricing attributes and ask for promotion/coupons
1292
1293 -- i := px_line_adj_Tbl.first;
1294 --while i is not null loop
1295 i := 0;
1296 For adj in adj_cur loop
1297 i := i + 1;
1298 l_adj_tbl(i).price_adjustment_id := adj.price_adjustment_id;
1299 l_adj_tbl(i).HEADER_ID := adj.header_id;
1300 l_adj_tbl(i).AUTOMATIC_FLAG := adj.automatic_flag;
1301 l_adj_tbl(i).LINE_ID := adj.line_id;
1302 l_adj_tbl(i).LIST_HEADER_ID := adj.list_header_id;
1303 l_adj_tbl(i).LIST_LINE_ID := adj.list_line_id;
1304 l_adj_tbl(i).LIST_LINE_TYPE_CODE := adj.list_line_type_code;
1305 l_adj_tbl(i).MODIFIER_MECHANISM_TYPE_CODE := adj.modifier_mechanism_type_code;
1306 l_adj_tbl(i).MODIFIED_FROM := adj.modified_from;
1307 l_adj_tbl(i).MODIFIED_TO := adj.modified_to;
1308 l_adj_tbl(i).UPDATED_FLAG := adj.updated_Flag;
1309 l_adj_tbl(i).UPDATE_ALLOWED := adj.update_allowed;
1310 l_adj_tbl(i).APPLIED_FLAG := adj.applied_flag;
1311 l_adj_tbl(i).CHANGE_REASON_CODE := adj.change_reason_code;
1312 l_adj_tbl(i).CHANGE_REASON_TEXT := adj.change_reason_text;
1313 l_adj_tbl(i).operand := adj.operand;
1314 l_adj_tbl(i).Arithmetic_operator := adj.arithmetic_operator;
1315 l_adj_tbl(i).ADJUSTED_AMOUNT := adj.adjusted_amount;
1316 l_adj_tbl(i).PRICING_PHASE_ID := adj.pricing_phase_id;
1317 l_adj_tbl(i).CHARGE_TYPE_CODE := adj.charge_type_code;
1318 l_adj_tbl(i).CHARGE_SUBTYPE_CODE := adj.charge_subtype_code;
1319 l_adj_tbl(i).list_line_no := adj.list_line_no;
1320 l_adj_tbl(i).source_system_code := adj.source_system_code;
1321 l_adj_tbl(i).benefit_qty := adj.benefit_qty;
1322 l_adj_tbl(i).benefit_uom_code := adj.benefit_uom_code;
1323 -- l_adj_tbl(i).print_on_invoice_flag :=adj.print_on_invoice_flag;
1324 l_adj_tbl(i).expiration_date := adj.expiration_date;
1325 -- l_adj_tbl(i).rebate_transaction_type_code := adj.rebate_transaction_type_code;
1326 -- l_adj_tbl(i).rebate_transaction_reference := adj.rebate_transaction_reference;
1327 -- l_adj_tbl(i).rebate_payment_system_code := adj.rebate_payment_system_code;
1328 -- l_adj_tbl(i).redeemed_date
1329 -- l_adj_tbl(i).redeemed_flag
1330 l_adj_tbl(i).accrual_flag := adj.accrual_flag;
1331 l_adj_tbl(i).range_break_quantity := adj.range_break_quantity;
1332 l_adj_tbl(i).accrual_conversion_rate := adj.accrual_conversion_rate;
1333 l_adj_tbl(i).pricing_group_sequence :=adj.pricing_group_sequence;
1334 l_adj_tbl(i).modifier_level_code := adj.modifier_level_code;
1335 l_adj_tbl(i).price_break_type_code := adj.price_break_type_code;
1336 -- l_adj_tbl(i).substitution_attribute
1337 -- l_adj_tbl(i).proration_type_code
1338 -- ,l_adj_tbl(i).CREDIT_OR_CHARGE_FLAG
1339 -- ,l_adj_tbl(i).INCLUDE_ON_RETURNS_FLAG
1340 l_adj_tbl(i).OPERAND_PER_PQTY := adj.operand_per_pqty;
1341 l_adj_tbl(i).ADJUSTED_AMOUNT_PER_PQTY := adj.adjusted_amount_per_pqty;
1342 -- ,l_adj_tbl(i).LOCK_CONTROL*/
1343 IF (l_adj_tbl(i).list_header_id IS NOT NULL) THEN
1344 SELECT name
1345 INTO l_adj_tbl(i).attribute1
1346 from qp_list_headers_vl
1347 where list_header_id = l_adj_tbl(i).list_header_id;
1348 END IF;
1349
1350 IF (l_adj_tbl(i).arithmetic_operator IS NOT NULL) THEN
1351 SELECT meaning
1352 into l_adj_tbl(i).attribute2
1353 from qp_lookups
1354 where lookup_code = l_adj_tbl(i).arithmetic_operator
1355 and lookup_type = 'ARITHMETIC_OPERATOR';
1356 END IF;
1357
1358 IF (l_adj_tbl(i).list_line_type_code IS NOT NULL) THEN
1359 SELECT meaning
1360 into l_adj_tbl(i).attribute3
1361 from qp_lookups
1362 where lookup_code = l_adj_tbl(i).list_line_type_code
1363 and lookup_type = 'LIST_LINE_TYPE_CODE';
1364 END IF;
1365
1366 IF (l_adj_tbl(i).pricing_phase_id IS NOT NULL) THEN
1367 SELECT name
1368 into l_adj_tbl(i).attribute4
1369 from qp_pricing_phases
1370 where pricing_phase_id = l_adj_tbl(i).pricing_phase_id;
1371 END IF;
1372
1373 IF (l_adj_tbl(i).automatic_flag IS NOT NULL) THEN
1374 SELECT meaning
1375 into l_adj_tbl(i).attribute5
1376 from qp_lookups
1377 where lookup_code = l_adj_tbl(i).automatic_flag
1378 and lookup_type = 'YES_NO';
1379 END IF;
1380
1381 -- i := px_line_adj_tbl.next(i);
1382 end loop;
1383 px_line_adj_tbl := l_adj_tbl;
1384
1385 /* Exception
1386 WHEN FND_API.G_EXC_ERROR THEN
1387
1388 --reseting global structure after engine call
1389 OE_Order_PUB.G_LINE := NULL;
1390 OE_Order_PUB.G_HDR := NULL;
1391 x_return_status := FND_API.G_RET_STS_ERROR;
1392
1393 IF l_debug_level > 0 THEN
1394 oe_debug_pub.add( 'EXITING PRICE_LINE WITH EXC ERROR' , 1 ) ;
1395 END IF;
1396 RAISE FND_API.G_EXC_ERROR;
1397 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1398
1399 --reseting global structure after engine call
1400 OE_Order_PUB.G_LINE := NULL;
1401 OE_Order_PUB.G_HDR := NULL;
1402 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1403 IF l_debug_level > 0 THEN
1404 oe_debug_pub.add( 'EXITING PRICE_LINE WITH UNEXPECTED ERROR' , 1 ) ;
1405 END IF;
1406 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1407 WHEN OTHERS THEN
1408
1409 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1410 --reseting global structure after engine call
1411 OE_Order_PUB.G_LINE := NULL;
1412 OE_Order_PUB.G_HDR := NULL;
1413 IF l_debug_level > 0 THEN
1414 oe_debug_pub.add( 'ERROR IN OE_ORDER_PRICE_PVT.PRICE_LINE' , 1 ) ;
1415 END IF;
1416 IF l_debug_level > 0 THEN
1417 oe_debug_pub.add( SQLERRM , 1 ) ;
1418 END IF;
1419
1420 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1421 THEN
1422 OE_MSG_PUB.Add_Exc_Msg
1423 ( G_PKG_NAME
1424 , 'Price_line'
1425 );
1426 END IF;
1427
1428 IF l_debug_level > 0 THEN
1429 oe_debug_pub.add( 'EXITING OE_ORDER_PRICE_PVT.PRICE_LINE' , 1 ) ;
1430 END IF;
1431 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1432
1433 IF l_debug_level > 0 THEN
1434 oe_debug_pub.add( 'EXITING OE_PRICE_ORDER_PVT.PRICE_ORDER' , 1 ) ;
1435 END IF;
1436 */
1437 END Process_Adjustments;
1438
1439 Procedure Call_Pricing_Engine(
1440 p_Pricing_Events IN VARCHAR2
1441 ,x_return_status OUT NOCOPY VARCHAR2
1442
1443 )
1444 IS
1445 l_return_status_text varchar(2000);
1446 l_control_rec QP_PREQ_GRP.control_record_type;
1447 l_set_of_books Oe_Order_Cache.Set_Of_Books_Rec_Type;
1448 --
1449 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1450 --
1451 BEGIN
1452 IF l_debug_level > 0 THEN
1453 oe_debug_pub.add( 'BEFORE QP_PREQ_PUB.PRICE_REQUEST' , 1 ) ;
1454 END IF;
1455
1456 l_control_rec.calculate_flag := 'Y';
1457 l_control_rec.simulation_flag := 'Y';
1458 l_control_rec.pricing_event := p_Pricing_Events;
1459 l_control_rec.temp_table_insert_flag := 'N';
1460 l_control_rec.check_cust_view_flag := 'N';
1461 l_control_rec.request_type_code := 'ONT';
1462 --now pricing take care of all the roundings.
1463 l_control_rec.rounding_flag := 'Q';
1464 --For multi_currency price list
1465 l_control_rec.use_multi_currency:='Y';
1466 l_control_rec.USER_CONVERSION_RATE:= OE_ORDER_PUB.G_HDR.CONVERSION_RATE;
1467 l_control_rec.USER_CONVERSION_TYPE:= OE_ORDER_PUB.G_HDR.CONVERSION_TYPE_CODE;
1468 l_set_of_books := Oe_Order_Cache.Load_Set_Of_Books;
1469 l_control_rec.FUNCTION_CURRENCY := l_set_of_books.currency_code;
1470
1471 -- added for freight rating.
1472 l_control_rec.get_freight_flag := 'N';
1473 IF l_debug_level > 0 THEN
1474 oe_debug_pub.add('get_freight_flag before calling pricing engine is: '||l_control_rec.get_freight_flag, 3 ) ;
1475 END IF;
1476
1477 -- IF (G_PASS_ALL_LINES in ('N', 'R')) THEN
1478 -- l_control_rec.full_pricing_call := 'N';
1479 -- ELSE
1480 l_control_rec.full_pricing_call := 'Y';
1481 -- END IF;
1482 IF OE_CODE_CONTROL.Get_Code_Release_Level >= '110509' THEN
1483 l_control_rec.manual_adjustments_call_flag := 'N';
1484 END IF;
1485
1486 G_STMT_NO := 'QP_PRICE_REQUEST_GRP';
1487 QP_PREQ_PUB.PRICE_REQUEST
1488 (p_control_rec => l_control_rec
1489 --,p_line_tbl => l_Req_line_tbl
1490 --,p_qual_tbl => l_Req_qual_tbl
1491 --,p_line_attr_tbl => l_Req_line_attr_tbl
1492 --,p_line_detail_tbl =>l_req_line_detail_tbl
1493 --,p_line_detail_qual_tbl =>l_req_line_detail_qual_tbl
1494 --,p_line_detail_attr_tbl =>l_req_line_detail_attr_tbl
1495 --,p_related_lines_tbl =>l_req_related_lines_tbl
1496 --,x_line_tbl =>x_req_line_tbl
1497 --,x_line_qual =>x_Req_qual_tbl
1498 --,x_line_attr_tbl =>x_Req_line_attr_tbl
1499 --,x_line_detail_tbl =>x_req_line_detail_tbl
1500 --,x_line_detail_qual_tbl =>x_req_line_detail_qual_tbl
1501 --,x_line_detail_attr_tbl =>x_req_line_detail_attr_tbl
1502 --,x_related_lines_tbl =>x_req_related_lines_tbl
1503 ,x_return_status =>x_return_status
1504 ,x_return_status_Text =>l_return_status_Text
1505 );
1506
1507 IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1508 FND_MESSAGE.SET_NAME('ONT','ONT_PRICING_ERROR');
1509 FND_MESSAGE.SET_TOKEN('ERR_TEXT',l_return_status_text);
1510 OE_MSG_PUB.Add;
1511 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1512 ELSIF x_return_status = FND_API.G_RET_STS_ERROR THEN
1513 FND_MESSAGE.SET_NAME('ONT','ONT_PRICING_ERROR');
1514 FND_MESSAGE.SET_TOKEN('ERR_TEXT',l_return_status_text);
1515 OE_MSG_PUB.Add;
1516 RAISE FND_API.G_EXC_ERROR;
1517 END IF;
1518
1519 END Call_Pricing_Engine;
1520
1521 Procedure Update_Lines(px_Line_Tbl IN OUT NOCOPY OE_ORDER_PUB.Line_Tbl_Type)
1522 IS
1523 l_line_index pls_integer;
1524 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1525 l_line_rec OE_ORDER_PUB.LINE_REC_TYPE;
1526 BEGIN
1527 l_line_index := px_line_tbl.first;
1528 while l_line_index is not null loop
1529 l_line_rec := px_line_tbl(l_line_index);
1530 IF l_debug_level > 0 THEN
1531 oe_debug_pub.add( 'LINE ID'||L_LINE_REC.LINE_ID ) ;
1532 END IF;
1533
1534 BEGIN
1535
1536 select /*+ INDEX(lines qp_preq_lines_tmp_n1) */
1537 nvl(lines.order_uom_selling_price, lines.ADJUSTED_UNIT_PRICE * lines.priced_quantity /l_line_rec.ordered_quantity)
1538 , nvl(lines.line_unit_price, lines.UNIT_PRICE * lines.priced_quantity/l_line_rec.ordered_quantity)
1539 , lines.ADJUSTED_UNIT_PRICE
1540 , lines.UNIT_PRICE
1541 , decode(lines.priced_quantity,-99999,l_line_rec.ordered_quantity
1542 ,lines.priced_quantity)
1543 , decode(lines.priced_quantity,-99999,l_line_rec.order_quantity_uom
1544 ,lines.priced_uom_code)
1545 , decode(lines.price_list_header_id,-9999,NULL,lines.price_list_header_id) --Bug#2830609
1546 , nvl(lines.percent_price, NULL)
1547 , nvl(lines.parent_price, NULL)
1548 , decode(lines.parent_price, NULL, 0, 0, 0,
1549 lines.adjusted_unit_price/lines.parent_price)
1550 INTO
1551 l_line_rec.UNIT_SELLING_PRICE
1552 , l_line_rec.UNIT_LIST_PRICE
1553 , l_line_rec.UNIT_SELLING_PRICE_PER_PQTY
1554 , l_line_rec.UNIT_LIST_PRICE_PER_PQTY
1555 , l_line_rec.PRICING_QUANTITY
1556 , l_line_rec.PRICING_QUANTITY_UOM
1557 , l_line_rec.PRICE_LIST_ID
1558 , l_line_rec.UNIT_LIST_PERCENT
1559 , l_line_rec.UNIT_PERCENT_BASE_PRICE
1560 , l_line_rec.UNIT_SELLING_PERCENT
1561 from qp_preq_lines_tmp lines
1562 where lines.line_id=l_line_rec.line_id
1563 and lines.line_type_code='LINE'
1564 and l_line_rec.ordered_quantity <> 0
1565 and lines.process_status <> 'NOT_VALID'
1566 and lines.pricing_status_code in (QP_PREQ_GRP.G_STATUS_GSA_VIOLATION,
1567 QP_PREQ_GRP.G_STATUS_UPDATED)
1568 ;
1569 EXCEPTION
1570 WHEN OTHERS THEN
1571
1572 l_line_rec.pricing_attribute1 := SQLERRM;
1573 END;
1574
1575 px_line_tbl(l_line_index) := l_line_rec;
1576 l_line_index := px_line_tbl.next(l_line_index);
1577 END LOOP;
1578 END Update_Lines;
1579
1580 -- Price_Order is to simulate a OM pricing call to get the pricing information
1581 -- It assumes the caller will pass all the information of the order to the call
1582 -- For example,if your order has two lines and you only call with one line,
1583 -- the call will price as if there is only one line
1584 -- You can pass a line but not to reprice it by setting operation code to G_OPR_NONE
1585 -- You can pass a line but freeze its price by setting calculate price flag to 'N'
1586 -- This API assumes the following setting:
1587
1588 -- Request_Type_Code: 'ONT'
1589 -- Write_To_DB: FALSE
1590 -- Honor_Price_FLag: TRUE
1591 -- Calculate_flag: TRUE
1592 -- Simulation_Flag: TRUE
1593 -- Get_Freight_FLag: FALSE
1594 Procedure Price_Order(
1595 px_Header_Rec IN OUT NOCOPY OE_ORDER_PUB.Header_Rec_Type
1596 ,px_Line_Rec IN OUT NOCOPY OE_ORDER_PUB.Line_Rec_Type
1597 -- ,px_Line_Tbl IN OUT NOCOPY OE_ORDER_PUB.Line_Tbl_Type
1598 ,px_Line_Adj_Tbl IN OUT NOCOPY OE_ORDER_PUB.Line_Adj_Tbl_Type
1599 ,p_Line_Price_Att_Tbl IN Price_Att_Tbl_Type
1600 ,p_Action_Code IN VARCHAR2 DEFAULT 'NONE'
1601 ,p_Pricing_Events IN VARCHAR2
1602 ,p_Simulation_Flag IN VARCHAR2
1603 ,p_Get_Freight_Flag IN VARCHAR2
1604 ,x_Return_Status OUT NOCOPY VARCHAR2
1605 ) AS
1606 l_any_frozen_line BOOLEAN;
1607 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1608 l_header_adj_tbl OE_ORDER_PUB.Header_ADJ_Tbl_Type;
1609 l_header_price_att_tbl OE_PRICE_ORDER_PVT.price_att_tbl_type;
1610 l_Line_Tbl OE_ORDER_PUB.Line_Tbl_Type;
1611 i PLS_INTEGER;
1612 l_control_rec OE_ORDER_PRICE_PVT.Control_Rec_Type;
1613 BEGIN
1614
1615
1616 Preprocessing(px_Header_Rec
1617 , px_Line_Rec);
1618
1619 l_Line_Tbl(1) := px_Line_Rec;
1620 Calculate_Adjustments(px_Header_Rec
1621 , l_Line_Tbl
1622 , px_Line_Adj_Tbl
1623 , p_Line_Price_Att_Tbl
1624 , p_Action_Code
1625 , p_Pricing_Events
1626 , p_Simulation_Flag
1627 , p_Get_Freight_Flag
1628 , x_Return_Status);
1629
1630 Call_Pricing_Engine(p_Pricing_Events, x_Return_Status);
1631
1632 l_control_rec.p_write_to_db := FALSE;
1633 Report_Engine_Errors(x_return_status => x_Return_Status
1634 , px_line_tbl => l_line_tbl
1635 , p_header_rec => px_header_rec);
1636
1637 Update_Lines(l_Line_Tbl);
1638 Process_Adjustments(px_line_adj_tbl);
1639 px_line_rec := l_Line_Tbl(1);
1640 x_return_status := FND_API.G_RET_STS_SUCCESS;
1641
1642 if (px_line_rec.unit_list_price is null) THEN
1643 x_return_status := FND_API.G_RET_STS_ERROR;
1644 END IF;
1645
1646
1647 EXCEPTION
1648 WHEN OTHERS THEN
1649
1650 px_line_rec.unit_list_price := 15;
1651 px_line_rec.unit_selling_price := 10.5;
1652
1653 END Price_Order;
1654
1655 /* x_return_status := FND_API.G_RET_STS_SUCCESS;
1656
1657 l_price_control_rec.p_write_to_db := FALSE;
1658 l_price_control_rec.p_multiple_events := 'Y';
1659 l_price_control_rec.p_use_current_header := TRUE;
1660 l_price_control_Rec.p_simulation_flag := nvl(p_simulation_flag, 'Y');
1661
1662 l_line_tbl(1) := px_line_rec;
1663 amy_order_price_pvt.price_line
1664 (p_Header_id => NULL
1665 ,p_Line_id =>NULL
1666 ,px_line_Tbl =>l_line_tbl
1667 ,px_header_adj_tbl => l_header_adj_tbl
1668 ,px_line_adj_tbl => px_line_adj_tbl
1669 ,p_header_price_att_tbl => l_header_price_att_tbl
1670 ,p_line_price_att_tbl => p_line_price_att_tbl
1671 ,p_Control_Rec =>l_price_control_rec
1672 ,p_action_code =>'NONE'
1673 ,p_Pricing_Events =>p_pricing_events
1674 ,x_Return_Status =>x_return_status
1675 );
1676 px_line_rec := l_line_tbl(1);
1677
1678
1679 -- Populating QP request lines table
1680 oe_order_price_pvt.calculate_adjustments(
1681 x_return_status => x_return_status,
1682 p_line_Id => NULL,
1683 p_header_Id => NULL,
1684 p_pricing_events => p_pricing_events,
1685 p_Control_Rec => l_price_control_rec,
1686 p_action_code => p_action_code,
1687 x_any_frozen_line => l_any_frozen_line,
1688 px_line_Tbl => px_Line_Tbl,
1689 x_Header_Rec => lx_Header_Rec
1690 );
1691 */
1692
1693 end OE_PRICE_ORDER_PVT_OBSOLETE;