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