DBA Data[Home] [Help]

PACKAGE BODY: APPS.OE_LINE_ADJ_UTIL

Source


1 PACKAGE BODY OE_Line_Adj_Util AS
2 /* $Header: OEXULADB.pls 120.27.12020000.5 2013/02/13 10:13:14 nilegupt ship $ */
3 
4 --  Global constant holding the package name
5 
6 G_PKG_NAME                    CONSTANT VARCHAR2(30) := 'OE_Line_Adj_Util';
7 
8 
9 Type pbh_tbl_type             Is Table Of Number Index by Binary_Integer;
10 
11 Procedure Process_Cancelled_Lines(p_x_new_line_rec In Oe_Order_Pub.line_rec_type, p_ordered_quantity In Number);
12   --bug7491829 added p_ordered_quantity
13 
14 Procedure Log_Pricing_Requests (p_x_new_line_rec in out nocopy Oe_Order_Pub.Line_Rec_Type,
15                                 p_old_line_rec   in Oe_Order_Pub.Line_Rec_Type,
16                                 p_no_price_flag  Boolean Default False,
17                                 p_price_flag     Varchar2 Default 'Y');
18 
19 FUNCTION G_MISS_OE_AK_LINE_ADJ_REC
20 RETURN OE_AK_LINE_PRCADJS_V%ROWTYPE IS
21 l_rowtype_rec				OE_AK_LINE_PRCADJS_V%ROWTYPE;
22 BEGIN
23 
24     l_rowtype_rec.ATTRIBUTE1	:= FND_API.G_MISS_CHAR;
25     l_rowtype_rec.ATTRIBUTE10	:= FND_API.G_MISS_CHAR;
26     l_rowtype_rec.ATTRIBUTE11	:= FND_API.G_MISS_CHAR;
27     l_rowtype_rec.ATTRIBUTE12	:= FND_API.G_MISS_CHAR;
28     l_rowtype_rec.ATTRIBUTE13	:= FND_API.G_MISS_CHAR;
29     l_rowtype_rec.ATTRIBUTE14	:= FND_API.G_MISS_CHAR;
30     l_rowtype_rec.ATTRIBUTE15	:= FND_API.G_MISS_CHAR;
31     l_rowtype_rec.ATTRIBUTE2	:= FND_API.G_MISS_CHAR;
32     l_rowtype_rec.ATTRIBUTE3	:= FND_API.G_MISS_CHAR;
33     l_rowtype_rec.ATTRIBUTE4	:= FND_API.G_MISS_CHAR;
34     l_rowtype_rec.ATTRIBUTE5	:= FND_API.G_MISS_CHAR;
35     l_rowtype_rec.ATTRIBUTE6	:= FND_API.G_MISS_CHAR;
36     l_rowtype_rec.ATTRIBUTE7	:= FND_API.G_MISS_CHAR;
37     l_rowtype_rec.ATTRIBUTE8	:= FND_API.G_MISS_CHAR;
38     l_rowtype_rec.ATTRIBUTE9	:= FND_API.G_MISS_CHAR;
39     l_rowtype_rec.CONTEXT		:= FND_API.G_MISS_CHAR;
40     l_rowtype_rec.CREATED_BY	:= FND_API.G_MISS_NUM;
41     l_rowtype_rec.CREATION_DATE	:= FND_API.G_MISS_DATE;
42     l_rowtype_rec.DB_FLAG		:= FND_API.G_MISS_CHAR;
43     l_rowtype_rec.HEADER_ID	:= FND_API.G_MISS_NUM;
44     l_rowtype_rec.LAST_UPDATED_BY	:= FND_API.G_MISS_NUM;
45     l_rowtype_rec.LAST_UPDATE_DATE	:= FND_API.G_MISS_DATE;
46     l_rowtype_rec.LAST_UPDATE_LOGIN	:= FND_API.G_MISS_NUM;
47     l_rowtype_rec.LINE_ID	:= FND_API.G_MISS_NUM;
48     l_rowtype_rec.OPERATION	:= FND_API.G_MISS_CHAR;
49     l_rowtype_rec.LINE_INDEX	:= FND_API.G_MISS_NUM;
50     l_rowtype_rec.PERCENT	:= FND_API.G_MISS_NUM;
51     l_rowtype_rec.RETURN_STATUS	:= FND_API.G_MISS_CHAR;
52     l_rowtype_rec.AUTOMATIC_FLAG	:= FND_API.G_MISS_CHAR;
53     l_rowtype_rec.DISCOUNT_ID	:= FND_API.G_MISS_NUM;
54     l_rowtype_rec.DISCOUNT_LINE_ID	:= FND_API.G_MISS_NUM;
55     l_rowtype_rec.PRICE_ADJUSTMENT_ID	:= FND_API.G_MISS_NUM;
56     l_rowtype_rec.PROGRAM_APPLICATION_ID	:= FND_API.G_MISS_NUM;
57     l_rowtype_rec.PROGRAM_ID		:= FND_API.G_MISS_NUM;
58     l_rowtype_rec.PROGRAM_UPDATE_DATE	:= FND_API.G_MISS_DATE;
59     l_rowtype_rec.request_id		:= FND_API.G_MISS_NUM;
60 --    l_rowtype_rec.orig_sys_discount_ref	:= FND_API.G_MISS_CHAR;
61     l_rowtype_rec.list_header_id	:= FND_API.G_MISS_NUM;
62     l_rowtype_rec.list_line_id	:= FND_API.G_MISS_NUM;
63     l_rowtype_rec.list_line_type_code	:= FND_API.G_MISS_CHAR;
64     l_rowtype_rec.modifier_mechanism_type_code	:= FND_API.G_MISS_CHAR;
65     l_rowtype_rec.modified_from	:= FND_API.G_MISS_CHAR;
66     l_rowtype_rec.modified_to	:= FND_API.G_MISS_CHAR;
67     l_rowtype_rec.updated_flag	:= FND_API.G_MISS_CHAR;
68     l_rowtype_rec.update_allowed	:= FND_API.G_MISS_CHAR;
69     l_rowtype_rec.applied_flag	:= FND_API.G_MISS_CHAR;
70     l_rowtype_rec.change_reason_code	:= FND_API.G_MISS_CHAR;
71     l_rowtype_rec.change_reason_text	:= FND_API.G_MISS_CHAR;
72     l_rowtype_rec.operand	:= FND_API.G_MISS_NUM;
73     --uom begin
74     l_rowtype_rec.operand_per_pqty := FND_API.G_MISS_NUM;
75     l_rowtype_rec.adjusted_amount_per_pqty := FND_API.G_MISS_NUM;
76     --uom end
77 
78     l_rowtype_rec.arithmetic_operator	:= FND_API.G_MISS_CHAR;
79     l_rowtype_rec.cost_id	:= FND_API.G_MISS_NUM;
80     l_rowtype_rec.tax_code	:= FND_API.G_MISS_CHAR;
81     l_rowtype_rec.tax_exempt_flag := FND_API.G_MISS_CHAR;
82     l_rowtype_rec.tax_exempt_number := FND_API.G_MISS_CHAR;
83     l_rowtype_rec.tax_exempt_reason_code := FND_API.G_MISS_CHAR;
84     l_rowtype_rec.parent_adjustment_id := FND_API.G_MISS_NUM;
85     l_rowtype_rec.invoiced_flag := FND_API.G_MISS_CHAR;
86     l_rowtype_rec.estimated_flag := FND_API.G_MISS_CHAR;
87     l_rowtype_rec.inc_in_sales_performance := FND_API.G_MISS_CHAR;
88     l_rowtype_rec.split_action_code := FND_API.G_MISS_CHAR;
89     l_rowtype_rec.adjusted_amount := FND_API.G_MISS_NUM;
90     l_rowtype_rec.pricing_phase_id := FND_API.G_MISS_NUM;
91     l_rowtype_rec.charge_type_code := FND_API.G_MISS_CHAR;
92     l_rowtype_rec.charge_subtype_code := FND_API.G_MISS_CHAR;
93     l_rowtype_rec.list_line_no := FND_API.G_MISS_CHAR;
94     l_rowtype_rec.source_system_code := FND_API.G_MISS_CHAR;
95     l_rowtype_rec.benefit_qty := FND_API.G_MISS_NUM;
96     l_rowtype_rec.benefit_uom_code := FND_API.G_MISS_CHAR;
97     l_rowtype_rec.print_on_invoice_flag := FND_API.G_MISS_CHAR;
98     l_rowtype_rec.expiration_date := FND_API.G_MISS_DATE;
99     l_rowtype_rec.rebate_transaction_type_code := FND_API.G_MISS_CHAR;
100     l_rowtype_rec.rebate_transaction_reference := FND_API.G_MISS_CHAR;
101     l_rowtype_rec.rebate_payment_system_code := FND_API.G_MISS_CHAR;
102     l_rowtype_rec.redeemed_date := FND_API.G_MISS_DATE;
103     l_rowtype_rec.redeemed_flag := FND_API.G_MISS_CHAR;
104     l_rowtype_rec.accrual_flag := FND_API.G_MISS_CHAR;
105     l_rowtype_rec.range_break_quantity := FND_API.G_MISS_NUM;
106     l_rowtype_rec.accrual_conversion_rate := FND_API.G_MISS_NUM;
107     l_rowtype_rec.pricing_group_sequence := FND_API.G_MISS_NUM;
108     l_rowtype_rec.modifier_level_code := FND_API.G_MISS_CHAR;
109     l_rowtype_rec.price_break_type_code := FND_API.G_MISS_CHAR;
110     l_rowtype_rec.substitution_attribute := FND_API.G_MISS_CHAR;
111     l_rowtype_rec.proration_type_code := FND_API.G_MISS_CHAR;
112     l_rowtype_rec.credit_or_charge_flag := FND_API.G_MISS_CHAR;
113     l_rowtype_rec.include_on_returns_flag := FND_API.G_MISS_CHAR;
114     l_rowtype_rec.AC_ATTRIBUTE1    := FND_API.G_MISS_CHAR;
115     l_rowtype_rec.AC_ATTRIBUTE10   := FND_API.G_MISS_CHAR;
116     l_rowtype_rec.AC_ATTRIBUTE11   := FND_API.G_MISS_CHAR;
117     l_rowtype_rec.AC_ATTRIBUTE12   := FND_API.G_MISS_CHAR;
118     l_rowtype_rec.AC_ATTRIBUTE13   := FND_API.G_MISS_CHAR;
119     l_rowtype_rec.AC_ATTRIBUTE14   := FND_API.G_MISS_CHAR;
120     l_rowtype_rec.AC_ATTRIBUTE15   := FND_API.G_MISS_CHAR;
121     l_rowtype_rec.AC_ATTRIBUTE2    := FND_API.G_MISS_CHAR;
122     l_rowtype_rec.AC_ATTRIBUTE3    := FND_API.G_MISS_CHAR;
123     l_rowtype_rec.AC_ATTRIBUTE4    := FND_API.G_MISS_CHAR;
124     l_rowtype_rec.AC_ATTRIBUTE5    := FND_API.G_MISS_CHAR;
125     l_rowtype_rec.AC_ATTRIBUTE6    := FND_API.G_MISS_CHAR;
126     l_rowtype_rec.AC_ATTRIBUTE7    := FND_API.G_MISS_CHAR;
127     l_rowtype_rec.AC_ATTRIBUTE8    := FND_API.G_MISS_CHAR;
128     l_rowtype_rec.AC_ATTRIBUTE9    := FND_API.G_MISS_CHAR;
129     l_rowtype_rec.AC_CONTEXT       := FND_API.G_MISS_CHAR;
130 
131     RETURN l_rowtype_rec;
132 
133 END G_MISS_OE_AK_LINE_ADJ_REC;
134 
135 Procedure Append_Association (p_line_adj_tbl        in     Oe_Order_Pub.line_adj_tbl_type,
136                               px_line_adj_assoc_tbl in out nocopy Oe_Order_Pub.line_adj_assoc_tbl_type,
137                               p_pbh_tbl in pbh_tbl_type
138                               ) As
139 
140 CURSOR l_price_Adj_assoc_csr(p_price_adjustment_id In Number) IS
141 		SELECT
142 		         a.PRICE_ADJUSTMENT_ID
143 			,a.CREATION_DATE
144 			,a.CREATED_BY
145 			,a.LAST_UPDATE_DATE
146 			,a.LAST_UPDATED_BY
147 			,a.LAST_UPDATE_LOGIN
148 			,a.PROGRAM_APPLICATION_ID
149 			,a.PROGRAM_ID
150 			,a.PROGRAM_UPDATE_DATE
151 			,a.REQUEST_ID
152 			,a.PRICE_ADJ_ASSOC_ID
153 			,a.LINE_ID
154 			,a.RLTD_PRICE_ADJ_ID
155 			,a.LOCK_CONTROL
156 		from oe_price_adj_Assocs a, oe_price_adjustments b
157                 where a.price_adjustment_id = p_price_adjustment_id
158                      and a.rltd_price_adj_id = b.price_adjustment_id
159                      and b.list_line_type_code in ('SUR','DIS');
160 I PLS_INTEGER;
161 J PLS_INTEGER;
162 K PLS_INTEGER;
163 cnt PLS_INTEGER:=0;
164 l_found1 Boolean := False;
165 l_found2 Boolean := False;
166 --
167 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
168 --
169 Begin
170 	IF l_debug_level  > 0 THEN
171 	    oe_debug_pub.add(  'ENTERING OE_LINE_ADJ_UTIL.APPEND_ASSOCIATIONS' , 1 ) ;
172 	END IF;
173   I:=p_pbh_tbl.first;
174   while I is not null loop
175   IF l_debug_level  > 0 THEN
176       oe_debug_pub.add(  'PBH'||P_PBH_TBL ( I ) , 1 ) ;
177   END IF;
178   I:=p_pbh_tbl.next(I);
179   end loop;
180 
181   I:=p_line_adj_tbl.first;
182   while I is not null loop
183   IF l_debug_level  > 0 THEN
184       oe_debug_pub.add(  'LINE ADJ'||P_LINE_ADJ_TBL ( I ) .PRICE_ADJUSTMENT_ID||' '||P_LINE_ADJ_TBL ( I ) .LIST_LINE_TYPE_CODE , 1 ) ;
185   END IF;
186   I:=p_line_adj_tbl.next(I);
187   end loop;
188 
189  I:=p_pbh_tbl.first;
190   While I Is Not Null Loop
191        For l_asso In l_price_Adj_assoc_csr(p_line_adj_tbl(p_pbh_tbl(I)).price_adjustment_id) Loop
192            l_found1 := False;
193            l_found2 := False;
194            cnt := cnt +1;
195            J := p_line_adj_tbl.first;
196            While J Is Not Null Loop
197              If p_line_adj_tbl(J).price_adjustment_id = l_asso.rltd_price_adj_id AND p_line_adj_tbl(J).operation = OE_GLOBALS.G_OPR_CREATE Then
198                px_line_adj_assoc_tbl(cnt).rltd_adj_index := J;
199                l_found1 := True;
200              ElsIf p_line_adj_tbl(j).price_adjustment_id = l_asso.price_adjustment_id Then
201                px_line_adj_assoc_tbl(cnt).adj_index := J;
202                px_line_adj_assoc_tbl(cnt).price_adjustment_id := fnd_api.g_miss_num;
203                px_line_adj_assoc_tbl(cnt).price_adj_assoc_id := fnd_api.g_miss_num;
204                l_found2 := True;
205              End If;
206                px_line_adj_assoc_tbl(cnt).operation:=OE_GLOBALS.G_OPR_CREATE;
207               Exit When l_found1 and l_found2;
208               J:= p_line_adj_tbl.next(J);
209            End Loop;
210        End Loop;
211  I:=p_pbh_tbl.next(I);
212  End Loop;
213 	IF l_debug_level  > 0 THEN
214 	    oe_debug_pub.add(  'EXITING OE_LINE_ADJ_UTIL.APPEND_ASSOCIATIONS' , 1 ) ;
215 	END IF;
216 End;
217 
218 PROCEDURE API_Rec_To_Rowtype_Rec
219 (   p_LINE_ADJ_rec            IN  OE_Order_PUB.LINE_ADJ_Rec_Type
220 ,   x_rowtype_rec             OUT nocopy OE_AK_LINE_PRCADJS_V%ROWTYPE
221 ) IS
222 BEGIN
223 
224     x_rowtype_rec.ATTRIBUTE1       := p_line_adj_rec.ATTRIBUTE1;
225     x_rowtype_rec.ATTRIBUTE10       := p_line_adj_rec.ATTRIBUTE10;
226     x_rowtype_rec.ATTRIBUTE11       := p_line_adj_rec.ATTRIBUTE11;
227     x_rowtype_rec.ATTRIBUTE12       := p_line_adj_rec.ATTRIBUTE12;
228     x_rowtype_rec.ATTRIBUTE13       := p_line_adj_rec.ATTRIBUTE13;
229     x_rowtype_rec.ATTRIBUTE14       := p_line_adj_rec.ATTRIBUTE14;
230     x_rowtype_rec.ATTRIBUTE15       := p_line_adj_rec.ATTRIBUTE15;
231     x_rowtype_rec.ATTRIBUTE2       := p_line_adj_rec.ATTRIBUTE2;
232     x_rowtype_rec.ATTRIBUTE3       := p_line_adj_rec.ATTRIBUTE3;
233     x_rowtype_rec.ATTRIBUTE4       := p_line_adj_rec.ATTRIBUTE4;
234     x_rowtype_rec.ATTRIBUTE5       := p_line_adj_rec.ATTRIBUTE5;
235     x_rowtype_rec.ATTRIBUTE6       := p_line_adj_rec.ATTRIBUTE6;
236     x_rowtype_rec.ATTRIBUTE7       := p_line_adj_rec.ATTRIBUTE7;
237     x_rowtype_rec.ATTRIBUTE8       := p_line_adj_rec.ATTRIBUTE8;
238     x_rowtype_rec.ATTRIBUTE9       := p_line_adj_rec.ATTRIBUTE9;
239     x_rowtype_rec.CONTEXT       := p_line_adj_rec.CONTEXT;
240     x_rowtype_rec.CREATED_BY       := p_line_adj_rec.CREATED_BY;
241     x_rowtype_rec.CREATION_DATE       := p_line_adj_rec.CREATION_DATE;
242     x_rowtype_rec.DB_FLAG       := p_line_adj_rec.DB_FLAG;
243     x_rowtype_rec.HEADER_ID       := p_line_adj_rec.HEADER_ID;
244     x_rowtype_rec.LAST_UPDATED_BY       := p_line_adj_rec.LAST_UPDATED_BY;
245     x_rowtype_rec.LAST_UPDATE_DATE       := p_line_adj_rec.LAST_UPDATE_DATE;
246     x_rowtype_rec.LAST_UPDATE_LOGIN       := p_line_adj_rec.LAST_UPDATE_LOGIN;
247     x_rowtype_rec.LINE_ID       := p_line_adj_rec.LINE_ID;
248     x_rowtype_rec.OPERATION       := p_line_adj_rec.OPERATION;
249     x_rowtype_rec.LINE_INDEX       := p_line_adj_rec.LINE_INDEX;
250     x_rowtype_rec.PERCENT       := p_line_adj_rec.PERCENT;
251     x_rowtype_rec.RETURN_STATUS       := p_line_adj_rec.RETURN_STATUS;
252     x_rowtype_rec.AUTOMATIC_FLAG	:= p_line_adj_rec.AUTOMATIC_FLAG;
253     x_rowtype_rec.DISCOUNT_ID	:= p_line_adj_rec.DISCOUNT_ID;
254     x_rowtype_rec.DISCOUNT_LINE_ID	:= p_line_adj_rec.DISCOUNT_LINE_ID;
255     x_rowtype_rec.PRICE_ADJUSTMENT_ID	:= p_line_adj_rec.PRICE_ADJUSTMENT_ID;
256     x_rowtype_rec.PROGRAM_APPLICATION_ID	:= p_line_adj_rec.PROGRAM_APPLICATION_ID;
257     x_rowtype_rec.PROGRAM_ID		:= p_line_adj_rec.PROGRAM_ID;
258     x_rowtype_rec.PROGRAM_UPDATE_DATE	:= p_line_adj_rec.PROGRAM_UPDATE_DATE;
259     x_rowtype_rec.request_id		:= p_line_adj_rec.request_id;
260 --    x_rowtype_rec.orig_sys_discount_ref	:= p_line_adj_rec.orig_sys_discount_ref;
261     x_rowtype_rec.list_header_id	:= p_line_adj_rec.list_header_id;
262     x_rowtype_rec.list_line_id	:= p_line_adj_rec.list_line_id;
263     x_rowtype_rec.list_line_type_code	:= p_line_adj_rec.list_line_type_code;
264     x_rowtype_rec.modifier_mechanism_type_code	:= p_line_adj_rec.modifier_mechanism_type_code;
265     x_rowtype_rec.modified_from	:= p_line_adj_rec.modified_from;
266     x_rowtype_rec.modified_to	:= p_line_adj_rec.modified_to;
267     x_rowtype_rec.updated_flag	:= p_line_adj_rec.updated_flag;
268     x_rowtype_rec.update_allowed	:= p_line_adj_rec.update_allowed;
269     x_rowtype_rec.applied_flag	:= p_line_adj_rec.applied_flag;
270     x_rowtype_rec.change_reason_code	:= p_line_adj_rec.change_reason_code;
271     x_rowtype_rec.change_reason_text	:= p_line_adj_rec.change_reason_text;
272     x_rowtype_rec.operand	:= p_line_adj_rec.operand;
273     x_rowtype_rec.arithmetic_operator	:= p_line_adj_rec.arithmetic_operator;
274     x_rowtype_rec.cost_id	:= p_line_adj_rec.cost_id;
275     x_rowtype_rec.tax_code	:= p_line_adj_rec.tax_code;
276     x_rowtype_rec.tax_exempt_flag := p_line_adj_rec.tax_exempt_flag;
277     x_rowtype_rec.tax_exempt_number := p_line_adj_rec.tax_exempt_number;
278     x_rowtype_rec.tax_exempt_reason_code := p_line_adj_rec.tax_exempt_reason_code;
279     x_rowtype_rec.parent_adjustment_id := p_line_adj_rec.parent_adjustment_id;
280     x_rowtype_rec.invoiced_flag := p_line_adj_rec.invoiced_flag;
281     x_rowtype_rec.estimated_flag := p_line_adj_rec.estimated_flag;
282     x_rowtype_rec.inc_in_sales_performance := p_line_adj_rec.inc_in_sales_performance;
283     x_rowtype_rec.split_action_code := p_line_adj_rec.split_action_code;
284 
285     x_rowtype_rec.adjusted_amount := p_line_adj_rec.adjusted_amount;
286     x_rowtype_rec.pricing_phase_id := p_line_adj_rec.pricing_phase_id;
287     x_rowtype_rec.charge_type_code := p_line_adj_rec.charge_type_code;
288     x_rowtype_rec.charge_subtype_code := p_line_adj_rec.charge_subtype_code;
289     x_rowtype_rec.list_line_no := p_line_adj_rec.list_line_no;
290     x_rowtype_rec.source_system_code := p_line_adj_rec.source_system_code;
291     x_rowtype_rec.benefit_qty := p_line_adj_rec.benefit_qty;
292     x_rowtype_rec.benefit_uom_code := p_line_adj_rec.benefit_uom_code;
293     x_rowtype_rec.print_on_invoice_flag := p_line_adj_rec.print_on_invoice_flag;
294     x_rowtype_rec.expiration_date := p_line_adj_rec.expiration_date;
295     x_rowtype_rec.rebate_transaction_type_code := p_line_adj_rec.rebate_transaction_type_code;
296     x_rowtype_rec.rebate_transaction_reference := p_line_adj_rec.rebate_transaction_reference;
297     x_rowtype_rec.rebate_payment_system_code := p_line_adj_rec.rebate_payment_system_code;
298     x_rowtype_rec.redeemed_date := p_line_adj_rec.redeemed_date;
299     x_rowtype_rec.redeemed_flag := p_line_adj_rec.redeemed_flag;
300     x_rowtype_rec.accrual_flag := p_line_adj_rec.accrual_flag;
301     x_rowtype_rec.range_break_quantity := p_line_adj_rec.range_break_quantity;
302     x_rowtype_rec.accrual_conversion_rate := p_line_adj_rec.accrual_conversion_rate;
303     x_rowtype_rec.pricing_group_sequence := p_line_adj_rec.pricing_group_sequence;
304     x_rowtype_rec.modifier_level_code := p_line_adj_rec.modifier_level_code;
305     x_rowtype_rec.price_break_type_code := p_line_adj_rec.price_break_type_code;
306     x_rowtype_rec.substitution_attribute := p_line_adj_rec.substitution_attribute;
307     x_rowtype_rec.proration_type_code := p_line_adj_rec.proration_type_code;
308     x_rowtype_rec.credit_or_charge_flag := p_line_adj_rec.credit_or_charge_flag;
309     x_rowtype_rec.include_on_returns_flag := p_line_adj_rec.include_on_returns_flag;
310     x_rowtype_rec.AC_ATTRIBUTE1       := p_line_adj_rec.AC_ATTRIBUTE1;
311     x_rowtype_rec.AC_ATTRIBUTE10      := p_line_adj_rec.AC_ATTRIBUTE10;
312     x_rowtype_rec.AC_ATTRIBUTE11      := p_line_adj_rec.AC_ATTRIBUTE11;
313     x_rowtype_rec.AC_ATTRIBUTE12      := p_line_adj_rec.AC_ATTRIBUTE12;
314     x_rowtype_rec.AC_ATTRIBUTE13      := p_line_adj_rec.AC_ATTRIBUTE13;
315     x_rowtype_rec.AC_ATTRIBUTE14      := p_line_adj_rec.AC_ATTRIBUTE14;
316     x_rowtype_rec.AC_ATTRIBUTE15      := p_line_adj_rec.AC_ATTRIBUTE15;
317     x_rowtype_rec.AC_ATTRIBUTE2       := p_line_adj_rec.AC_ATTRIBUTE2;
318     x_rowtype_rec.AC_ATTRIBUTE3       := p_line_adj_rec.AC_ATTRIBUTE3;
319     x_rowtype_rec.AC_ATTRIBUTE4       := p_line_adj_rec.AC_ATTRIBUTE4;
320     x_rowtype_rec.AC_ATTRIBUTE5       := p_line_adj_rec.AC_ATTRIBUTE5;
321     x_rowtype_rec.AC_ATTRIBUTE6       := p_line_adj_rec.AC_ATTRIBUTE6;
322     x_rowtype_rec.AC_ATTRIBUTE7       := p_line_adj_rec.AC_ATTRIBUTE7;
323     x_rowtype_rec.AC_ATTRIBUTE8       := p_line_adj_rec.AC_ATTRIBUTE8;
324     x_rowtype_rec.AC_ATTRIBUTE9       := p_line_adj_rec.AC_ATTRIBUTE9;
325     x_rowtype_rec.AC_CONTEXT          := p_line_adj_rec.AC_CONTEXT;
326     --uom begin
327     x_rowtype_rec.operand_per_pqty :=p_line_adj_rec.operand_per_pqty;
328     x_rowtype_rec.adjusted_amount_per_pqty :=p_line_adj_rec.adjusted_amount_per_pqty;
329     x_rowtype_rec.invoiced_amount     := p_line_adj_rec.invoiced_amount;
330     --uom end
331 
332 
333 END API_Rec_To_RowType_Rec;
334 
335 
336 PROCEDURE Rowtype_Rec_To_API_Rec
337 (   p_record                        IN  OE_AK_LINE_PRCADJS_V%ROWTYPE
338 ,   x_api_rec                       IN OUT nocopy OE_Order_PUB.LINE_ADJ_Rec_Type
339 )
340 iS
341 
342 --
343 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
344 --
345 BEGIN
346 IF l_debug_level  > 0 THEN
347     oe_debug_pub.add(  'BEFORE ASSIGN COST_ID '||TO_CHAR ( P_RECORD.COST_ID ) , 1 ) ;
348 END IF;
349 
350     x_api_rec.ATTRIBUTE1       := p_record.ATTRIBUTE1;
351     x_api_rec.ATTRIBUTE10       := p_record.ATTRIBUTE10;
352     x_api_rec.ATTRIBUTE11       := p_record.ATTRIBUTE11;
353     x_api_rec.ATTRIBUTE12       := p_record.ATTRIBUTE12;
354     x_api_rec.ATTRIBUTE13       := p_record.ATTRIBUTE13;
355     x_api_rec.ATTRIBUTE14       := p_record.ATTRIBUTE14;
356     x_api_rec.ATTRIBUTE15       := p_record.ATTRIBUTE15;
357     x_api_rec.ATTRIBUTE2       := p_record.ATTRIBUTE2;
358     x_api_rec.ATTRIBUTE3       := p_record.ATTRIBUTE3;
359     x_api_rec.ATTRIBUTE4       := p_record.ATTRIBUTE4;
360     x_api_rec.ATTRIBUTE5       := p_record.ATTRIBUTE5;
361     x_api_rec.ATTRIBUTE6       := p_record.ATTRIBUTE6;
362     x_api_rec.ATTRIBUTE7       := p_record.ATTRIBUTE7;
363     x_api_rec.ATTRIBUTE8       := p_record.ATTRIBUTE8;
364     x_api_rec.ATTRIBUTE9       := p_record.ATTRIBUTE9;
365     x_api_rec.CONTEXT       := p_record.CONTEXT;
366     x_api_rec.CREATED_BY       := p_record.CREATED_BY;
367     x_api_rec.CREATION_DATE       := p_record.CREATION_DATE;
368     x_api_rec.DB_FLAG       := p_record.DB_FLAG;
369     x_api_rec.HEADER_ID       := p_record.HEADER_ID;
370     x_api_rec.LAST_UPDATED_BY       := p_record.LAST_UPDATED_BY;
371     x_api_rec.LAST_UPDATE_DATE       := p_record.LAST_UPDATE_DATE;
372     x_api_rec.LAST_UPDATE_LOGIN       := p_record.LAST_UPDATE_LOGIN;
373     x_api_rec.LINE_ID       := p_record.LINE_ID;
374     x_api_rec.OPERATION       := p_record.OPERATION;
375     x_api_rec.LINE_INDEX       := p_record.LINE_INDEX;
376     x_api_rec.PERCENT       := p_record.PERCENT;
377     x_api_rec.RETURN_STATUS       := p_record.RETURN_STATUS;
378     x_api_rec.AUTOMATIC_FLAG	:= p_record.AUTOMATIC_FLAG;
379     x_api_rec.DISCOUNT_ID	:= p_record.DISCOUNT_ID;
380     x_api_rec.DISCOUNT_LINE_ID	:= p_record.DISCOUNT_LINE_ID;
381     x_api_rec.PRICE_ADJUSTMENT_ID	:= p_record.PRICE_ADJUSTMENT_ID;
382     x_api_rec.PROGRAM_APPLICATION_ID	:= p_record.PROGRAM_APPLICATION_ID;
383     x_api_rec.PROGRAM_ID		:= p_record.PROGRAM_ID;
384     x_api_rec.PROGRAM_UPDATE_DATE	:= p_record.PROGRAM_UPDATE_DATE;
385     x_api_rec.request_id		:= p_record.request_id;
386 --    x_api_rec.orig_sys_discount_ref	:= p_record.orig_sys_discount_ref;
387     x_api_rec.list_header_id	:= p_record.list_header_id;
388     x_api_rec.list_line_id	:= p_record.list_line_id;
389     x_api_rec.list_line_type_code	:= p_record.list_line_type_code;
390     x_api_rec.modifier_mechanism_type_code	:= p_record.modifier_mechanism_type_code;
391     x_api_rec.modified_from	:= p_record.modified_from;
392     x_api_rec.modified_to	:= p_record.modified_to;
393     x_api_rec.updated_flag	:= p_record.updated_flag;
394     x_api_rec.update_allowed	:= p_record.update_allowed;
395     x_api_rec.applied_flag	:= p_record.applied_flag;
396     x_api_rec.change_reason_code	:= p_record.change_reason_code;
397     x_api_rec.change_reason_text	:= p_record.change_reason_text;
398     x_api_rec.operand	:= p_record.operand;
399     x_api_rec.arithmetic_operator	:= p_record.arithmetic_operator;
400     x_api_rec.cost_id	:= p_record.cost_id;
401     x_api_rec.tax_code	:= p_record.tax_code;
402     x_api_rec.tax_exempt_flag := p_record.tax_exempt_flag;
403     x_api_rec.tax_exempt_number := p_record.tax_exempt_number;
404     x_api_rec.tax_exempt_reason_code := p_record.tax_exempt_reason_code;
405     x_api_rec.parent_adjustment_id := p_record.parent_adjustment_id;
406     x_api_rec.invoiced_flag := p_record.invoiced_flag;
407     x_api_rec.estimated_flag := p_record.estimated_flag;
408     x_api_rec.inc_in_sales_performance := p_record.inc_in_sales_performance;
409     x_api_rec.split_action_code := p_record.split_action_code;
410     x_api_rec.charge_type_code := p_record.charge_type_code;
411     x_api_rec.charge_subtype_code := p_record.charge_subtype_code;
412     x_api_rec.pricing_phase_id := p_record.pricing_phase_id;
413     x_api_rec.adjusted_amount := p_record.adjusted_amount;
414     x_api_rec.list_line_no := p_record.list_line_no;
415     x_api_rec.source_system_code := p_record.source_system_code;
416     x_api_rec.benefit_qty := p_record.benefit_qty;
417     x_api_rec.benefit_uom_code := p_record.benefit_uom_code;
418     x_api_rec.print_on_invoice_flag := p_record.print_on_invoice_flag;
419     x_api_rec.expiration_date := p_record.expiration_date;
420     x_api_rec.rebate_transaction_type_code := p_record.rebate_transaction_type_code;
421     x_api_rec.rebate_transaction_reference := p_record.rebate_transaction_reference;
422     x_api_rec.rebate_payment_system_code := p_record.rebate_payment_system_code;
423     x_api_rec.redeemed_date := p_record.redeemed_date;
424     x_api_rec.redeemed_flag := p_record.redeemed_flag;
425     x_api_rec.accrual_flag := p_record.accrual_flag;
426     x_api_rec.range_break_quantity := p_record.range_break_quantity;
427     x_api_rec.accrual_conversion_rate := p_record.accrual_conversion_rate;
428     x_api_rec.pricing_group_sequence := p_record.pricing_group_sequence;
429     x_api_rec.modifier_level_code := p_record.modifier_level_code;
430     x_api_rec.price_break_type_code := p_record.price_break_type_code;
431     x_api_rec.substitution_attribute := p_record.substitution_attribute;
432     x_api_rec.proration_type_code := p_record.proration_type_code;
433     x_api_rec.credit_or_charge_flag := p_record.credit_or_charge_flag;
434     x_api_rec.include_on_returns_flag := p_record.include_on_returns_flag;
435     x_api_rec.AC_ATTRIBUTE1       := p_record.AC_ATTRIBUTE1;
436     x_api_rec.AC_ATTRIBUTE10      := p_record.AC_ATTRIBUTE10;
437     x_api_rec.AC_ATTRIBUTE11      := p_record.AC_ATTRIBUTE11;
438     x_api_rec.AC_ATTRIBUTE12      := p_record.AC_ATTRIBUTE12;
439     x_api_rec.AC_ATTRIBUTE13      := p_record.AC_ATTRIBUTE13;
440     x_api_rec.AC_ATTRIBUTE14      := p_record.AC_ATTRIBUTE14;
441     x_api_rec.AC_ATTRIBUTE15      := p_record.AC_ATTRIBUTE15;
442     x_api_rec.AC_ATTRIBUTE2       := p_record.AC_ATTRIBUTE2;
443     x_api_rec.AC_ATTRIBUTE3       := p_record.AC_ATTRIBUTE3;
444     x_api_rec.AC_ATTRIBUTE4       := p_record.AC_ATTRIBUTE4;
445     x_api_rec.AC_ATTRIBUTE5       := p_record.AC_ATTRIBUTE5;
446     x_api_rec.AC_ATTRIBUTE6       := p_record.AC_ATTRIBUTE6;
447     x_api_rec.AC_ATTRIBUTE7       := p_record.AC_ATTRIBUTE7;
448     x_api_rec.AC_ATTRIBUTE8       := p_record.AC_ATTRIBUTE8;
449     x_api_rec.AC_ATTRIBUTE9       := p_record.AC_ATTRIBUTE9;
450     x_api_rec.AC_CONTEXT          := p_record.AC_CONTEXT;
451     --uom begin
452     x_api_rec.operand_per_pqty         :=p_record.operand_per_pqty;
453     x_api_rec.adjusted_amount_per_pqty :=p_record.adjusted_amount_per_pqty;
454     --uom end
455     x_api_rec.invoiced_amount     := p_record.invoiced_amount;
456 END Rowtype_Rec_To_API_Rec;
457 
458 
459 --  Procedure Clear_Dependent_Attr
460 
461 -- Overloaded procedure .. Please maintain 2 code sets
462 
463 PROCEDURE Clear_Dependent_Attr
464 (   p_attr_id                       IN  NUMBER := FND_API.G_MISS_NUM
465 ,   p_x_Line_Adj_rec                IN OUT NOCOPY OE_AK_LINE_PRCADJS_V%ROWTYPE
466 ,   p_old_Line_Adj_rec            IN  OE_AK_LINE_PRCADJS_V%ROWTYPE :=
467 								G_MISS_OE_AK_LINE_ADJ_REC
468 -- ,   x_Line_Adj_rec                OUT nocopy OE_AK_LINE_PRCADJS_V%ROWTYPE
469 )
470 IS
471 l_index			NUMBER :=0;
472 l_src_attr_tbl		OE_GLOBALS.NUMBER_Tbl_Type;
473 l_dep_attr_tbl		OE_GLOBALS.NUMBER_Tbl_Type;
474 --
475 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
476 --
477 BEGIN
478 
479     --  Load out record
480 
481    -- x_Line_Adj_rec := p_Line_Adj_rec;
482 
483     --  If attr_id is missing compare old and new records and for
484     --  every changed attribute clear its dependent fields.
485     IF l_debug_level  > 0 THEN
486         oe_debug_pub.add(  'ENTERING CLEAR_DEPENDENT_ATTR' ) ;
487     END IF;
488     IF p_attr_id = FND_API.G_MISS_NUM THEN
489 
490 
491         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.adjusted_amount,p_old_Line_Adj_rec.adjusted_amount)
492         THEN
493             l_index := l_index + 1;
494             l_src_attr_tbl(l_index) := OE_LINE_ADJ_UTIL.G_ADJUSTED_AMOUNT;
495         END IF;
496 
497         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.pricing_phase_id,p_old_Line_Adj_rec.pricing_phase_id)
498         THEN
499             l_index := l_index + 1;
500             l_src_attr_tbl(l_index) := OE_LINE_ADJ_UTIL.G_PRICING_PHASE_ID;
501         END IF;
502 
503 -----
504 
505         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.price_adjustment_id,p_old_Line_Adj_rec.price_adjustment_id)
506         THEN
507             l_index := l_index + 1;
508             l_src_attr_tbl(l_index) := OE_LINE_ADJ_UTIL.G_PRICE_ADJUSTMENT;
509         END IF;
510 
511         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.creation_date,p_old_Line_Adj_rec.creation_date)
512         THEN
513             l_index := l_index + 1;
514             l_src_attr_tbl(l_index) := OE_LINE_ADJ_UTIL.G_CREATION_DATE;
515         END IF;
516 
517         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.created_by,p_old_Line_Adj_rec.created_by)
518         THEN
519             l_index := l_index + 1;
520             l_src_attr_tbl(l_index) := OE_LINE_ADJ_UTIL.G_CREATED_BY;
521         END IF;
522 
523         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.last_update_date,p_old_Line_Adj_rec.last_update_date)
524         THEN
525             l_index := l_index + 1;
526             l_src_attr_tbl(l_index) := OE_LINE_ADJ_UTIL.G_LAST_UPDATE_DATE;
527         END IF;
528 
529         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.last_updated_by,p_old_Line_Adj_rec.last_updated_by)
530         THEN
531             l_index := l_index + 1;
532             l_src_attr_tbl(l_index) := OE_LINE_ADJ_UTIL.G_LAST_UPDATED_BY;
533         END IF;
534 
535         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.last_update_login,p_old_Line_Adj_rec.last_update_login)
536         THEN
537             l_index := l_index + 1;
538             l_src_attr_tbl(l_index) := OE_LINE_ADJ_UTIL.G_LAST_UPDATE_LOGIN;
539         END IF;
540 
541         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.program_application_id,p_old_Line_Adj_rec.program_application_id)
542         THEN
543             l_index := l_index + 1;
544             l_src_attr_tbl(l_index) := OE_LINE_ADJ_UTIL.G_PROGRAM_APPLICATION;
545         END IF;
546 
547         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.program_id,p_old_Line_Adj_rec.program_id)
548         THEN
549             l_index := l_index + 1;
550             l_src_attr_tbl(l_index) := OE_LINE_ADJ_UTIL.G_PROGRAM;
551         END IF;
552 
553         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.program_update_date,p_old_Line_Adj_rec.program_update_date)
554         THEN
555             l_index := l_index + 1;
556             l_src_attr_tbl(l_index) := OE_LINE_ADJ_UTIL.G_PROGRAM_UPDATE_DATE;
557         END IF;
558 
559         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.request_id,p_old_Line_Adj_rec.request_id)
560         THEN
561             l_index := l_index + 1;
562             l_src_attr_tbl(l_index) := OE_LINE_ADJ_UTIL.G_REQUEST;
563         END IF;
564 
565         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.header_id,p_old_Line_Adj_rec.header_id)
566         THEN
567             l_index := l_index + 1;
568             l_src_attr_tbl(l_index) := OE_LINE_ADJ_UTIL.G_HEADER;
569         END IF;
570 
571         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.discount_id,p_old_Line_Adj_rec.discount_id)
572         THEN
573             l_index := l_index + 1;
574             l_src_attr_tbl(l_index) := OE_LINE_ADJ_UTIL.G_DISCOUNT;
575         END IF;
576 
577         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.discount_line_id,p_old_Line_Adj_rec.discount_line_id)
578         THEN
579             l_index := l_index + 1;
580             l_src_attr_tbl(l_index) := OE_LINE_ADJ_UTIL.G_DISCOUNT_LINE;
581         END IF;
582 
583         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.automatic_flag,p_old_Line_Adj_rec.automatic_flag)
584         THEN
585             l_index := l_index + 1;
586             l_src_attr_tbl(l_index) := OE_LINE_ADJ_UTIL.G_AUTOMATIC;
587         END IF;
588 
589         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.percent,p_old_Line_Adj_rec.percent)
590         THEN
591             l_index := l_index + 1;
592             l_src_attr_tbl(l_index) := OE_LINE_ADJ_UTIL.G_PERCENT;
593         END IF;
594 
595         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.line_id,p_old_Line_Adj_rec.line_id)
596         THEN
597             l_index := l_index + 1;
598             l_src_attr_tbl(l_index) := OE_LINE_ADJ_UTIL.G_LINE;
599         END IF;
600 
601         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.context,p_old_Line_Adj_rec.context)
602         THEN
603             l_index := l_index + 1;
604             l_src_attr_tbl(l_index) := OE_LINE_ADJ_UTIL.G_CONTEXT;
605         END IF;
606 
607         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.attribute1,p_old_Line_Adj_rec.attribute1)
608         THEN
609             l_index := l_index + 1;
610             l_src_attr_tbl(l_index) := OE_LINE_ADJ_UTIL.G_ATTRIBUTE1;
611         END IF;
612 
613         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.attribute2,p_old_Line_Adj_rec.attribute2)
614         THEN
615             l_index := l_index + 1;
616             l_src_attr_tbl(l_index) := OE_LINE_ADJ_UTIL.G_ATTRIBUTE2;
617         END IF;
618 
619         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.attribute3,p_old_Line_Adj_rec.attribute3)
620         THEN
621             l_index := l_index + 1;
622             l_src_attr_tbl(l_index) := OE_LINE_ADJ_UTIL.G_ATTRIBUTE3;
623         END IF;
624 
625         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.attribute4,p_old_Line_Adj_rec.attribute4)
626         THEN
627             l_index := l_index + 1;
628             l_src_attr_tbl(l_index) := OE_LINE_ADJ_UTIL.G_ATTRIBUTE4;
629         END IF;
630 
631         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.attribute5,p_old_Line_Adj_rec.attribute5)
632         THEN
633             l_index := l_index + 1;
634             l_src_attr_tbl(l_index) := OE_LINE_ADJ_UTIL.G_ATTRIBUTE5;
635         END IF;
636 
637         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.attribute6,p_old_Line_Adj_rec.attribute6)
638         THEN
639             l_index := l_index + 1;
640             l_src_attr_tbl(l_index) := OE_LINE_ADJ_UTIL.G_ATTRIBUTE6;
641         END IF;
642 
643         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.attribute7,p_old_Line_Adj_rec.attribute7)
644         THEN
645             l_index := l_index + 1;
646             l_src_attr_tbl(l_index) := OE_LINE_ADJ_UTIL.G_ATTRIBUTE7;
647         END IF;
648 
649         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.attribute8,p_old_Line_Adj_rec.attribute8)
650         THEN
651             l_index := l_index + 1;
652             l_src_attr_tbl(l_index) := OE_LINE_ADJ_UTIL.G_ATTRIBUTE8;
653         END IF;
654 
655         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.attribute9,p_old_Line_Adj_rec.attribute9)
656         THEN
657             l_index := l_index + 1;
658             l_src_attr_tbl(l_index) := OE_LINE_ADJ_UTIL.G_ATTRIBUTE9;
659         END IF;
660 
661         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.attribute10,p_old_Line_Adj_rec.attribute10)
662         THEN
663             l_index := l_index + 1;
664             l_src_attr_tbl(l_index) := OE_LINE_ADJ_UTIL.G_ATTRIBUTE10;
665         END IF;
666 
667         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.attribute11,p_old_Line_Adj_rec.attribute11)
668         THEN
669             l_index := l_index + 1;
670             l_src_attr_tbl(l_index) := OE_LINE_ADJ_UTIL.G_ATTRIBUTE11;
671         END IF;
672 
673         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.attribute12,p_old_Line_Adj_rec.attribute12)
674         THEN
675             l_index := l_index + 1;
676             l_src_attr_tbl(l_index) := OE_LINE_ADJ_UTIL.G_ATTRIBUTE12;
677         END IF;
678 
679         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.attribute13,p_old_Line_Adj_rec.attribute13)
680         THEN
681             l_index := l_index + 1;
682             l_src_attr_tbl(l_index) := OE_LINE_ADJ_UTIL.G_ATTRIBUTE13;
683         END IF;
684 
685         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.attribute14,p_old_Line_Adj_rec.attribute14)
686         THEN
687             l_index := l_index + 1;
688             l_src_attr_tbl(l_index) := OE_LINE_ADJ_UTIL.G_ATTRIBUTE14;
689         END IF;
690 
691         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.attribute15,p_old_Line_Adj_rec.attribute15)
692         THEN
693             l_index := l_index + 1;
694             l_src_attr_tbl(l_index) := OE_LINE_ADJ_UTIL.G_ATTRIBUTE15;
695         END IF;
696 
697         IF NOT OE_GLOBALS.Equal(p_x_line_Adj_rec.COST_ID, p_old_Line_Adj_rec.COST_ID)
698 	   THEN
699             l_index := l_index + 1;
700             l_src_attr_tbl(l_index) := OE_LINE_ADJ_UTIL.G_COST_ID;
701 	   END IF;
702 
703         IF NOT OE_GLOBALS.Equal(p_x_line_Adj_rec.TAX_CODE, p_old_Line_Adj_rec.TAX_CODE)
704 	   THEN
705             l_index := l_index + 1;
706             l_src_attr_tbl(l_index) := OE_LINE_ADJ_UTIL.G_TAX_CODE;
707 	   END IF;
708 
709         IF NOT OE_GLOBALS.Equal(p_x_line_Adj_rec.TAX_EXEMPT_FLAG, p_old_Line_Adj_rec.TAX_EXEMPT_FLAG)
710 	   THEN
711             l_index := l_index + 1;
712             l_src_attr_tbl(l_index) := OE_LINE_ADJ_UTIL.G_TAX_EXEMPT_FLAG;
713 	   END IF;
714 
715         IF NOT OE_GLOBALS.Equal(p_x_line_Adj_rec.TAX_EXEMPT_NUMBER, p_old_Line_Adj_rec.TAX_EXEMPT_NUMBER)
716 	   THEN
717             l_index := l_index + 1;
718             l_src_attr_tbl(l_index) := OE_LINE_ADJ_UTIL.G_TAX_EXEMPT_NUMBER;
719 	   END IF;
720 
721         IF NOT OE_GLOBALS.Equal(p_x_line_Adj_rec.TAX_EXEMPT_REASON_CODE, p_old_Line_Adj_rec.TAX_EXEMPT_REASON_CODE)
722 	   THEN
723             l_index := l_index + 1;
724             l_src_attr_tbl(l_index) := OE_LINE_ADJ_UTIL.G_TAX_EXEMPT_REASON_CODE;
725 	   END IF;
726 
727         IF NOT OE_GLOBALS.Equal(p_x_line_Adj_rec.PARENT_ADJUSTMENT_ID, p_old_Line_Adj_rec.PARENT_ADJUSTMENT_ID)
728 	   THEN
729             l_index := l_index + 1;
730             l_src_attr_tbl(l_index) := OE_LINE_ADJ_UTIL.G_PARENT_ADJUSTMENT_ID;
731 	   END IF;
732 
733         IF NOT OE_GLOBALS.Equal(p_x_line_Adj_rec.INVOICED_FLAG, p_old_Line_Adj_rec.INVOICED_FLAG)
734 	   THEN
735             l_index := l_index + 1;
736             l_src_attr_tbl(l_index) := OE_LINE_ADJ_UTIL.G_INVOICED_FLAG;
737 	   END IF;
738 
739         IF NOT OE_GLOBALS.Equal(p_x_line_Adj_rec.ESTIMATED_FLAG, p_old_Line_Adj_rec.ESTIMATED_FLAG)
740 	   THEN
741             l_index := l_index + 1;
742             l_src_attr_tbl(l_index) := OE_LINE_ADJ_UTIL.G_ESTIMATED_FLAG;
743 	   END IF;
744 
745         IF NOT OE_GLOBALS.Equal(p_x_line_Adj_rec.INC_IN_SALES_PERFORMANCE, p_old_Line_Adj_rec.INC_IN_SALES_PERFORMANCE)
746 	   THEN
747             l_index := l_index + 1;
748             l_src_attr_tbl(l_index) := OE_LINE_ADJ_UTIL.G_INC_IN_SALES_PERFORMANCE;
749 	   END IF;
750 
751         IF NOT OE_GLOBALS.Equal(p_x_line_Adj_rec.SPLIT_ACTION_CODE, p_old_Line_Adj_rec.SPLIT_ACTION_CODE)
752 	   THEN
753             l_index := l_index + 1;
754             l_src_attr_tbl(l_index) := OE_LINE_ADJ_UTIL.G_SPLIT_ACTION_CODE;
755 	   END IF;
756 
757         IF NOT OE_GLOBALS.Equal(p_x_line_Adj_rec.CHARGE_TYPE_CODE, p_old_Line_Adj_rec.CHARGE_TYPE_CODE)
758 	   THEN
759             l_index := l_index + 1;
760             l_src_attr_tbl(l_index) := OE_LINE_ADJ_UTIL.G_CHARGE_TYPE_CODE;
761 	   END IF;
762 
763         IF NOT OE_GLOBALS.Equal(p_x_line_Adj_rec.CHARGE_SUBTYPE_CODE, p_old_Line_Adj_rec.CHARGE_SUBTYPE_CODE)
764 	   THEN
765             l_index := l_index + 1;
766             l_src_attr_tbl(l_index) := OE_LINE_ADJ_UTIL.G_CHARGE_SUBTYPE_CODE;
767 	   END IF;
768 
769         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.list_line_no, p_old_Line_Adj_rec.list_line_no)
770 	   THEN
771             l_index := l_index + 1;
772             l_src_attr_tbl(l_index) := OE_Line_ADJ_UTIL.G_LIST_LINE_NO;
773 	   END IF;
774 
775         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.source_system_code, p_old_Line_Adj_rec.source_system_code)
776 	   THEN
777             l_index := l_index + 1;
778             l_src_attr_tbl(l_index) := OE_Line_ADJ_UTIL.G_SOURCE_SYSTEM_CODE;
779 	   END IF;
780 
781         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.benefit_qty, p_old_Line_Adj_rec.benefit_qty)
782 	   THEN
783             l_index := l_index + 1;
784             l_src_attr_tbl(l_index) := OE_Line_ADJ_UTIL.G_BENEFIT_QTY;
785 	   END IF;
786 
787         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.benefit_uom_code, p_old_Line_Adj_rec.benefit_uom_code)
788 	   THEN
789             l_index := l_index + 1;
790             l_src_attr_tbl(l_index) := OE_Line_ADJ_UTIL.G_BENEFIT_UOM_CODE;
791 	   END IF;
792 
793         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.print_on_invoice_flag, p_old_Line_Adj_rec.print_on_invoice_flag)
794 	   THEN
795             l_index := l_index + 1;
796             l_src_attr_tbl(l_index) := OE_Line_ADJ_UTIL.G_PRINT_ON_INVOICE_FLAG;
797 	   END IF;
798 
799         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.expiration_date, p_old_Line_Adj_rec.expiration_date)
800 	   THEN
801             l_index := l_index + 1;
802             l_src_attr_tbl(l_index) := OE_Line_ADJ_UTIL.G_EXPIRATION_DATE;
803 	   END IF;
804 
805         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.rebate_transaction_type_code, p_old_Line_Adj_rec.rebate_transaction_type_code)
806 	   THEN
807             l_index := l_index + 1;
808             l_src_attr_tbl(l_index) := OE_Line_ADJ_UTIL.G_REBATE_TRANSACTION_TYPE_CODE;
809 	   END IF;
810 
811         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.rebate_transaction_reference, p_old_Line_Adj_rec.rebate_transaction_reference)
812 	   THEN
813             l_index := l_index + 1;
814             l_src_attr_tbl(l_index) := OE_Line_ADJ_UTIL.G_REBATE_TRANSACTION_REFERENCE;
815 	   END IF;
816 
817         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.rebate_payment_system_code, p_old_Line_Adj_rec.rebate_payment_system_code)
818 	   THEN
819             l_index := l_index + 1;
820             l_src_attr_tbl(l_index) := OE_Line_ADJ_UTIL.G_REBATE_PAYMENT_SYSTEM_CODE;
821 	   END IF;
822 
823         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.redeemed_date, p_old_Line_Adj_rec.redeemed_date)
824 	   THEN
825             l_index := l_index + 1;
826             l_src_attr_tbl(l_index) := OE_Line_ADJ_UTIL.G_REDEEMED_DATE;
827 	   END IF;
828 
829         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.redeemed_flag, p_old_Line_Adj_rec.redeemed_flag)
830 	   THEN
831             l_index := l_index + 1;
832             l_src_attr_tbl(l_index) := OE_Line_ADJ_UTIL.G_REDEEMED_FLAG;
833 	   END IF;
834 
835         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.accrual_flag, p_old_Line_Adj_rec.accrual_flag)
836 	   THEN
837             l_index := l_index + 1;
838             l_src_attr_tbl(l_index) := OE_Line_ADJ_UTIL.G_ACCRUAL_FLAG;
839 	   END IF;
840 
841         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.range_break_quantity, p_old_Line_Adj_rec.range_break_quantity)
842 	   THEN
843             l_index := l_index + 1;
844             l_src_attr_tbl(l_index) := OE_Line_ADJ_UTIL.G_range_break_quantity;
845 	   END IF;
846 
847         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.accrual_conversion_rate, p_old_Line_Adj_rec.accrual_conversion_rate)
848 	   THEN
849             l_index := l_index + 1;
850             l_src_attr_tbl(l_index) := OE_Line_ADJ_UTIL.G_accrual_conversion_rate;
851 	   END IF;
852 
853         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.pricing_group_sequence, p_old_Line_Adj_rec.pricing_group_sequence)
854 	   THEN
855             l_index := l_index + 1;
856             l_src_attr_tbl(l_index) := OE_Line_ADJ_UTIL.G_pricing_group_sequence;
857 	   END IF;
858 
859         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.modifier_level_code, p_old_Line_Adj_rec.modifier_level_code)
860 	   THEN
861             l_index := l_index + 1;
862             l_src_attr_tbl(l_index) := OE_Line_ADJ_UTIL.G_modifier_level_code;
863 	   END IF;
864 
865         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.price_break_type_code, p_old_Line_Adj_rec.price_break_type_code)
866 	   THEN
867             l_index := l_index + 1;
868             l_src_attr_tbl(l_index) := OE_Line_ADJ_UTIL.G_price_break_type_code;
869 	   END IF;
870 
871         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.substitution_attribute, p_old_Line_Adj_rec.substitution_attribute)
872 	   THEN
873             l_index := l_index + 1;
874             l_src_attr_tbl(l_index) := OE_Line_ADJ_UTIL.G_substitution_attribute;
875 	   END IF;
876 
877         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.proration_type_code, p_old_Line_Adj_rec.proration_type_code)
878 	   THEN
879             l_index := l_index + 1;
880             l_src_attr_tbl(l_index) := OE_Line_ADJ_UTIL.G_proration_type_code;
881 	   END IF;
882 
883         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.credit_or_charge_flag, p_old_Line_Adj_rec.credit_or_charge_flag)
884 	   THEN
885             l_index := l_index + 1;
886             l_src_attr_tbl(l_index) := OE_Line_ADJ_UTIL.G_credit_or_charge_flag;
887 	   END IF;
888 
889         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.include_on_returns_flag, p_old_Line_Adj_rec.include_on_returns_flag)
890 	   THEN
891             l_index := l_index + 1;
892             l_src_attr_tbl(l_index) := OE_Line_ADJ_UTIL.G_include_on_returns_flag;
893 	   END IF;
894 
895         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.ac_context,p_old_Line_Adj_rec.ac_context)
896         THEN
897             l_index := l_index + 1;
898             l_src_attr_tbl(l_index) := OE_Line_ADJ_UTIL.G_AC_CONTEXT;
899         END IF;
900 
901         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.ac_attribute1,p_old_Line_Adj_rec.ac_attribute1)
902         THEN
903             l_index := l_index + 1;
904             l_src_attr_tbl(l_index) := OE_Line_ADJ_UTIL.G_AC_ATTRIBUTE1;
905         END IF;
906 
907         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.ac_attribute2,p_old_Line_Adj_rec.ac_attribute2)
908         THEN
909             l_index := l_index + 1;
910             l_src_attr_tbl(l_index) := OE_Line_ADJ_UTIL.G_AC_ATTRIBUTE2;
911         END IF;
912 
913         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.ac_attribute3,p_old_Line_Adj_rec.ac_attribute3)
914         THEN
915             l_index := l_index + 1;
916             l_src_attr_tbl(l_index) := OE_Line_ADJ_UTIL.G_AC_ATTRIBUTE3;
917         END IF;
918 
919         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.ac_attribute4,p_old_Line_Adj_rec.ac_attribute4)
920         THEN
921             l_index := l_index + 1;
922             l_src_attr_tbl(l_index) := OE_Line_ADJ_UTIL.G_AC_ATTRIBUTE4;
923         END IF;
924 
925         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.ac_attribute5,p_old_Line_Adj_rec.ac_attribute5)
926         THEN
927             l_index := l_index + 1;
928             l_src_attr_tbl(l_index) := OE_Line_ADJ_UTIL.G_AC_ATTRIBUTE5;
929         END IF;
930 
931         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.ac_attribute6,p_old_Line_Adj_rec.ac_attribute6)
932         THEN
933             l_index := l_index + 1;
934             l_src_attr_tbl(l_index) := OE_Line_ADJ_UTIL.G_AC_ATTRIBUTE6;
935         END IF;
936 
937         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.ac_attribute7,p_old_Line_Adj_rec.ac_attribute7)
938         THEN
939             l_index := l_index + 1;
940             l_src_attr_tbl(l_index) := OE_Line_ADJ_UTIL.G_AC_ATTRIBUTE7;
941         END IF;
942 
943         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.ac_attribute8,p_old_Line_Adj_rec.ac_attribute8)
944         THEN
945             l_index := l_index + 1;
946             l_src_attr_tbl(l_index) := OE_Line_ADJ_UTIL.G_AC_ATTRIBUTE8;
947         END IF;
948 
949         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.ac_attribute9,p_old_Line_Adj_rec.ac_attribute9)
950         THEN
951             l_index := l_index + 1;
952             l_src_attr_tbl(l_index) := OE_Line_ADJ_UTIL.G_AC_ATTRIBUTE9;
953         END IF;
954 
955         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.ac_attribute10,p_old_Line_Adj_rec.ac_attribute10)
956         THEN
957             l_index := l_index + 1;
958             l_src_attr_tbl(l_index) := OE_Line_ADJ_UTIL.G_AC_ATTRIBUTE10;
959         END IF;
960 
961         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.ac_attribute11,p_old_Line_Adj_rec.ac_attribute11)
962         THEN
963             l_index := l_index + 1;
964             l_src_attr_tbl(l_index) := OE_Line_ADJ_UTIL.G_AC_ATTRIBUTE11;
965         END IF;
966 
967         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.ac_attribute12,p_old_Line_Adj_rec.ac_attribute12)
968         THEN
969             l_index := l_index + 1;
970             l_src_attr_tbl(l_index) := OE_Line_ADJ_UTIL.G_AC_ATTRIBUTE12;
971         END IF;
972 
973         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.ac_attribute13,p_old_Line_Adj_rec.ac_attribute13)
974         THEN
975             l_index := l_index + 1;
976             l_src_attr_tbl(l_index) := OE_Line_ADJ_UTIL.G_AC_ATTRIBUTE13;
977         END IF;
978 
979         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.ac_attribute14,p_old_Line_Adj_rec.ac_attribute14)
980         THEN
981             l_index := l_index + 1;
982             l_src_attr_tbl(l_index) := OE_Line_ADJ_UTIL.G_AC_ATTRIBUTE14;
983         END IF;
984 
985         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.ac_attribute15,p_old_Line_Adj_rec.ac_attribute15)
986         THEN
987             l_index := l_index + 1;
988             l_src_attr_tbl(l_index) := OE_Line_ADJ_UTIL.G_AC_ATTRIBUTE15;
989         END IF;
990 
991         --uom begin
992         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.operand_per_pqty,p_old_Line_Adj_rec.operand_per_pqty)
993         THEN
994             l_index := l_index + 1;
995             l_src_attr_tbl(l_index) := OE_Line_ADJ_UTIL.G_OPERAND_PER_PQTY;
996         END IF;
997 
998         IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.adjusted_amount_per_pqty,p_old_Line_Adj_rec.adjusted_amount_per_pqty)
999         THEN
1000             l_index := l_index + 1;
1001             l_src_attr_tbl(l_index) := OE_Line_ADJ_UTIL.G_ADJUSTED_AMOUNT_PER_PQTY;
1002         END IF;
1003 
1004         --uom end
1005 
1006     ELSE
1007 
1008         l_index := l_index + 1;
1009         l_src_attr_tbl(l_index) := p_attr_id;
1010 
1011     END IF;
1012 
1013     If l_src_attr_tbl.COUNT <> 0 THEN
1014 
1015         OE_Dependencies.Mark_Dependent
1016         (p_entity_code     => OE_GLOBALS.G_ENTITY_LINE_ADJ,
1017         p_source_attr_tbl => l_src_attr_tbl,
1018         p_dep_attr_tbl    => l_dep_attr_tbl);
1019 
1020         FOR I IN 1..l_dep_attr_tbl.COUNT LOOP
1021 
1022             IF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_PRICE_ADJUSTMENT THEN
1023                 p_x_Line_Adj_rec.PRICE_ADJUSTMENT_ID := FND_API.G_MISS_NUM;
1024 
1025             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_ADJUSTED_AMOUNT THEN
1026                 p_x_Line_Adj_rec.ADJUSTED_AMOUNT := FND_API.G_MISS_NUM;
1027             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_PRICING_PHASE_ID THEN
1028                 p_x_Line_Adj_rec.PRICING_PHASE_ID := FND_API.G_MISS_NUM;
1029 
1030 
1031             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_CREATION_DATE THEN
1032                 p_x_Line_Adj_rec.CREATION_DATE := FND_API.G_MISS_DATE;
1033             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_CREATED_BY THEN
1034                 p_x_Line_Adj_rec.CREATED_BY := FND_API.G_MISS_NUM;
1035             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_LAST_UPDATE_DATE THEN
1036                 p_x_Line_Adj_rec.LAST_UPDATE_DATE := FND_API.G_MISS_DATE;
1037             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_LAST_UPDATED_BY THEN
1038                 p_x_Line_Adj_rec.LAST_UPDATED_BY := FND_API.G_MISS_NUM;
1039             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_LAST_UPDATE_LOGIN THEN
1040                 p_x_Line_Adj_rec.LAST_UPDATE_LOGIN := FND_API.G_MISS_NUM;
1041             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_PROGRAM_APPLICATION THEN
1042                 p_x_Line_Adj_rec.PROGRAM_APPLICATION_ID := FND_API.G_MISS_NUM;
1043             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_PROGRAM THEN
1044                 p_x_Line_Adj_rec.PROGRAM_ID := FND_API.G_MISS_NUM;
1045             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_PROGRAM_UPDATE_DATE THEN
1046                 p_x_Line_Adj_rec.PROGRAM_UPDATE_DATE := FND_API.G_MISS_DATE;
1047             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_REQUEST THEN
1048                 p_x_Line_Adj_rec.REQUEST_ID := FND_API.G_MISS_NUM;
1049             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_HEADER THEN
1050                 p_x_Line_Adj_rec.HEADER_ID := FND_API.G_MISS_NUM;
1051             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_DISCOUNT THEN
1052                 p_x_Line_Adj_rec.DISCOUNT_ID := FND_API.G_MISS_NUM;
1053             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_DISCOUNT_LINE THEN
1054                 p_x_Line_Adj_rec.DISCOUNT_LINE_ID := FND_API.G_MISS_NUM;
1055             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_AUTOMATIC THEN
1056                 p_x_Line_Adj_rec.AUTOMATIC_FLAG := FND_API.G_MISS_CHAR;
1057             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_PERCENT THEN
1058                 p_x_Line_Adj_rec.PERCENT := FND_API.G_MISS_NUM;
1059             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_LINE THEN
1060                 p_x_Line_Adj_rec.LINE_ID := FND_API.G_MISS_NUM;
1061             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_CONTEXT THEN
1062                 p_x_Line_Adj_rec.CONTEXT := FND_API.G_MISS_CHAR;
1063             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_ATTRIBUTE1 THEN
1064                 p_x_Line_Adj_rec.ATTRIBUTE1 := FND_API.G_MISS_CHAR;
1065             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_ATTRIBUTE2 THEN
1066                 p_x_Line_Adj_rec.ATTRIBUTE2 := FND_API.G_MISS_CHAR;
1067             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_ATTRIBUTE3 THEN
1068                 p_x_Line_Adj_rec.ATTRIBUTE3 := FND_API.G_MISS_CHAR;
1069             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_ATTRIBUTE4 THEN
1070                 p_x_Line_Adj_rec.ATTRIBUTE4 := FND_API.G_MISS_CHAR;
1071             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_ATTRIBUTE5 THEN
1072                 p_x_Line_Adj_rec.ATTRIBUTE5 := FND_API.G_MISS_CHAR;
1073             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_ATTRIBUTE6 THEN
1074                 p_x_Line_Adj_rec.ATTRIBUTE6 := FND_API.G_MISS_CHAR;
1075             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_ATTRIBUTE7 THEN
1076                 p_x_Line_Adj_rec.ATTRIBUTE7 := FND_API.G_MISS_CHAR;
1077             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_ATTRIBUTE8 THEN
1078                 p_x_Line_Adj_rec.ATTRIBUTE8 := FND_API.G_MISS_CHAR;
1079             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_ATTRIBUTE9 THEN
1080                 p_x_Line_Adj_rec.ATTRIBUTE9 := FND_API.G_MISS_CHAR;
1081             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_ATTRIBUTE10 THEN
1082                 p_x_Line_Adj_rec.ATTRIBUTE10 := FND_API.G_MISS_CHAR;
1083             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_ATTRIBUTE11 THEN
1084                 p_x_Line_Adj_rec.ATTRIBUTE11 := FND_API.G_MISS_CHAR;
1085             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_ATTRIBUTE12 THEN
1086                 p_x_Line_Adj_rec.ATTRIBUTE12 := FND_API.G_MISS_CHAR;
1087             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_ATTRIBUTE13 THEN
1088                 p_x_Line_Adj_rec.ATTRIBUTE13 := FND_API.G_MISS_CHAR;
1089             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_ATTRIBUTE14 THEN
1090                 p_x_Line_Adj_rec.ATTRIBUTE14 := FND_API.G_MISS_CHAR;
1091             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_ATTRIBUTE15 THEN
1092                 p_x_Line_Adj_rec.ATTRIBUTE15 := FND_API.G_MISS_CHAR;
1093 		  ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_COST_ID THEN
1094 			 p_x_Line_Adj_rec.COST_ID := FND_API.G_MISS_NUM;
1095 		  ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_TAX_CODE THEN
1096 			 p_x_Line_Adj_rec.TAX_CODE := FND_API.G_MISS_CHAR;
1097 		  ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_TAX_EXEMPT_FLAG THEN
1098 			 p_x_Line_Adj_rec.TAX_EXEMPT_FLAG := FND_API.G_MISS_CHAR;
1099 		  ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_TAX_EXEMPT_NUMBER THEN
1100 			 p_x_Line_Adj_rec.TAX_EXEMPT_NUMBER := FND_API.G_MISS_CHAR;
1101 		  ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_TAX_EXEMPT_REASON_CODE THEN
1102 			 p_x_Line_Adj_rec.TAX_EXEMPT_REASON_CODE := FND_API.G_MISS_CHAR;
1103 		  ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_PARENT_ADJUSTMENT_ID THEN
1104 			 p_x_Line_Adj_rec.PARENT_ADJUSTMENT_ID := FND_API.G_MISS_NUM;
1105 		  ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_INVOICED_FLAG THEN
1106 			 p_x_Line_Adj_rec.INVOICED_FLAG := FND_API.G_MISS_CHAR;
1107 		  ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_ESTIMATED_FLAG THEN
1108 			 p_x_Line_Adj_rec.ESTIMATED_FLAG := FND_API.G_MISS_CHAR;
1109 		  ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_INC_IN_SALES_PERFORMANCE THEN
1110 			 p_x_Line_Adj_rec.INC_IN_SALES_PERFORMANCE := FND_API.G_MISS_CHAR;
1111 		  ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_SPLIT_ACTION_CODE THEN
1112 			 p_x_Line_Adj_rec.SPLIT_ACTION_CODE := FND_API.G_MISS_CHAR;
1113 		  ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_CHARGE_TYPE_CODE THEN
1114 			 p_x_Line_Adj_rec.CHARGE_TYPE_CODE := FND_API.G_MISS_CHAR;
1115 		  ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_CHARGE_SUBTYPE_CODE THEN
1116 			 p_x_Line_Adj_rec.CHARGE_SUBTYPE_CODE := FND_API.G_MISS_CHAR;
1117 		  ELSIF l_dep_attr_tbl(I) = OE_Line_ADJ_UTIL.G_LIST_LINE_NO THEN
1118 			 p_x_Line_Adj_rec.LIST_LINE_NO := FND_API.G_MISS_CHAR;
1119 		  ELSIF l_dep_attr_tbl(I) = OE_Line_ADJ_UTIL.G_SOURCE_SYSTEM_CODE THEN
1120 			 p_x_Line_Adj_rec.SOURCE_SYSTEM_CODE := FND_API.G_MISS_CHAR;
1121 		  ELSIF l_dep_attr_tbl(I) = OE_Line_ADJ_UTIL.G_BENEFIT_QTY THEN
1122 			 p_x_Line_Adj_rec.BENEFIT_QTY := FND_API.G_MISS_NUM;
1123 		  ELSIF l_dep_attr_tbl(I) = OE_Line_ADJ_UTIL.G_BENEFIT_UOM_CODE THEN
1124 			 p_x_Line_Adj_rec.BENEFIT_UOM_CODE := FND_API.G_MISS_CHAR;
1125 		  ELSIF l_dep_attr_tbl(I) = OE_Line_ADJ_UTIL.G_PRINT_ON_INVOICE_FLAG THEN
1126 			 p_x_Line_Adj_rec.PRINT_ON_INVOICE_FLAG := FND_API.G_MISS_CHAR;
1127 		  ELSIF l_dep_attr_tbl(I) = OE_Line_ADJ_UTIL.G_EXPIRATION_DATE THEN
1128 			 p_x_Line_Adj_rec.EXPIRATION_DATE := FND_API.G_MISS_DATE;
1129 		  ELSIF l_dep_attr_tbl(I) = OE_Line_ADJ_UTIL.G_REBATE_TRANSACTION_TYPE_CODE THEN
1130 			 p_x_Line_Adj_rec.REBATE_TRANSACTION_TYPE_CODE := FND_API.G_MISS_CHAR;
1131 		  ELSIF l_dep_attr_tbl(I) = OE_Line_ADJ_UTIL.G_REBATE_TRANSACTION_REFERENCE THEN
1132 			 p_x_Line_Adj_rec.REBATE_TRANSACTION_REFERENCE := FND_API.G_MISS_CHAR;
1133 		  ELSIF l_dep_attr_tbl(I) = OE_Line_ADJ_UTIL.G_REBATE_PAYMENT_SYSTEM_CODE THEN
1134 			 p_x_Line_Adj_rec.REBATE_PAYMENT_SYSTEM_CODE := FND_API.G_MISS_CHAR;
1135 		  ELSIF l_dep_attr_tbl(I) = OE_Line_ADJ_UTIL.G_REDEEMED_DATE THEN
1136 			 p_x_Line_Adj_rec.REDEEMED_DATE := FND_API.G_MISS_DATE;
1137 		  ELSIF l_dep_attr_tbl(I) = OE_Line_ADJ_UTIL.G_REDEEMED_FLAG THEN
1138 			 p_x_Line_Adj_rec.REDEEMED_FLAG := FND_API.G_MISS_CHAR;
1139 		  ELSIF l_dep_attr_tbl(I) = OE_Line_ADJ_UTIL.G_ACCRUAL_FLAG THEN
1140 			 p_x_Line_Adj_rec.ACCRUAL_FLAG := FND_API.G_MISS_CHAR;
1141 		  ELSIF l_dep_attr_tbl(I) = OE_Line_ADJ_UTIL.G_range_break_quantity THEN
1142 			 p_x_Line_Adj_rec.range_break_quantity := FND_API.G_MISS_NUM;
1143 		  ELSIF l_dep_attr_tbl(I) = OE_Line_ADJ_UTIL.G_accrual_conversion_rate THEN
1144 			 p_x_Line_Adj_rec.accrual_conversion_rate := FND_API.G_MISS_NUM;
1145 		  ELSIF l_dep_attr_tbl(I) = OE_Line_ADJ_UTIL.G_pricing_group_sequence THEN
1146 			 p_x_Line_Adj_rec.pricing_group_sequence := FND_API.G_MISS_NUM;
1147 		  ELSIF l_dep_attr_tbl(I) = OE_Line_ADJ_UTIL.G_modifier_level_code THEN
1148 			 p_x_Line_Adj_rec.modifier_level_code := FND_API.G_MISS_CHAR;
1149 		  ELSIF l_dep_attr_tbl(I) = OE_Line_ADJ_UTIL.G_price_break_type_code THEN
1150 			 p_x_Line_Adj_rec.price_break_type_code := FND_API.G_MISS_CHAR;
1151 		  ELSIF l_dep_attr_tbl(I) = OE_Line_ADJ_UTIL.G_substitution_attribute THEN
1152 			 p_x_Line_Adj_rec.substitution_attribute := FND_API.G_MISS_CHAR;
1153 		  ELSIF l_dep_attr_tbl(I) = OE_Line_ADJ_UTIL.G_proration_type_code THEN
1154 			 p_x_Line_Adj_rec.proration_type_code := FND_API.G_MISS_CHAR;
1155 		  ELSIF l_dep_attr_tbl(I) = OE_Line_ADJ_UTIL.G_credit_or_charge_flag THEN
1156 			 p_x_Line_Adj_rec.credit_or_charge_flag := FND_API.G_MISS_CHAR;
1157 		  ELSIF l_dep_attr_tbl(I) = OE_Line_ADJ_UTIL.G_include_on_returns_flag THEN
1158 			 p_x_Line_Adj_rec.include_on_returns_flag := FND_API.G_MISS_CHAR;
1159 
1160             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_AC_CONTEXT THEN
1161                 p_x_LINE_Adj_rec.AC_CONTEXT := FND_API.G_MISS_CHAR;
1162             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_AC_ATTRIBUTE1 THEN
1163                 p_x_LINE_Adj_rec.AC_ATTRIBUTE1 := FND_API.G_MISS_CHAR;
1164             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_AC_ATTRIBUTE2 THEN
1165                 p_x_LINE_Adj_rec.AC_ATTRIBUTE2 := FND_API.G_MISS_CHAR;
1166             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_AC_ATTRIBUTE3 THEN
1167                 p_x_LINE_Adj_rec.AC_ATTRIBUTE3 := FND_API.G_MISS_CHAR;
1168             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_AC_ATTRIBUTE4 THEN
1169                 p_x_LINE_Adj_rec.AC_ATTRIBUTE4 := FND_API.G_MISS_CHAR;
1170             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_AC_ATTRIBUTE5 THEN
1171                 p_x_LINE_Adj_rec.AC_ATTRIBUTE5 := FND_API.G_MISS_CHAR;
1172             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_AC_ATTRIBUTE6 THEN
1173                 p_x_LINE_Adj_rec.AC_ATTRIBUTE6 := FND_API.G_MISS_CHAR;
1174             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_AC_ATTRIBUTE7 THEN
1175                 p_x_LINE_Adj_rec.AC_ATTRIBUTE7 := FND_API.G_MISS_CHAR;
1176             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_AC_ATTRIBUTE8 THEN
1177                 p_x_LINE_Adj_rec.AC_ATTRIBUTE8 := FND_API.G_MISS_CHAR;
1178             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_AC_ATTRIBUTE9 THEN
1179                 p_x_LINE_Adj_rec.AC_ATTRIBUTE9 := FND_API.G_MISS_CHAR;
1180             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_AC_ATTRIBUTE10 THEN
1181                 p_x_LINE_Adj_rec.AC_ATTRIBUTE10 := FND_API.G_MISS_CHAR;
1182             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_AC_ATTRIBUTE11 THEN
1183                 p_x_LINE_Adj_rec.AC_ATTRIBUTE11 := FND_API.G_MISS_CHAR;
1184             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_AC_ATTRIBUTE12 THEN
1185                 p_x_LINE_Adj_rec.AC_ATTRIBUTE12 := FND_API.G_MISS_CHAR;
1186             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_AC_ATTRIBUTE13 THEN
1187                 p_x_LINE_Adj_rec.AC_ATTRIBUTE13 := FND_API.G_MISS_CHAR;
1188             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_AC_ATTRIBUTE14 THEN
1189                 p_x_LINE_Adj_rec.AC_ATTRIBUTE14 := FND_API.G_MISS_CHAR;
1190             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_AC_ATTRIBUTE15 THEN
1191                 p_x_LINE_Adj_rec.AC_ATTRIBUTE15 := FND_API.G_MISS_CHAR;
1192             --uom begin
1193             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_OPERAND_PER_PQTY THEN
1194                 p_x_LINE_Adj_rec.OPERAND_PER_PQTY:=FND_API.G_MISS_NUM;
1195             ELSIF l_dep_attr_tbl(I) = OE_LINE_ADJ_UTIL.G_ADJUSTED_AMOUNT_PER_PQTY THEN
1196                 p_x_LINE_Adj_rec.ADJUSTED_AMOUNT_PER_PQTY:=FND_API.G_MISS_NUM;
1197             --uom end
1198             END IF;
1199         END LOOP;
1200     END IF;
1201 IF l_debug_level  > 0 THEN
1202     oe_debug_pub.add(  'LEAVING CLEAR_DEPENDENT_ATTR' ) ;
1203 END IF;
1204 END Clear_Dependent_Attr;
1205 
1206 
1207 PROCEDURE Clear_Dependent_Attr
1208 (   p_attr_id                       IN  NUMBER := FND_API.G_MISS_NUM
1209 ,   p_x_Line_Adj_rec                IN  out nocopy OE_Order_PUB.Line_Adj_Rec_Type
1210 ,   p_old_Line_Adj_rec              IN  OE_Order_PUB.Line_Adj_Rec_Type :=
1211                                         OE_Order_PUB.G_MISS_LINE_ADJ_REC
1212 )
1213 IS
1214 l_Line_Adj_rec                OE_AK_Line_PRCADJS_V%ROWTYPE;
1215 l_old_Line_Adj_rec            OE_AK_Line_PRCADJS_V%ROWTYPE ;
1216 l_initial_Line_Adj_rec        OE_AK_Line_PRCADJS_V%ROWTYPE;
1217 
1218 --
1219 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1220 --
1221 BEGIN
1222 
1223     --  Load out record
1224 IF l_debug_level  > 0 THEN
1225     oe_debug_pub.add(  'ENTERING CLEAR_DEPENDENT_ATTR' ) ;
1226 END IF;
1227  	API_Rec_To_Rowtype_Rec(p_x_Line_Adj_rec , l_Line_Adj_rec);
1228 	API_Rec_To_Rowtype_Rec(p_Old_Line_Adj_rec , l_Old_Line_Adj_rec);
1229 	l_Initial_Line_Adj_rec := l_Line_Adj_rec;
1230 
1231 	Clear_Dependent_Attr
1232 			(   p_attr_id                => p_attr_id
1233 			,   p_x_Line_Adj_rec         =>l_Line_Adj_rec
1234 			,   p_old_Line_Adj_rec       =>l_Old_Line_Adj_rec
1235 		--	,   x_Line_Adj_rec           =>l_Line_Adj_rec
1236 			);
1237 
1238 	Rowtype_Rec_To_API_Rec(l_Line_Adj_rec,p_x_Line_Adj_Rec);
1239 IF l_debug_level  > 0 THEN
1240     oe_debug_pub.add(  'LEAVING CLEAR_DEPENDENT_ATTR' ) ;
1241 END IF;
1242 END Clear_Dependent_Attr;
1243 
1244 --  Procedure Apply_Attribute_Changes
1245 
1246 PROCEDURE Apply_Attribute_Changes
1247 (   p_x_Line_Adj_rec                IN out nocopy  OE_Order_PUB.Line_Adj_Rec_Type
1248 ,   p_old_Line_Adj_rec              IN  OE_Order_PUB.Line_Adj_Rec_Type :=
1249                                         OE_Order_PUB.G_MISS_LINE_ADJ_REC
1250 --,   x_Line_Adj_rec                OUT OE_Order_PUB.Line_Adj_Rec_Type
1251 )
1252   IS
1253   l_return_status	VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
1254   l_price_flag		boolean := FALSE;
1255   l_calculate_commitment_flag	VARCHAR2(1) := 'N';
1256   l_class 		VARCHAR2(30);
1257   l_so_source_code	VARCHAR2(30);
1258   l_oe_installed_flag 	VARCHAR2(30);
1259   l_commitment_id	NUMBER;
1260   l_verify_payment_flag   VARCHAR2(30) := 'N';
1261   l_line_category_code	  VARCHAR2(30);
1262 
1263 --bug#5961160
1264 l_calling_action        VARCHAR2(30);
1265 l_header_rec            OE_Order_PUB.Header_Rec_Type;
1266 l_rule_defined          VARCHAR2(1);
1267 l_credit_check_rule_id  NUMBER;
1268 l_credit_check_rule_rec OE_CREDIT_CHECK_UTIL.OE_credit_rules_rec_type ;
1269 --
1270 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1271 --
1272 BEGIN
1273 
1274     --  Load out record
1275 
1276     --x_Line_Adj_rec := p_Line_Adj_rec;
1277 IF l_debug_level  > 0 THEN
1278     oe_debug_pub.add(  'ENTERING OE_LINE_ADJ_UTIL.APPLY ATTRIBUTE CHANGES' ) ;
1279 END IF;
1280     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.adjusted_amount,p_old_Line_Adj_rec.adjusted_amount)
1281     THEN
1282         NULL;
1283     END IF;
1284 
1285     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.adjusted_amount_per_pqty,p_old_Line_Adj_rec.adjusted_amount_per_pqty)
1286     THEN
1287         NULL;
1288     END IF;
1289 
1290     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.pricing_phase_id,p_old_Line_Adj_rec.pricing_phase_id)
1291     THEN
1292 	 		l_price_flag := TRUE;
1293     END IF;
1294 
1295     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.price_adjustment_id,p_old_Line_Adj_rec.price_adjustment_id)
1296     THEN
1297         NULL;
1298     END IF;
1299 
1300     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.creation_date,p_old_Line_Adj_rec.creation_date)
1301     THEN
1302         NULL;
1303     END IF;
1304 
1305     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.created_by,p_old_Line_Adj_rec.created_by)
1306     THEN
1307         NULL;
1308     END IF;
1309 
1310     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.last_update_date,p_old_Line_Adj_rec.last_update_date)
1311     THEN
1312         NULL;
1313     END IF;
1314 
1315     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.last_updated_by,p_old_Line_Adj_rec.last_updated_by)
1316     THEN
1317         NULL;
1318     END IF;
1319 
1320     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.last_update_login,p_old_Line_Adj_rec.last_update_login)
1321     THEN
1322         NULL;
1323     END IF;
1324 
1325     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.program_application_id,p_old_Line_Adj_rec.program_application_id)
1326     THEN
1327         NULL;
1328     END IF;
1329 
1330     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.program_id,p_old_Line_Adj_rec.program_id)
1331     THEN
1332         NULL;
1333     END IF;
1334 
1335     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.program_update_date,p_old_Line_Adj_rec.program_update_date)
1336     THEN
1337         NULL;
1338     END IF;
1339 
1340     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.request_id,p_old_Line_Adj_rec.request_id)
1341     THEN
1342         NULL;
1343     END IF;
1344 
1345     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.header_id,p_old_Line_Adj_rec.header_id)
1346     THEN
1347         NULL;
1348     END IF;
1349 
1350 
1351     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.discount_id,
1352 			    p_old_Line_Adj_rec.discount_id)
1353     THEN
1354 		Null;
1355     END IF;
1356 
1357     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.discount_line_id,
1358 			    p_old_Line_Adj_rec.discount_line_id)
1359     THEN
1360 		null;
1361     END IF;
1362 
1363     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.automatic_flag,p_old_Line_Adj_rec.automatic_flag)
1364     THEN
1365         NULL;
1366     END IF;
1367 
1368     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.percent,p_old_Line_Adj_rec.percent)
1369     THEN
1370         NULL;
1371     END IF;
1372 
1373     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.line_id,p_old_Line_Adj_rec.line_id)
1374     THEN
1375         NULL;
1376     END IF;
1377 
1378     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.context,p_old_Line_Adj_rec.context)
1379     THEN
1380         NULL;
1381     END IF;
1382 
1383     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.attribute1,p_old_Line_Adj_rec.attribute1)
1384     THEN
1385         NULL;
1386     END IF;
1387 
1388     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.attribute2,p_old_Line_Adj_rec.attribute2)
1389     THEN
1390         NULL;
1391     END IF;
1392 
1393     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.attribute3,p_old_Line_Adj_rec.attribute3)
1394     THEN
1395         NULL;
1396     END IF;
1397 
1398     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.attribute4,p_old_Line_Adj_rec.attribute4)
1399     THEN
1400         NULL;
1401     END IF;
1402 
1403     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.attribute5,p_old_Line_Adj_rec.attribute5)
1404     THEN
1405         NULL;
1406     END IF;
1407 
1408     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.attribute6,p_old_Line_Adj_rec.attribute6)
1409     THEN
1410         NULL;
1411     END IF;
1412 
1413     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.attribute7,p_old_Line_Adj_rec.attribute7)
1414     THEN
1415         NULL;
1416     END IF;
1417 
1418     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.attribute8,p_old_Line_Adj_rec.attribute8)
1419     THEN
1420         NULL;
1421     END IF;
1422 
1423     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.attribute9,p_old_Line_Adj_rec.attribute9)
1424     THEN
1425         NULL;
1426     END IF;
1427 
1428     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.attribute10,p_old_Line_Adj_rec.attribute10)
1429     THEN
1430         NULL;
1431     END IF;
1432 
1433     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.attribute11,p_old_Line_Adj_rec.attribute11)
1434     THEN
1435         NULL;
1436     END IF;
1437 
1438     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.attribute12,p_old_Line_Adj_rec.attribute12)
1439     THEN
1440         NULL;
1441     END IF;
1442 
1443     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.attribute13,p_old_Line_Adj_rec.attribute13)
1444     THEN
1445         NULL;
1446     END IF;
1447 
1448     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.attribute14,p_old_Line_Adj_rec.attribute14)
1449     THEN
1450         NULL;
1451     END IF;
1452 
1453     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.attribute15,p_old_Line_Adj_rec.attribute15)
1454     THEN
1455         NULL;
1456     END IF;
1457 
1458 	IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.list_header_id,
1459 				  p_old_Line_Adj_rec.list_header_id)
1460      THEN
1461 	  NULL;
1462 	END IF;
1463 
1464 	IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.list_line_id,
1465 			p_old_Line_Adj_rec.list_line_id)
1466      THEN
1467 	  NULL;
1468      END IF;
1469 
1470     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.list_line_type_code,
1471     p_old_Line_Adj_rec.list_line_type_code)
1472 	   THEN
1473 		 NULL;
1474 	END IF;
1475 
1476     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.modifier_mechanism_type_code,
1477     p_old_Line_Adj_rec.modifier_mechanism_type_code)
1478      THEN
1479 		 NULL;
1480 	END IF;
1481 
1482     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.update_allowed,
1483 		p_old_Line_Adj_rec.update_allowed)
1484     THEN
1485 		 NULL;
1486 	END IF;
1487 
1488     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.updated_flag,
1489 		p_old_Line_Adj_rec.updated_flag)
1490 	 THEN
1491 	 	l_price_flag := TRUE;
1492 	  IF p_x_line_Adj_rec.ESTIMATED_FLAG = 'Y' AND
1493 		p_x_line_Adj_rec.updated_flag = 'Y'
1494 	  THEN
1495 		 p_x_line_adj_rec.estimated_flag := 'N';
1496 	  END IF;
1497 	  IF p_x_line_Adj_rec.ESTIMATED_FLAG = 'N' AND
1498 		p_x_line_Adj_rec.updated_flag = 'N'
1499 	  THEN
1500 		 p_x_line_adj_rec.estimated_flag := 'Y';
1501 	  END IF;
1502 	END IF;
1503 
1504     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.applied_flag,
1505 		p_old_Line_Adj_rec.applied_flag)
1506     THEN
1507 	 	l_price_flag := TRUE;
1508                 --added by ksurendr
1509 		--bug 4060297
1510 		--Delayed request to compute margin
1511                 oe_header_Adj_util.log_request_for_margin(p_x_Line_Adj_rec.header_id);
1512     END IF;
1513 
1514     -- added by lkxu: populate the change reason when manual adjustment
1515     -- is applied by user.
1516     IF p_x_Line_Adj_rec.applied_flag = 'Y'
1517 	  AND p_x_Line_Adj_rec.automatic_flag = 'N'
1518 	  AND p_x_Line_Adj_rec.change_reason_code IS NULL THEN
1519          BEGIN
1520 	    SELECT lookup_code, meaning
1521 	    INTO   p_x_Line_Adj_rec.change_reason_code,
1522 		      p_x_Line_Adj_rec.change_reason_text
1523 	    FROM   oe_lookups
1524 	    WHERE  lookup_type = 'CHANGE_CODE'
1525 	    AND    lookup_code = 'MANUAL';
1526 
1527 	    EXCEPTION WHEN NO_DATA_FOUND THEN
1528 		 null;
1529          END;
1530     END IF;
1531 
1532    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.modified_from,
1533    p_old_Line_Adj_rec.modified_from)
1534    THEN
1535 	 NULL;
1536    END IF;
1537 
1538    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.modified_to,
1539 		p_old_Line_Adj_rec.modified_to)
1540    THEN
1541 	 NULL;
1542    END IF;
1543 
1544 
1545     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.change_reason_code,
1546 		p_old_Line_Adj_rec.change_reason_code)
1547 	THEN
1548 	   NULL;
1549 	END IF;
1550 
1551    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.change_reason_text,
1552 		p_old_Line_Adj_rec.change_reason_text)
1553      THEN
1554 	 NULL;
1555 	END IF;
1556 
1557    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.operand,
1558 		p_old_Line_Adj_rec.operand)
1559      THEN
1560 	 	l_price_flag := TRUE;
1561                 l_calculate_commitment_flag := 'Y';
1562 
1563                 --bug 4060297
1564                 oe_header_Adj_util.log_request_for_margin(p_x_Line_Adj_rec.header_id);
1565 
1566         -- fixed bug 3271297, to log Verify Payment delayed request
1567         -- when freight charge changes.
1568         IF p_x_Line_Adj_rec.list_line_type_code='FREIGHT_CHARGE' THEN
1569                 l_verify_payment_flag := 'Y';
1570         END IF;
1571    END IF;
1572 
1573    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.operand_per_pqty,
1574 		p_old_Line_Adj_rec.operand_per_pqty)
1575      THEN
1576 	 	l_price_flag := TRUE;
1577 	END IF;
1578 
1579    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.arithmetic_operator,
1580 		p_old_Line_Adj_rec.arithmetic_operator)
1581      THEN
1582 	 	l_price_flag := TRUE;
1583    END IF;
1584 
1585    IF NOT OE_GLOBALS.Equal(p_x_line_Adj_rec.COST_ID, p_old_Line_Adj_rec.COST_ID)
1586    THEN
1587 	  NULL;
1588    END IF;
1589 
1590    IF NOT OE_GLOBALS.Equal(p_x_line_Adj_rec.TAX_CODE, p_old_Line_Adj_rec.TAX_CODE)
1591    THEN
1592 	  NULL;
1593    END IF;
1594 
1595    IF NOT OE_GLOBALS.Equal(p_x_line_Adj_rec.TAX_EXEMPT_FLAG, p_old_Line_Adj_rec.TAX_EXEMPT_FLAG)
1596    THEN
1597 	  NULL;
1598    END IF;
1599 
1600    IF NOT OE_GLOBALS.Equal(p_x_line_Adj_rec.TAX_EXEMPT_NUMBER, p_old_Line_Adj_rec.TAX_EXEMPT_NUMBER)
1601    THEN
1602 	  NULL;
1603    END IF;
1604 
1605    IF NOT OE_GLOBALS.Equal(p_x_line_Adj_rec.TAX_EXEMPT_REASON_CODE, p_old_Line_Adj_rec.TAX_EXEMPT_REASON_CODE)
1606    THEN
1607 	  NULL;
1608    END IF;
1609 
1610    IF NOT OE_GLOBALS.Equal(p_x_line_Adj_rec.PARENT_ADJUSTMENT_ID, p_old_Line_Adj_rec.PARENT_ADJUSTMENT_ID)
1611    THEN
1612 	  NULL;
1613    END IF;
1614 
1615    IF NOT OE_GLOBALS.Equal(p_x_line_Adj_rec.INVOICED_FLAG, p_old_Line_Adj_rec.INVOICED_FLAG)
1616    THEN
1617 	  NULL;
1618    END IF;
1619 
1620    IF NOT OE_GLOBALS.Equal(p_x_line_Adj_rec.ESTIMATED_FLAG, p_old_Line_Adj_rec.ESTIMATED_FLAG)
1621    THEN
1622 	  NULL;
1623    END IF;
1624 
1625    IF NOT OE_GLOBALS.Equal(p_x_line_Adj_rec.INC_IN_SALES_PERFORMANCE, p_old_Line_Adj_rec.INC_IN_SALES_PERFORMANCE)
1626    THEN
1627 	  NULL;
1628    END IF;
1629 
1630    IF NOT OE_GLOBALS.Equal(p_x_line_Adj_rec.SPLIT_ACTION_CODE, p_old_Line_Adj_rec.SPLIT_ACTION_CODE)
1631    THEN
1632 	  NULL;
1633    END IF;
1634 
1635    IF NOT OE_GLOBALS.Equal(p_x_line_Adj_rec.CHARGE_TYPE_CODE, p_old_Line_Adj_rec.CHARGE_TYPE_CODE)
1636    THEN
1637 	  NULL;
1638    END IF;
1639 
1640    IF NOT OE_GLOBALS.Equal(p_x_line_Adj_rec.CHARGE_SUBTYPE_CODE, p_old_Line_Adj_rec.CHARGE_SUBTYPE_CODE)
1641    THEN
1642 	  NULL;
1643    END IF;
1644 
1645    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.list_line_no, p_old_Line_Adj_rec.list_line_no)
1646    THEN
1647           NULL;
1648    END IF;
1649 
1650    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.source_system_code, p_old_Line_Adj_rec.source_system_code)
1651    THEN
1652           NULL;
1653    END IF;
1654 
1655    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.benefit_qty, p_old_Line_Adj_rec.benefit_qty)
1656    THEN
1657           NULL;
1658    END IF;
1659 
1660    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.benefit_uom_code, p_old_Line_Adj_rec.benefit_uom_code)
1661    THEN
1662           NULL;
1663    END IF;
1664 
1665    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.print_on_invoice_flag, p_old_Line_Adj_rec.print_on_invoice_flag)
1666    THEN
1667           NULL;
1668    END IF;
1669 
1670    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.expiration_date, p_old_Line_Adj_rec.expiration_date)
1671    THEN
1672           NULL;
1673    END IF;
1674 
1675    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.rebate_transaction_type_code, p_old_Line_Adj_rec.rebate_transaction_type_code)
1676    THEN
1677           NULL;
1678    END IF;
1679 
1680    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.rebate_transaction_reference, p_old_Line_Adj_rec.rebate_transaction_reference)
1681    THEN
1682           NULL;
1683    END IF;
1684 
1685    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.rebate_payment_system_code, p_old_Line_Adj_rec.rebate_payment_system_code)
1686    THEN
1687           NULL;
1688    END IF;
1689 
1690    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.redeemed_date, p_old_Line_Adj_rec.redeemed_date)
1691    THEN
1692           NULL;
1693    END IF;
1694 
1695    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.redeemed_flag, p_old_Line_Adj_rec.redeemed_flag)
1696    THEN
1697           NULL;
1698    END IF;
1699 
1700    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.accrual_flag, p_old_Line_Adj_rec.accrual_flag)
1701    THEN
1702           NULL;
1703    END IF;
1704 
1705    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.range_break_quantity, p_old_Line_Adj_rec.range_break_quantity)
1706    THEN
1707           NULL;
1708    END IF;
1709 
1710    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.accrual_conversion_rate, p_old_Line_Adj_rec.accrual_conversion_rate)
1711    THEN
1712           NULL;
1713    END IF;
1714 
1715    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.pricing_group_sequence, p_old_Line_Adj_rec.pricing_group_sequence)
1716    THEN
1717 	 		l_price_flag := TRUE;
1718    END IF;
1719 
1720    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.modifier_level_code, p_old_Line_Adj_rec.modifier_level_code)
1721    THEN
1722           NULL;
1723    END IF;
1724 
1725    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.price_break_type_code, p_old_Line_Adj_rec.price_break_type_code)
1726    THEN
1727           NULL;
1728    END IF;
1729 
1730    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.substitution_attribute, p_old_Line_Adj_rec.substitution_attribute)
1731    THEN
1732           NULL;
1733    END IF;
1734 
1735    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.proration_type_code, p_old_Line_Adj_rec.proration_type_code)
1736    THEN
1737           NULL;
1738    END IF;
1739 
1740    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.credit_or_charge_flag, p_old_Line_Adj_rec.credit_or_charge_flag)
1741    THEN
1742           NULL;
1743    END IF;
1744 
1745    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.include_on_returns_flag, p_old_Line_Adj_rec.include_on_returns_flag)
1746    THEN
1747           NULL;
1748    END IF;
1749 
1750    IF NOT OE_GLOBALS.Equal(p_x_line_Adj_rec.INVOICED_AMOUNT, p_old_Line_Adj_rec.INVOICED_AMOUNT)
1751    THEN
1752 	  NULL;
1753    END IF;
1754 
1755        IF l_debug_level  > 0 THEN
1756            oe_debug_pub.add(  'RECURSION_MODE'||OE_GLOBALS.G_RECURSION_MODE||' PRICING:'||OE_GLOBALS.G_PRICING_RECURSION , 1 ) ;
1757            oe_debug_pub.add(  'HEADER_ID'||P_X_LINE_ADJ_REC.HEADER_ID , 1 ) ;
1758            oe_debug_pub.add(  'LINE_ID'||P_X_LINE_ADJ_REC.LINE_ID , 1 ) ;
1759        END IF;
1760        if (l_price_flag) then
1761          IF l_debug_level  > 0 THEN
1762              oe_debug_pub.add(  'PRICE FLAG:Y' , 1 ) ;
1763          END IF;
1764        else
1765          IF l_debug_level  > 0 THEN
1766              oe_debug_pub.add(  'PRICE FLAG:N' , 1 ) ;
1767          END IF;
1768        end if;
1769 
1770         -- bug 2378843: don't log request when g_pricing_recursion is set
1771     	IF l_price_flag and OE_Globals.G_RECURSION_MODE <> 'Y' AND
1772                              OE_GLOBALS.G_PRICING_RECURSION <> 'Y' AND
1773 	   p_x_line_adj_rec.list_line_type_code NOT IN ('TAX','COST')
1774 	Then
1775 
1776         IF (p_x_Line_adj_rec.line_id IS NOT NULL) THEN
1777 
1778 	 /* 1905650
1779 	    G_PRICE_ADJ request should be logged against LINE entity,
1780 	    not against LINE_ADJ entity
1781 	 */
1782          If OE_GLOBALS.G_UI_FLAG and nvl(p_x_Line_adj_rec.automatic_flag,'Y') = 'N' Then
1783             --we need to log different delayed request for manual adjustments.
1784             IF l_debug_level  > 0 THEN
1785                 oe_debug_pub.add(  ' UI FLAG IS TRUE , LOGGING UI DELAYED REQUEST FOR ADJ' ) ;
1786             END IF;
1787             oe_delayed_requests_pvt.log_request(
1788 	    p_entity_code                => OE_GLOBALS.G_ENTITY_LINE,
1789 	    p_entity_id                     => p_x_Line_adj_rec.Line_id,
1790 	    p_requesting_entity_code => OE_GLOBALS.G_ENTITY_LINE_ADJ,
1791 	    p_requesting_entity_id   => p_x_Line_adj_rec.Line_id,
1792 	    p_request_type           => OE_GLOBALS.G_PRICE_ADJ,
1793             p_param1                 => 'UI',
1794 	    x_return_status          => l_return_status);
1795          Else
1796 	        oe_delayed_requests_pvt.log_request(
1797 		p_entity_code    	     => OE_GLOBALS.G_ENTITY_LINE,
1798 		p_entity_id      		=> p_x_Line_adj_rec.Line_id,
1799 		p_requesting_entity_code => OE_GLOBALS.G_ENTITY_LINE_ADJ,
1800 		p_requesting_entity_id   => p_x_Line_adj_rec.Line_id,
1801 		p_request_type   		=> OE_GLOBALS.G_PRICE_ADJ,
1802 		x_return_status  		=> l_return_status);
1803          End If;
1804 		 -- sol_ord_er #16014165
1805 			oe_delayed_requests_pvt.log_request(
1806 							 p_entity_code            => OE_GLOBALS.G_ENTITY_LINE,
1807 							 p_entity_id              => p_x_Line_adj_rec.line_id,
1808 							 p_requesting_entity_code => OE_GLOBALS.G_ENTITY_LINE_ADJ,
1809 							 p_requesting_entity_id   => p_x_Line_adj_rec.line_id,
1810 							 p_request_type           => OE_GLOBALS.G_SERVICE_FIRST_PERIOD_BILL,
1811 							 p_request_unique_key1 => 'LINE',
1812 							 p_param1                 => p_x_Line_adj_rec.line_id,
1813 							 x_return_status          => l_return_status);
1814 		 -- sol_ord_er #16014165 end
1815         ELSE
1816 	        oe_delayed_requests_pvt.log_request(
1817 		p_entity_code    	     => OE_GLOBALS.G_ENTITY_ALL,
1818 		p_entity_id      		=> p_x_Line_adj_rec.header_id,
1819 		p_requesting_entity_code => OE_GLOBALS.G_ENTITY_HEADER_ADJ,
1820 		p_requesting_entity_id   => p_x_Line_adj_rec.header_id,
1821 		p_request_type   		=> OE_GLOBALS.G_PRICE_ADJ,
1822 		x_return_status  		=> l_return_status);
1823 		-- sol_ord_er #16014165
1824 			oe_delayed_requests_pvt.log_request(
1825 								 p_entity_code            => OE_GLOBALS.G_ENTITY_ALL,
1826 								 p_entity_id              => p_x_Line_adj_rec.Header_Id,
1827 								 p_requesting_entity_code => OE_GLOBALS.G_ENTITY_HEADER_ADJ,
1828 								 p_requesting_entity_id   => p_x_Line_adj_rec.Header_Id,
1829 								 p_request_type           => OE_GLOBALS.G_SERVICE_FIRST_PERIOD_BILL,
1830 								 p_request_unique_key1 => 'ORDER',
1831 								 p_param1                 => p_x_Line_adj_rec.Header_Id,
1832 								 x_return_status          => l_return_status);
1833 		-- sol_ord_er #16014165 end
1834         END IF;
1835 	  l_price_flag := FALSE;
1836   End If;
1837 
1838   IF l_calculate_commitment_flag = 'Y' THEN
1839     l_class := NULL;
1840     l_so_source_code := FND_PROFILE.VALUE('ONT_SOURCE_CODE');
1841     l_oe_installed_flag := 'I';
1842     BEGIN
1843       SELECT commitment_id
1844       INTO   l_commitment_id
1845       FROM   oe_order_lines
1846       WHERE  line_id = p_old_line_adj_rec.line_id;
1847 
1848     EXCEPTION
1849       WHEN NO_DATA_FOUND THEN
1850         NULL;
1851     END;
1852 
1853     IF l_commitment_id IS NOT NULL
1854        AND OE_Commitment_Pvt.Do_Commitment_Sequencing  THEN
1855       oe_globals.g_commitment_balance := ARP_BAL_UTIL.GET_COMMITMENT_BALANCE(
1856                  l_commitment_id
1857                 ,l_class
1858                 ,l_so_source_code
1859                 ,l_oe_installed_flag );
1860 
1861 	OE_Delayed_Requests_Pvt.Log_Request(
1862 	p_entity_code			=>	OE_GLOBALS.G_ENTITY_LINE,
1863 	p_entity_id			=>	p_x_line_adj_rec.line_id,
1864 	p_requesting_entity_code	=>	OE_GLOBALS.G_ENTITY_LINE,
1865 	p_requesting_entity_id  	=>	p_x_line_adj_rec.line_id,
1866 	p_request_type			=>	OE_GLOBALS.G_CALCULATE_COMMITMENT,
1867 	x_return_status			=>	l_return_status);
1868     END IF;
1869   END IF;
1870 
1871    IF (l_verify_payment_flag = 'Y') THEN
1872            --Start bug# 5961160
1873            -- Query the Order Header
1874            IF l_debug_level  > 0 THEN
1875               oe_debug_pub.add( 'OEXULADB: BEFORE QUERYING HEADER ID : '|| p_x_line_adj_rec.header_id ) ;
1876            END IF;
1877 
1878            OE_Header_UTIL.Query_Row
1879              (p_header_id               => p_x_line_adj_rec.header_id
1880              ,x_header_rec              => l_header_rec
1881               );
1882 
1883            IF l_debug_level  > 0
1884            THEN
1885               OE_DEBUG_PUB.ADD('after query header ');
1886               OE_DEBUG_PUB.ADD(' ');
1887               OE_DEBUG_PUB.ADD('================================================');
1888               OE_DEBUG_PUB.ADD('Header ID           = '|| l_header_rec.header_id );
1889               OE_DEBUG_PUB.ADD('order_category_code = '|| l_header_rec.order_category_code );
1890               OE_DEBUG_PUB.ADD('Booked flag         = '|| l_header_rec.booked_flag );
1891               OE_DEBUG_PUB.ADD('Order number        = '|| l_header_rec.order_number );
1892               OE_DEBUG_PUB.ADD('payment_term_id     = '|| l_header_rec.payment_term_id );
1893               OE_DEBUG_PUB.ADD('order_type_id       = '|| l_header_rec.order_type_id );
1894               OE_DEBUG_PUB.ADD(' ');
1895               OE_DEBUG_PUB.ADD('================================================');
1896            END IF;
1897 
1898            -- Call Which_Rule function to find out Which Rule to Apply
1899            IF l_debug_level  > 0 THEN
1900               oe_debug_pub.add( 'OEXULADB: BEFORE CALLING WHICH RULE ' ) ;
1901            END IF;
1902 
1903            l_calling_action := OE_Verify_Payment_PUB.Which_Rule(p_header_id => p_x_line_adj_rec.header_id);
1904 
1905            IF l_debug_level  > 0 THEN
1906               oe_debug_pub.add( 'OEXULADB: RULE TO BE USED IS : '|| l_calling_action ) ;
1907            END IF;
1908 
1909            IF l_debug_level  > 0 THEN
1910               oe_debug_pub.add( 'OEXULADB: BEFORE CHECKING IF THE RULE IS DEFINED OR NOT' ) ;
1911            END IF;
1912 
1913            l_rule_defined := OE_Verify_Payment_PUB.Check_Rule_Defined
1914                                 ( p_header_rec     => l_header_rec
1915                                 , p_calling_action => l_calling_action
1916                                 ) ;
1917 
1918            IF l_debug_level  > 0 THEN
1919               oe_debug_pub.add( 'OEXULADB: OUT OF RULE DEFINED : '|| l_rule_defined);
1920            END IF;
1921 
1922            IF l_rule_defined = 'Y' THEN
1923               l_credit_check_rule_id := NULL ;
1924 
1925               -- Check the Rule to Apply
1926               IF l_debug_level  > 0 THEN
1927                  oe_debug_pub.add( 'Before L_CREDIT_CHECK_RULE_ID => '|| l_credit_check_rule_id ) ;
1928               END IF;
1929 
1930               OE_CREDIT_CHECK_UTIL.Get_Credit_Check_Rule_ID
1931                ( p_calling_action        => l_calling_action
1932                , p_order_type_id         => l_header_rec.order_type_id
1933                , x_credit_rule_id        => l_credit_check_rule_id
1934                 );
1935 
1936               IF l_debug_level  > 0 THEN
1937                  oe_debug_pub.add( 'After L_CREDIT_CHECK_RULE_ID => '|| l_credit_check_rule_id ) ;
1938               END IF;
1939 
1940               OE_CREDIT_CHECK_UTIL.GET_credit_check_rule
1941                ( p_credit_check_rule_id   => l_credit_check_rule_id
1942                , x_credit_check_rules_rec => l_credit_check_rule_rec
1943                 );
1944 
1945               IF l_debug_level  > 0 THEN
1946                  oe_debug_pub.add( 'OEXULADB: INCL FREIGHT CHARGE FLAG : '|| l_credit_check_rule_rec.incl_freight_charges_flag);
1947               END IF;
1948 
1949               IF NVL(l_credit_check_rule_rec.incl_freight_charges_flag,'N') = 'Y' THEN
1950                  BEGIN
1951                    SELECT line_category_code
1952                    INTO   l_line_category_code
1953                    FROM   oe_order_lines_all
1954                    WHERE  line_id = p_x_line_adj_rec.line_id;
1955                  EXCEPTION WHEN NO_DATA_FOUND THEN
1956                    null;
1957                  END;
1958                 IF l_line_category_code <> 'RETURN' THEN
1959                     oe_debug_pub.ADD('OEXULADB: Logging delayed request for Verify Payment');
1960                     OE_delayed_requests_Pvt.log_request
1961                      (p_entity_code            => OE_GLOBALS.G_ENTITY_ALL,
1962                       p_entity_id              => p_x_line_adj_rec.header_id,
1963                       p_requesting_entity_code => OE_GLOBALS.G_ENTITY_LINE,
1964                       p_requesting_entity_id   => p_x_line_adj_rec.line_id,
1965                       p_request_type           => OE_GLOBALS.G_VERIFY_PAYMENT,
1966                       x_return_status          => l_return_status);
1967                  END IF;
1968 	        --CC Reversal ER#16014135 Start
1969 	        ELSIF OE_VERIFY_PAYMENT_PUB.Get_CC_Rev_Reauth_Code( p_x_line_adj_rec.header_id) IS NOT NULL THEN
1970                 BEGIN
1971                   SELECT line_category_code
1972                   INTO   l_line_category_code
1973                   FROM   oe_order_lines_all
1974                   WHERE  line_id = p_x_line_adj_rec.line_id;
1975                 EXCEPTION WHEN NO_DATA_FOUND THEN
1976                   null;
1977                 END;
1978                 IF l_line_category_code <> 'RETURN' THEN
1979                   IF l_debug_level  > 0 THEN
1980                     oe_debug_pub.ADD('OEXULADB: Logging delayed request for Verify Payment CC Reversal',5);
1981                   END IF;
1982 	          oe_verify_payment_pub.G_credit_check_flag := 'N' ;
1983 
1984                   OE_delayed_requests_Pvt.log_request
1985                    (p_entity_code            => OE_GLOBALS.G_ENTITY_ALL,
1986                     p_entity_id              => p_x_line_adj_rec.header_id,
1987                     p_requesting_entity_code => OE_GLOBALS.G_ENTITY_LINE,
1988                     p_requesting_entity_id   => p_x_line_adj_rec.line_id,
1989                     p_request_type           => OE_GLOBALS.G_VERIFY_PAYMENT,
1990                     x_return_status          => l_return_status);
1991                 END IF;
1992 		--CC Reversal ER#16014135 End
1993               END IF;
1994 			--CC Reversal ER#16014135 Start
1995 			--ELSEIF for rule defined
1996 			ELSIF OE_VERIFY_PAYMENT_PUB.Get_CC_Rev_Reauth_Code( p_x_line_adj_rec.header_id) IS NOT NULL THEN
1997 			-- if no rule defined .. Need to log verify payment request for processing authorization.
1998 			    IF l_debug_level  > 0 THEN
1999                   oe_debug_pub.ADD('OEXULADB: Logging delayed request for Verify Payment CC Reversal when rule not exists',5);
2000                 END IF;
2001 					BEGIN
2002 					  SELECT line_category_code
2003 					  INTO   l_line_category_code
2004 					  FROM   oe_order_lines_all
2005 					  WHERE  line_id = p_x_line_adj_rec.line_id;
2006 					EXCEPTION WHEN NO_DATA_FOUND THEN
2007 					  null;
2008 					END;
2009 					IF l_debug_level  > 0 THEN
2010 					oe_debug_pub.ADD('OEXULADB:l_line_category_code '||l_line_category_code);
2011 					END IF;
2012 					IF l_line_category_code <> 'RETURN' THEN
2013 						  IF l_debug_level  > 0 THEN
2014 							oe_debug_pub.ADD('OEXULADB: Logging delayed request for Verify Payment CC Reversal',5);
2015 						  END IF;
2016 					  oe_verify_payment_pub.G_credit_check_flag := 'N' ;
2017 						  OE_delayed_requests_Pvt.log_request
2018 						   (p_entity_code            => OE_GLOBALS.G_ENTITY_ALL,
2019 							p_entity_id              => p_x_line_adj_rec.header_id,
2020 							p_requesting_entity_code => OE_GLOBALS.G_ENTITY_LINE,
2021 							p_requesting_entity_id   => p_x_line_adj_rec.line_id,
2022 							p_request_type           => OE_GLOBALS.G_VERIFY_PAYMENT,
2023 							x_return_status          => l_return_status);
2024 				    END IF;
2025 		--CC Reversal ER#16014135 End
2026            END IF;
2027            --End bug#5961160
2028      END IF;
2029 
2030   IF l_return_status <> FND_API.G_RET_STS_SUCCESS
2031   THEN
2032 	     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2033   END IF;
2034 IF l_debug_level  > 0 THEN
2035     oe_debug_pub.add(  'OE_LINE_ADJ_UTIL.LEAVING APPLY_ATTRIBUTE_CHANGES' ) ;
2036 END IF;
2037 END Apply_Attribute_Changes;
2038 
2039 --  Procedure Complete_Record
2040 
2041 PROCEDURE Complete_Record
2042 (   p_x_Line_Adj_rec                IN OUT NOCOPY OE_Order_PUB.Line_Adj_Rec_Type
2043 ,   p_old_Line_Adj_rec              IN  OE_Order_PUB.Line_Adj_Rec_Type
2044 )
2045 IS
2046 l_Line_Adj_rec                OE_Order_PUB.Line_Adj_Rec_Type := p_x_Line_Adj_rec;
2047 BEGIN
2048 
2049     IF l_Line_Adj_rec.adjusted_amount = FND_API.G_MISS_NUM THEN
2050         l_Line_Adj_rec.adjusted_amount := p_old_Line_Adj_rec.adjusted_amount;
2051     END IF;
2052 
2053     IF l_Line_Adj_rec.pricing_phase_id = FND_API.G_MISS_NUM THEN
2054         l_Line_Adj_rec.pricing_phase_id := p_old_Line_Adj_rec.pricing_phase_id;
2055     END IF;
2056 
2057 
2058 
2059     IF l_Line_Adj_rec.price_adjustment_id = FND_API.G_MISS_NUM THEN
2060         l_Line_Adj_rec.price_adjustment_id := p_old_Line_Adj_rec.price_adjustment_id;
2061     END IF;
2062 
2063     IF l_Line_Adj_rec.creation_date = FND_API.G_MISS_DATE THEN
2064         l_Line_Adj_rec.creation_date := p_old_Line_Adj_rec.creation_date;
2065     END IF;
2066 
2067     IF l_Line_Adj_rec.created_by = FND_API.G_MISS_NUM THEN
2068         l_Line_Adj_rec.created_by := p_old_Line_Adj_rec.created_by;
2069     END IF;
2070 
2071     IF l_Line_Adj_rec.last_update_date = FND_API.G_MISS_DATE THEN
2072         l_Line_Adj_rec.last_update_date := p_old_Line_Adj_rec.last_update_date;
2073     END IF;
2074 
2075     IF l_Line_Adj_rec.last_updated_by = FND_API.G_MISS_NUM THEN
2076         l_Line_Adj_rec.last_updated_by := p_old_Line_Adj_rec.last_updated_by;
2077     END IF;
2078 
2079     IF l_Line_Adj_rec.last_update_login = FND_API.G_MISS_NUM THEN
2080         l_Line_Adj_rec.last_update_login := p_old_Line_Adj_rec.last_update_login;
2081     END IF;
2082 
2083     IF l_Line_Adj_rec.program_application_id = FND_API.G_MISS_NUM THEN
2084         l_Line_Adj_rec.program_application_id := p_old_Line_Adj_rec.program_application_id;
2085     END IF;
2086 
2087     IF l_Line_Adj_rec.program_id = FND_API.G_MISS_NUM THEN
2088         l_Line_Adj_rec.program_id := p_old_Line_Adj_rec.program_id;
2089     END IF;
2090 
2091     IF l_Line_Adj_rec.program_update_date = FND_API.G_MISS_DATE THEN
2092         l_Line_Adj_rec.program_update_date := p_old_Line_Adj_rec.program_update_date;
2093     END IF;
2094 
2095     IF l_Line_Adj_rec.request_id = FND_API.G_MISS_NUM THEN
2096         l_Line_Adj_rec.request_id := p_old_Line_Adj_rec.request_id;
2097     END IF;
2098 
2099     IF l_Line_Adj_rec.header_id = FND_API.G_MISS_NUM THEN
2100         l_Line_Adj_rec.header_id := p_old_Line_Adj_rec.header_id;
2101     END IF;
2102 
2103     IF l_Line_Adj_rec.discount_id = FND_API.G_MISS_NUM THEN
2104         l_Line_Adj_rec.discount_id := p_old_Line_Adj_rec.discount_id;
2105     END IF;
2106 
2107     IF l_Line_Adj_rec.discount_line_id = FND_API.G_MISS_NUM THEN
2108         l_Line_Adj_rec.discount_line_id := p_old_Line_Adj_rec.discount_line_id;
2109     END IF;
2110 
2111     IF l_Line_Adj_rec.automatic_flag = FND_API.G_MISS_CHAR THEN
2112         l_Line_Adj_rec.automatic_flag := p_old_Line_Adj_rec.automatic_flag;
2113     END IF;
2114 
2115     IF l_Line_Adj_rec.percent = FND_API.G_MISS_NUM THEN
2116         l_Line_Adj_rec.percent := p_old_Line_Adj_rec.percent;
2117     END IF;
2118 
2119     IF l_Line_Adj_rec.line_id = FND_API.G_MISS_NUM THEN
2120         l_Line_Adj_rec.line_id := p_old_Line_Adj_rec.line_id;
2121     END IF;
2122 
2123     IF l_Line_Adj_rec.context = FND_API.G_MISS_CHAR THEN
2124         l_Line_Adj_rec.context := p_old_Line_Adj_rec.context;
2125     END IF;
2126 
2127     IF l_Line_Adj_rec.attribute1 = FND_API.G_MISS_CHAR THEN
2128         l_Line_Adj_rec.attribute1 := p_old_Line_Adj_rec.attribute1;
2129     END IF;
2130 
2131     IF l_Line_Adj_rec.attribute2 = FND_API.G_MISS_CHAR THEN
2132         l_Line_Adj_rec.attribute2 := p_old_Line_Adj_rec.attribute2;
2133     END IF;
2134 
2135     IF l_Line_Adj_rec.attribute3 = FND_API.G_MISS_CHAR THEN
2136         l_Line_Adj_rec.attribute3 := p_old_Line_Adj_rec.attribute3;
2137     END IF;
2138 
2139     IF l_Line_Adj_rec.attribute4 = FND_API.G_MISS_CHAR THEN
2140         l_Line_Adj_rec.attribute4 := p_old_Line_Adj_rec.attribute4;
2141     END IF;
2142 
2143     IF l_Line_Adj_rec.attribute5 = FND_API.G_MISS_CHAR THEN
2144         l_Line_Adj_rec.attribute5 := p_old_Line_Adj_rec.attribute5;
2145     END IF;
2146 
2147     IF l_Line_Adj_rec.attribute6 = FND_API.G_MISS_CHAR THEN
2148         l_Line_Adj_rec.attribute6 := p_old_Line_Adj_rec.attribute6;
2149     END IF;
2150 
2151     IF l_Line_Adj_rec.attribute7 = FND_API.G_MISS_CHAR THEN
2152         l_Line_Adj_rec.attribute7 := p_old_Line_Adj_rec.attribute7;
2153     END IF;
2154 
2155     IF l_Line_Adj_rec.attribute8 = FND_API.G_MISS_CHAR THEN
2156         l_Line_Adj_rec.attribute8 := p_old_Line_Adj_rec.attribute8;
2157     END IF;
2158 
2159     IF l_Line_Adj_rec.attribute9 = FND_API.G_MISS_CHAR THEN
2160         l_Line_Adj_rec.attribute9 := p_old_Line_Adj_rec.attribute9;
2161     END IF;
2162 
2163     IF l_Line_Adj_rec.attribute10 = FND_API.G_MISS_CHAR THEN
2164         l_Line_Adj_rec.attribute10 := p_old_Line_Adj_rec.attribute10;
2165     END IF;
2166 
2167     IF l_Line_Adj_rec.attribute11 = FND_API.G_MISS_CHAR THEN
2168         l_Line_Adj_rec.attribute11 := p_old_Line_Adj_rec.attribute11;
2169     END IF;
2170 
2171     IF l_Line_Adj_rec.attribute12 = FND_API.G_MISS_CHAR THEN
2172         l_Line_Adj_rec.attribute12 := p_old_Line_Adj_rec.attribute12;
2173     END IF;
2174 
2175     IF l_Line_Adj_rec.attribute13 = FND_API.G_MISS_CHAR THEN
2176         l_Line_Adj_rec.attribute13 := p_old_Line_Adj_rec.attribute13;
2177     END IF;
2178 
2179     IF l_Line_Adj_rec.attribute14 = FND_API.G_MISS_CHAR THEN
2180         l_Line_Adj_rec.attribute14 := p_old_Line_Adj_rec.attribute14;
2181     END IF;
2182 
2183     IF l_Line_Adj_rec.attribute15 = FND_API.G_MISS_CHAR THEN
2184         l_Line_Adj_rec.attribute15 := p_old_Line_Adj_rec.attribute15;
2185     END IF;
2186 
2187 -- new code
2188     IF l_Line_Adj_rec.list_header_id = FND_API.G_MISS_NUM THEN
2189 	  l_Line_Adj_rec.list_header_id := p_old_Line_Adj_rec.list_header_id;
2190 	END IF;
2191 
2192 	IF l_Line_Adj_rec.list_line_id = FND_API.G_MISS_NUM THEN
2193 	   l_Line_Adj_rec.list_line_id := p_old_Line_Adj_rec.list_line_id;
2194 	 END IF;
2195 
2196 	 IF l_Line_Adj_rec.modified_from = FND_API.G_MISS_CHAR THEN
2197 	    l_Line_Adj_rec.modified_from := p_old_Line_Adj_rec.modified_from;
2198 	  END IF;
2199 
2200 	  IF l_Line_Adj_rec.modified_to = FND_API.G_MISS_CHAR THEN
2201 		l_Line_Adj_rec.modified_to := p_old_Line_Adj_rec.modified_to;
2202 	   END IF;
2203 
2204     IF l_Line_Adj_rec.list_line_type_code = FND_API.G_MISS_CHAR THEN
2205 		l_Line_Adj_rec.list_line_type_code :=
2206 			p_old_Line_Adj_rec.list_line_type_code;
2207 	 END IF;
2208 
2209 	IF l_Line_Adj_rec.updated_flag = FND_API.G_MISS_CHAR THEN
2210 	   l_Line_Adj_rec.updated_flag := p_old_Line_Adj_rec.updated_flag;
2211 	  END IF;
2212 
2213 	 IF l_Line_Adj_rec.update_allowed = FND_API.G_MISS_CHAR THEN
2214 	    l_Line_Adj_rec.update_allowed := p_old_Line_Adj_rec.update_allowed;
2215 	   END IF;
2216 
2217 	  IF l_Line_Adj_rec.applied_flag = FND_API.G_MISS_CHAR THEN
2218 		l_Line_Adj_rec.applied_flag := p_old_Line_Adj_rec.applied_flag;
2219 	   END IF;
2220 
2221   IF l_Line_Adj_rec.modifier_mechanism_type_code = FND_API.G_MISS_CHAR THEN
2222 	 	l_Line_Adj_rec.modifier_mechanism_type_code :=
2223 	 		p_old_Line_Adj_rec.modifier_mechanism_type_code;
2224 	  END IF;
2225 
2226     IF l_Line_Adj_rec.change_reason_code = FND_API.G_MISS_CHAR THEN
2227 	  l_Line_Adj_rec.change_reason_code :=
2228 			p_old_Line_Adj_rec.change_reason_code;
2229 	 END IF;
2230 
2231 	IF l_Line_Adj_rec.change_reason_text = FND_API.G_MISS_CHAR THEN
2232 	   l_Line_Adj_rec.change_reason_text :=
2233 	   p_old_Line_Adj_rec.change_reason_text;
2234 	 END IF;
2235 
2236 	IF l_Line_Adj_rec.operand = FND_API.G_MISS_NUM THEN
2237 	   l_Line_Adj_rec.operand :=
2238 	   p_old_Line_Adj_rec.operand;
2239 	 END IF;
2240 
2241 	IF l_Line_Adj_rec.arithmetic_operator = FND_API.G_MISS_CHAR THEN
2242 	   l_Line_Adj_rec.arithmetic_operator :=
2243 	   p_old_Line_Adj_rec.arithmetic_operator;
2244 	 END IF;
2245 
2246 	IF l_Line_Adj_rec.cost_id = FND_API.G_MISS_NUM THEN
2247 	    l_Line_Adj_rec.cost_id :=  p_old_Line_Adj_rec.cost_id;
2248 	END IF;
2249 
2250 	IF l_Line_Adj_rec.tax_code = FND_API.G_MISS_CHAR THEN
2251 	    l_Line_Adj_rec.tax_code := p_old_Line_Adj_rec.tax_code;
2252 	END IF;
2253 
2254 	IF l_Line_Adj_rec.tax_exempt_flag = FND_API.G_MISS_CHAR THEN
2255 	    l_Line_Adj_rec.tax_exempt_flag :=
2256 	    p_old_Line_Adj_rec.tax_exempt_flag;
2257 	END IF;
2258 
2259 	IF l_Line_Adj_rec.tax_exempt_number = FND_API.G_MISS_CHAR THEN
2260 	    l_Line_Adj_rec.tax_exempt_number :=
2261 	    p_old_Line_Adj_rec.tax_exempt_number;
2262 	END IF;
2263 
2264 	IF l_Line_Adj_rec.tax_exempt_reason_code = FND_API.G_MISS_CHAR THEN
2265 	    l_Line_Adj_rec.tax_exempt_reason_code :=
2266 	    p_old_Line_Adj_rec.tax_exempt_reason_code;
2267 	END IF;
2268 
2269 	IF l_Line_Adj_rec.parent_adjustment_id = FND_API.G_MISS_NUM THEN
2270 	    l_Line_Adj_rec.parent_adjustment_id :=
2271 	    p_old_Line_Adj_rec.parent_adjustment_id;
2272 	END IF;
2273 
2274 	IF l_Line_Adj_rec.invoiced_flag = FND_API.G_MISS_CHAR THEN
2275 	    l_Line_Adj_rec.invoiced_flag :=
2276 	    p_old_Line_Adj_rec.invoiced_flag;
2277 	END IF;
2278 
2279 	IF l_Line_Adj_rec.estimated_flag = FND_API.G_MISS_CHAR THEN
2280 	    l_Line_Adj_rec.estimated_flag :=
2281 	    p_old_Line_Adj_rec.estimated_flag;
2282 	END IF;
2283 
2284 	IF l_Line_Adj_rec.inc_in_sales_performance = FND_API.G_MISS_CHAR THEN
2285 	    l_Line_Adj_rec.inc_in_sales_performance :=
2286 	    p_old_Line_Adj_rec.inc_in_sales_performance;
2287 	END IF;
2288 
2289 	IF l_Line_Adj_rec.split_action_code = FND_API.G_MISS_CHAR THEN
2290 	    l_Line_Adj_rec.split_action_code :=
2291 	    p_old_Line_Adj_rec.split_action_code;
2292 	END IF;
2293 
2294 	IF l_Line_Adj_rec.charge_type_code = FND_API.G_MISS_CHAR THEN
2295 	    l_Line_Adj_rec.charge_type_code :=
2296 	    p_old_Line_Adj_rec.charge_type_code;
2297 	END IF;
2298 
2299 	IF l_Line_Adj_rec.charge_subtype_code = FND_API.G_MISS_CHAR THEN
2300 	    l_Line_Adj_rec.charge_subtype_code :=
2301 	    p_old_Line_Adj_rec.charge_subtype_code;
2302 	END IF;
2303 
2304 	IF l_Line_Adj_rec.list_line_no = FND_API.G_MISS_CHAR THEN
2305 	    l_Line_Adj_rec.list_line_no :=
2306 	    p_old_Line_Adj_rec.list_line_no;
2307 	END IF;
2308 
2309 	IF l_Line_Adj_rec.source_system_code = FND_API.G_MISS_CHAR THEN
2310 	    l_Line_Adj_rec.source_system_code :=
2311 	    p_old_Line_Adj_rec.source_system_code;
2312 	END IF;
2313 
2314 	IF l_Line_Adj_rec.benefit_qty = FND_API.G_MISS_NUM THEN
2315 	    l_Line_Adj_rec.benefit_qty :=
2316 	    p_old_Line_Adj_rec.benefit_qty;
2317 	END IF;
2318 
2319 	IF l_Line_Adj_rec.benefit_uom_code = FND_API.G_MISS_CHAR THEN
2320 	    l_Line_Adj_rec.benefit_uom_code :=
2321 	    p_old_Line_Adj_rec.benefit_uom_code;
2322 	END IF;
2323 
2324 	IF l_Line_Adj_rec.print_on_invoice_flag = FND_API.G_MISS_CHAR THEN
2325 	    l_Line_Adj_rec.print_on_invoice_flag :=
2326 	    p_old_Line_Adj_rec.print_on_invoice_flag;
2327 	END IF;
2328 
2329 	IF l_Line_Adj_rec.expiration_date = FND_API.G_MISS_DATE THEN
2330 	    l_Line_Adj_rec.expiration_date :=
2331 	    p_old_Line_Adj_rec.expiration_date;
2332 	END IF;
2333 
2334 	IF l_Line_Adj_rec.rebate_transaction_type_code = FND_API.G_MISS_CHAR THEN
2335 	    l_Line_Adj_rec.rebate_transaction_type_code :=
2336 	    p_old_Line_Adj_rec.rebate_transaction_type_code;
2337 	END IF;
2338 
2339 	IF l_Line_Adj_rec.rebate_transaction_reference = FND_API.G_MISS_CHAR THEN
2340 	    l_Line_Adj_rec.rebate_transaction_reference :=
2341 	    p_old_Line_Adj_rec.rebate_transaction_reference;
2342 	END IF;
2343 
2344 	IF l_Line_Adj_rec.rebate_payment_system_code = FND_API.G_MISS_CHAR THEN
2345 	    l_Line_Adj_rec.rebate_payment_system_code :=
2346 	    p_old_Line_Adj_rec.rebate_payment_system_code;
2347 	END IF;
2348 
2349 	IF l_Line_Adj_rec.redeemed_date = FND_API.G_MISS_DATE THEN
2350 	    l_Line_Adj_rec.redeemed_date :=
2351 	    p_old_Line_Adj_rec.redeemed_date;
2352 	END IF;
2353 
2354 	IF l_Line_Adj_rec.redeemed_flag = FND_API.G_MISS_CHAR THEN
2355 	    l_Line_Adj_rec.redeemed_flag :=
2356 	    p_old_Line_Adj_rec.redeemed_flag;
2357 	END IF;
2358 
2359 	IF l_Line_Adj_rec.accrual_flag = FND_API.G_MISS_CHAR THEN
2360 	    l_Line_Adj_rec.accrual_flag :=
2361 	    p_old_Line_Adj_rec.accrual_flag;
2362 	END IF;
2363 
2364 	IF l_Line_Adj_rec.range_break_quantity = FND_API.G_MISS_NUM THEN
2365 	    l_Line_Adj_rec.range_break_quantity := p_old_Line_Adj_rec.range_break_quantity;
2366 	END IF;
2367 
2368 	IF l_Line_Adj_rec.accrual_conversion_rate = FND_API.G_MISS_NUM THEN
2369 	    l_Line_Adj_rec.accrual_conversion_rate := p_old_Line_Adj_rec.accrual_conversion_rate;
2370 	END IF;
2371 
2372 	IF l_Line_Adj_rec.pricing_group_sequence = FND_API.G_MISS_NUM THEN
2373 	    l_Line_Adj_rec.pricing_group_sequence := p_old_Line_Adj_rec.pricing_group_sequence;
2374 	END IF;
2375 
2376 	IF l_Line_Adj_rec.modifier_level_code = FND_API.G_MISS_CHAR THEN
2377 	    l_Line_Adj_rec.modifier_level_code := p_old_Line_Adj_rec.modifier_level_code;
2378 	END IF;
2379 
2380 	IF l_Line_Adj_rec.price_break_type_code = FND_API.G_MISS_CHAR THEN
2381 	    l_Line_Adj_rec.price_break_type_code := p_old_Line_Adj_rec.price_break_type_code;
2382 	END IF;
2383 
2384 	IF l_Line_Adj_rec.substitution_attribute = FND_API.G_MISS_CHAR THEN
2385 	    l_Line_Adj_rec.substitution_attribute := p_old_Line_Adj_rec.substitution_attribute;
2386 	END IF;
2387 
2388 	IF l_Line_Adj_rec.proration_type_code = FND_API.G_MISS_CHAR THEN
2389 	    l_Line_Adj_rec.proration_type_code := p_old_Line_Adj_rec.proration_type_code;
2390 	END IF;
2391 
2392 	IF l_Line_Adj_rec.credit_or_charge_flag = FND_API.G_MISS_CHAR THEN
2393 	    l_Line_Adj_rec.credit_or_charge_flag := p_old_Line_Adj_rec.credit_or_charge_flag;
2394 	END IF;
2395 
2396 	IF l_Line_Adj_rec.include_on_returns_flag = FND_API.G_MISS_CHAR THEN
2397 	    l_Line_Adj_rec.include_on_returns_flag := p_old_Line_Adj_rec.include_on_returns_flag;
2398 	END IF;
2399 
2400     IF l_Line_Adj_rec.ac_context = FND_API.G_MISS_CHAR THEN
2401         l_Line_Adj_rec.ac_context := p_old_Line_Adj_rec.ac_context;
2402     END IF;
2403 
2404     IF l_Line_Adj_rec.ac_attribute1 = FND_API.G_MISS_CHAR THEN
2405         l_Line_Adj_rec.ac_attribute1 := p_old_Line_Adj_rec.ac_attribute1;
2406     END IF;
2407 
2408     IF l_Line_Adj_rec.ac_attribute2 = FND_API.G_MISS_CHAR THEN
2409         l_Line_Adj_rec.ac_attribute2 := p_old_Line_Adj_rec.ac_attribute2;
2410     END IF;
2411 
2412     IF l_Line_Adj_rec.ac_attribute3 = FND_API.G_MISS_CHAR THEN
2413         l_Line_Adj_rec.ac_attribute3 := p_old_Line_Adj_rec.ac_attribute3;
2414     END IF;
2415 
2416     IF l_Line_Adj_rec.ac_attribute4 = FND_API.G_MISS_CHAR THEN
2417         l_Line_Adj_rec.ac_attribute4 := p_old_Line_Adj_rec.ac_attribute4;
2418     END IF;
2419 
2420     IF l_Line_Adj_rec.ac_attribute5 = FND_API.G_MISS_CHAR THEN
2421         l_Line_Adj_rec.ac_attribute5 := p_old_Line_Adj_rec.ac_attribute5;
2422     END IF;
2423 
2424     IF l_Line_Adj_rec.ac_attribute6 = FND_API.G_MISS_CHAR THEN
2425         l_Line_Adj_rec.ac_attribute6 := p_old_Line_Adj_rec.ac_attribute6;
2426     END IF;
2427 
2428     IF l_Line_Adj_rec.ac_attribute7 = FND_API.G_MISS_CHAR THEN
2429         l_Line_Adj_rec.ac_attribute7 := p_old_Line_Adj_rec.ac_attribute7;
2430     END IF;
2431 
2432     IF l_Line_Adj_rec.ac_attribute8 = FND_API.G_MISS_CHAR THEN
2433         l_Line_Adj_rec.ac_attribute8 := p_old_Line_Adj_rec.ac_attribute8;
2434     END IF;
2435 
2436     IF l_Line_Adj_rec.ac_attribute9 = FND_API.G_MISS_CHAR THEN
2437         l_Line_Adj_rec.ac_attribute9 := p_old_Line_Adj_rec.ac_attribute9;
2438     END IF;
2439 
2440     IF l_Line_Adj_rec.ac_attribute10 = FND_API.G_MISS_CHAR THEN
2441         l_Line_Adj_rec.ac_attribute10 := p_old_Line_Adj_rec.ac_attribute10;
2442     END IF;
2443 
2444     IF l_Line_Adj_rec.ac_attribute11 = FND_API.G_MISS_CHAR THEN
2445         l_Line_Adj_rec.ac_attribute11 := p_old_Line_Adj_rec.ac_attribute11;
2446     END IF;
2447 
2448     IF l_Line_Adj_rec.ac_attribute12 = FND_API.G_MISS_CHAR THEN
2449         l_Line_Adj_rec.ac_attribute12 := p_old_Line_Adj_rec.ac_attribute12;
2450     END IF;
2451 
2452     IF l_Line_Adj_rec.ac_attribute13 = FND_API.G_MISS_CHAR THEN
2453         l_Line_Adj_rec.ac_attribute13 := p_old_Line_Adj_rec.ac_attribute13;
2454     END IF;
2455 
2456     IF l_Line_Adj_rec.ac_attribute14 = FND_API.G_MISS_CHAR THEN
2457         l_Line_Adj_rec.ac_attribute14 := p_old_Line_Adj_rec.ac_attribute14;
2458     END IF;
2459 
2460     IF l_Line_Adj_rec.ac_attribute15 = FND_API.G_MISS_CHAR THEN
2461         l_Line_Adj_rec.ac_attribute15 := p_old_Line_Adj_rec.ac_attribute15;
2462     END IF;
2463 
2464      --uom begin
2465     IF l_Line_Adj_rec.operand_per_pqty = FND_API.G_MISS_NUM THEN
2466     --bug 3063549
2467     --l_Line_Adj_rec.operand_per_pqty := p_old_Line_Adj_rec.operand_per_pqty;
2468     l_Line_Adj_rec.operand_per_pqty := NULL;
2469     END IF;
2470 
2471     IF l_Line_Adj_rec.adjusted_amount_per_pqty = FND_API.G_MISS_NUM THEN
2472         l_Line_Adj_rec.adjusted_amount_per_pqty := p_old_Line_Adj_rec.adjusted_amount_per_pqty;
2473     END IF;
2474     --uom end
2475 
2476     IF l_Line_Adj_rec.invoiced_amount = FND_API.G_MISS_NUM THEN
2477 	l_Line_Adj_rec.invoiced_amount := p_old_Line_Adj_rec.invoiced_amount;
2478     END IF;
2479 
2480     -- eBTax Changes
2481     IF p_x_line_adj_rec.tax_rate_id = FND_API.G_MISS_NUM  THEN
2482         p_x_line_adj_rec.tax_rate_id := p_old_line_adj_rec.tax_rate_id;
2483     END IF;
2484     -- end eBTax changes
2485 
2486 
2487     -- RETURN l_Line_Adj_rec;
2488     p_x_Line_Adj_rec := l_Line_Adj_rec;
2489 
2490 END Complete_Record;
2491 
2492 --  Procedure Convert_Miss_To_Null
2493 
2494 PROCEDURE Convert_Miss_To_Null
2495 (   p_x_Line_Adj_rec                  IN OUT NOCOPY OE_Order_PUB.Line_Adj_Rec_Type
2496 )
2497 IS
2498 l_Line_Adj_rec                OE_Order_PUB.Line_Adj_Rec_Type := p_x_Line_Adj_rec;
2499 --
2500 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
2501 --
2502 BEGIN
2503 
2504     IF l_Line_Adj_rec.adjusted_amount = FND_API.G_MISS_NUM THEN
2505         l_Line_Adj_rec.adjusted_amount := NULL;
2506     END IF;
2507 
2508     IF l_Line_Adj_rec.pricing_phase_id = FND_API.G_MISS_NUM THEN
2509         l_Line_Adj_rec.pricing_phase_id := NULL;
2510     END IF;
2511 
2512     IF l_Line_Adj_rec.price_adjustment_id = FND_API.G_MISS_NUM THEN
2513         l_Line_Adj_rec.price_adjustment_id := NULL;
2514     END IF;
2515 
2516     IF l_Line_Adj_rec.creation_date = FND_API.G_MISS_DATE THEN
2517         l_Line_Adj_rec.creation_date := NULL;
2518     END IF;
2519 
2520     IF l_Line_Adj_rec.created_by = FND_API.G_MISS_NUM THEN
2521         l_Line_Adj_rec.created_by := NULL;
2522     END IF;
2523 
2524     IF l_Line_Adj_rec.last_update_date = FND_API.G_MISS_DATE THEN
2525         l_Line_Adj_rec.last_update_date := NULL;
2526     END IF;
2527 
2528     IF l_Line_Adj_rec.last_updated_by = FND_API.G_MISS_NUM THEN
2529         l_Line_Adj_rec.last_updated_by := NULL;
2530     END IF;
2531 
2532     IF l_Line_Adj_rec.last_update_login = FND_API.G_MISS_NUM THEN
2533         l_Line_Adj_rec.last_update_login := NULL;
2534     END IF;
2535 
2536     IF l_Line_Adj_rec.program_application_id = FND_API.G_MISS_NUM THEN
2537         l_Line_Adj_rec.program_application_id := NULL;
2538     END IF;
2539 
2540     IF l_Line_Adj_rec.program_id = FND_API.G_MISS_NUM THEN
2541         l_Line_Adj_rec.program_id := NULL;
2542     END IF;
2543 
2544     IF l_Line_Adj_rec.program_update_date = FND_API.G_MISS_DATE THEN
2545         l_Line_Adj_rec.program_update_date := NULL;
2546     END IF;
2547 
2548     IF l_Line_Adj_rec.request_id = FND_API.G_MISS_NUM THEN
2549         l_Line_Adj_rec.request_id := NULL;
2550     END IF;
2551 
2552     IF l_Line_Adj_rec.header_id = FND_API.G_MISS_NUM THEN
2553         l_Line_Adj_rec.header_id := NULL;
2554     END IF;
2555 
2556     IF l_Line_Adj_rec.discount_id = FND_API.G_MISS_NUM THEN
2557         l_Line_Adj_rec.discount_id := NULL;
2558     END IF;
2559 
2560     IF l_Line_Adj_rec.discount_line_id = FND_API.G_MISS_NUM THEN
2561         l_Line_Adj_rec.discount_line_id := NULL;
2562     END IF;
2563 
2564     IF l_Line_Adj_rec.automatic_flag = FND_API.G_MISS_CHAR THEN
2565         l_Line_Adj_rec.automatic_flag := NULL;
2566     END IF;
2567 
2568     IF l_Line_Adj_rec.percent = FND_API.G_MISS_NUM THEN
2569         l_Line_Adj_rec.percent := NULL;
2570     END IF;
2571 
2572     IF l_Line_Adj_rec.line_id = FND_API.G_MISS_NUM THEN
2573         l_Line_Adj_rec.line_id := NULL;
2574     END IF;
2575 
2576     IF l_Line_Adj_rec.context = FND_API.G_MISS_CHAR THEN
2577         l_Line_Adj_rec.context := NULL;
2578     END IF;
2579 
2580     IF l_Line_Adj_rec.attribute1 = FND_API.G_MISS_CHAR THEN
2581         l_Line_Adj_rec.attribute1 := NULL;
2582     END IF;
2583 
2584     IF l_Line_Adj_rec.attribute2 = FND_API.G_MISS_CHAR THEN
2585         l_Line_Adj_rec.attribute2 := NULL;
2586     END IF;
2587 
2588     IF l_Line_Adj_rec.attribute3 = FND_API.G_MISS_CHAR THEN
2589         l_Line_Adj_rec.attribute3 := NULL;
2590     END IF;
2591 
2592     IF l_Line_Adj_rec.attribute4 = FND_API.G_MISS_CHAR THEN
2593         l_Line_Adj_rec.attribute4 := NULL;
2594     END IF;
2595 
2596     IF l_Line_Adj_rec.attribute5 = FND_API.G_MISS_CHAR THEN
2597         l_Line_Adj_rec.attribute5 := NULL;
2598     END IF;
2599 
2600     IF l_Line_Adj_rec.attribute6 = FND_API.G_MISS_CHAR THEN
2601         l_Line_Adj_rec.attribute6 := NULL;
2602     END IF;
2603 
2604     IF l_Line_Adj_rec.attribute7 = FND_API.G_MISS_CHAR THEN
2605         l_Line_Adj_rec.attribute7 := NULL;
2606     END IF;
2607 
2608     IF l_Line_Adj_rec.attribute8 = FND_API.G_MISS_CHAR THEN
2609         l_Line_Adj_rec.attribute8 := NULL;
2610     END IF;
2611 
2612     IF l_Line_Adj_rec.attribute9 = FND_API.G_MISS_CHAR THEN
2613         l_Line_Adj_rec.attribute9 := NULL;
2614     END IF;
2615 
2616     IF l_Line_Adj_rec.attribute10 = FND_API.G_MISS_CHAR THEN
2617         l_Line_Adj_rec.attribute10 := NULL;
2618     END IF;
2619 
2620     IF l_Line_Adj_rec.attribute11 = FND_API.G_MISS_CHAR THEN
2621         l_Line_Adj_rec.attribute11 := NULL;
2622     END IF;
2623 
2624     IF l_Line_Adj_rec.attribute12 = FND_API.G_MISS_CHAR THEN
2625         l_Line_Adj_rec.attribute12 := NULL;
2626     END IF;
2627 
2628     IF l_Line_Adj_rec.attribute13 = FND_API.G_MISS_CHAR THEN
2629         l_Line_Adj_rec.attribute13 := NULL;
2630     END IF;
2631 
2632     IF l_Line_Adj_rec.attribute14 = FND_API.G_MISS_CHAR THEN
2633         l_Line_Adj_rec.attribute14 := NULL;
2634     END IF;
2635 
2636     IF l_Line_Adj_rec.attribute15 = FND_API.G_MISS_CHAR THEN
2637         l_Line_Adj_rec.attribute15 := NULL;
2638     END IF;
2639 
2640     IF l_Line_Adj_rec.list_header_id = FND_API.G_MISS_NUM THEN
2641 		 l_Line_Adj_rec.list_header_id := NULL;
2642     END IF;
2643 
2644 	IF l_Line_Adj_rec.list_line_id = FND_API.G_MISS_NUM THEN
2645 		   l_Line_Adj_rec.list_line_id := NULL;
2646 	END IF;
2647 
2648 	IF l_Line_Adj_rec.modified_from = FND_API.G_MISS_CHAR THEN
2649 		    l_Line_Adj_rec.modified_from := NULL;
2650 	END IF;
2651 	IF l_Line_Adj_rec.modified_to = FND_API.G_MISS_CHAR THEN
2652 		l_Line_Adj_rec.modified_to := NULL;
2653 	END IF;
2654 
2655     IF l_Line_Adj_rec.list_line_type_code = FND_API.G_MISS_CHAR THEN
2656 		  l_Line_Adj_rec.list_line_type_code := NULL;
2657     END IF;
2658 
2659     IF l_Line_Adj_rec.updated_flag = FND_API.G_MISS_CHAR THEN
2660 	   l_Line_Adj_rec.updated_flag := NULL;
2661     END IF;
2662 
2663 	IF l_Line_Adj_rec.update_allowed = FND_API.G_MISS_CHAR THEN
2664 	    l_Line_Adj_rec.update_allowed := NULL;
2665 	END IF;
2666 
2667      IF l_Line_Adj_rec.applied_flag = FND_API.G_MISS_CHAR THEN
2668 			l_Line_Adj_rec.applied_flag := NULL;
2669      END IF;
2670 
2671     IF l_Line_Adj_rec.modifier_mechanism_type_code = FND_API.G_MISS_CHAR THEN
2672 		  l_Line_Adj_rec.modifier_mechanism_type_code := NULL;
2673     END IF;
2674 
2675 	IF l_Line_Adj_rec.change_reason_code = FND_API.G_MISS_CHAR THEN
2676 	   l_Line_Adj_rec.change_reason_code := NULL;
2677 	END IF;
2678 
2679 	IF l_Line_Adj_rec.change_reason_text = FND_API.G_MISS_CHAR THEN
2680 	    l_Line_Adj_rec.change_reason_text := NULL ;
2681 	END IF;
2682 
2683 	IF l_Line_Adj_rec.arithmetic_operator = FND_API.G_MISS_CHAR THEN
2684 	    l_Line_Adj_rec.arithmetic_operator := NULL ;
2685 	END IF;
2686 
2687 	IF l_Line_Adj_rec.operand = FND_API.G_MISS_NUM THEN
2688 	    l_Line_Adj_rec.operand := NULL ;
2689 	END IF;
2690 
2691 	IF l_Line_Adj_rec.cost_id = FND_API.G_MISS_NUM THEN
2692 	    l_Line_Adj_rec.cost_id := NULL ;
2693 	END IF;
2694 
2695 	IF l_Line_Adj_rec.tax_code = FND_API.G_MISS_CHAR THEN
2696 	    l_Line_Adj_rec.tax_code := NULL ;
2697 	END IF;
2698 
2699 	IF l_Line_Adj_rec.tax_exempt_flag = FND_API.G_MISS_CHAR THEN
2700 	    l_Line_Adj_rec.tax_exempt_flag := NULL ;
2701 	END IF;
2702 
2703 	IF l_Line_Adj_rec.tax_exempt_number = FND_API.G_MISS_CHAR THEN
2704 	    l_Line_Adj_rec.tax_exempt_number := NULL ;
2705 	END IF;
2706 
2707 	IF l_Line_Adj_rec.tax_exempt_reason_code = FND_API.G_MISS_CHAR THEN
2708 	    l_Line_Adj_rec.tax_exempt_reason_code := NULL ;
2709 	END IF;
2710 
2711 	IF l_Line_Adj_rec.parent_adjustment_id = FND_API.G_MISS_NUM THEN
2712 	    l_Line_Adj_rec.parent_adjustment_id := NULL ;
2713 	END IF;
2714 
2715 	IF l_Line_Adj_rec.invoiced_flag = FND_API.G_MISS_CHAR THEN
2716 	    l_Line_Adj_rec.invoiced_flag := NULL ;
2717 	END IF;
2718 
2719 	IF l_Line_Adj_rec.estimated_flag = FND_API.G_MISS_CHAR THEN
2720 	    l_Line_Adj_rec.estimated_flag := NULL ;
2721 	END IF;
2722 
2723 	IF l_Line_Adj_rec.inc_in_sales_performance = FND_API.G_MISS_CHAR THEN
2724 	    l_Line_Adj_rec.inc_in_sales_performance := NULL ;
2725 	END IF;
2726 
2727 	IF l_Line_Adj_rec.split_action_code = FND_API.G_MISS_CHAR THEN
2728 	    l_Line_Adj_rec.split_action_code := NULL ;
2729 	END IF;
2730 
2731 	IF l_Line_Adj_rec.charge_type_code = FND_API.G_MISS_CHAR THEN
2732 	    l_Line_Adj_rec.charge_type_code := NULL ;
2733 	END IF;
2734 
2735 	IF l_Line_Adj_rec.charge_subtype_code = FND_API.G_MISS_CHAR THEN
2736 	    l_Line_Adj_rec.charge_subtype_code := NULL ;
2737 	END IF;
2738 
2739 	IF l_Line_Adj_rec.list_line_no = FND_API.G_MISS_CHAR THEN
2740 	    l_Line_Adj_rec.list_line_no := NULL ;
2741 	END IF;
2742 
2743 	IF l_Line_Adj_rec.source_system_code = FND_API.G_MISS_CHAR THEN
2744 	    l_Line_Adj_rec.source_system_code := NULL ;
2745 	END IF;
2746 
2747 	IF l_Line_Adj_rec.benefit_qty = FND_API.G_MISS_NUM THEN
2748 	    l_Line_Adj_rec.benefit_qty := NULL ;
2749 	END IF;
2750 
2751 	IF l_Line_Adj_rec.benefit_uom_code = FND_API.G_MISS_CHAR THEN
2752 	    l_Line_Adj_rec.benefit_uom_code := NULL ;
2753 	END IF;
2754 
2755 	IF l_Line_Adj_rec.print_on_invoice_flag = FND_API.G_MISS_CHAR THEN
2756 	    l_Line_Adj_rec.print_on_invoice_flag := NULL ;
2757 	END IF;
2758 
2759 	IF l_Line_Adj_rec.expiration_date = FND_API.G_MISS_DATE THEN
2760 	    l_Line_Adj_rec.expiration_date := NULL ;
2761 	END IF;
2762 
2763 	IF l_Line_Adj_rec.rebate_transaction_type_code = FND_API.G_MISS_CHAR THEN
2764 	    l_Line_Adj_rec.rebate_transaction_type_code := NULL ;
2765 	END IF;
2766 
2767 	IF l_Line_Adj_rec.rebate_transaction_reference = FND_API.G_MISS_CHAR THEN
2768 	    l_Line_Adj_rec.rebate_transaction_reference := NULL ;
2769 	END IF;
2770 
2771 	IF l_Line_Adj_rec.rebate_payment_system_code = FND_API.G_MISS_CHAR THEN
2772 	    l_Line_Adj_rec.rebate_payment_system_code := NULL ;
2773 	END IF;
2774 
2775 	IF l_Line_Adj_rec.redeemed_date = FND_API.G_MISS_DATE THEN
2776 	    l_Line_Adj_rec.redeemed_date := NULL ;
2777 	END IF;
2778 
2779 	IF l_Line_Adj_rec.redeemed_flag = FND_API.G_MISS_CHAR THEN
2780 	    l_Line_Adj_rec.redeemed_flag := NULL ;
2781 	END IF;
2782 
2783 	IF l_Line_Adj_rec.accrual_flag = FND_API.G_MISS_CHAR THEN
2784 	    l_Line_Adj_rec.accrual_flag := NULL ;
2785 	END IF;
2786 
2787 	IF l_Line_Adj_rec.range_break_quantity = FND_API.G_MISS_NUM THEN
2788 	    l_Line_Adj_rec.range_break_quantity := NULL ;
2789 	END IF;
2790 
2791 	IF l_Line_Adj_rec.accrual_conversion_rate = FND_API.G_MISS_NUM THEN
2792 	    l_Line_Adj_rec.accrual_conversion_rate := NULL ;
2793 	END IF;
2794 
2795 	IF l_Line_Adj_rec.pricing_group_sequence = FND_API.G_MISS_NUM THEN
2796 	    l_Line_Adj_rec.pricing_group_sequence := NULL ;
2797 	END IF;
2798 
2799 	IF l_Line_Adj_rec.modifier_level_code = FND_API.G_MISS_CHAR THEN
2800 	    l_Line_Adj_rec.modifier_level_code := NULL ;
2801 	END IF;
2802 
2803 	IF l_Line_Adj_rec.price_break_type_code = FND_API.G_MISS_CHAR THEN
2804 	    l_Line_Adj_rec.price_break_type_code := NULL ;
2805 	END IF;
2806 
2807 	IF l_Line_Adj_rec.substitution_attribute = FND_API.G_MISS_CHAR THEN
2808 	    l_Line_Adj_rec.substitution_attribute := NULL ;
2809 	END IF;
2810 
2811 	IF l_Line_Adj_rec.proration_type_code = FND_API.G_MISS_CHAR THEN
2812 	    l_Line_Adj_rec.proration_type_code := NULL ;
2813 	END IF;
2814 
2815 	IF l_Line_Adj_rec.credit_or_charge_flag = FND_API.G_MISS_CHAR THEN
2816 	    l_Line_Adj_rec.credit_or_charge_flag := NULL ;
2817 	END IF;
2818 
2819 	IF l_Line_Adj_rec.include_on_returns_flag = FND_API.G_MISS_CHAR THEN
2820 	    l_Line_Adj_rec.include_on_returns_flag := NULL ;
2821 	END IF;
2822 
2823     IF l_Line_Adj_rec.ac_context = FND_API.G_MISS_CHAR THEN
2824         l_Line_Adj_rec.ac_context := NULL;
2825     END IF;
2826 
2827     IF l_Line_Adj_rec.ac_attribute1 = FND_API.G_MISS_CHAR THEN
2828         l_Line_Adj_rec.ac_attribute1 := NULL;
2829     END IF;
2830 
2831     IF l_Line_Adj_rec.ac_attribute2 = FND_API.G_MISS_CHAR THEN
2832         l_Line_Adj_rec.ac_attribute2 := NULL;
2833     END IF;
2834 
2835     IF l_Line_Adj_rec.ac_attribute3 = FND_API.G_MISS_CHAR THEN
2836         l_Line_Adj_rec.ac_attribute3 := NULL;
2837     END IF;
2838 
2839     IF l_Line_Adj_rec.ac_attribute4 = FND_API.G_MISS_CHAR THEN
2840         l_Line_Adj_rec.ac_attribute4 := NULL;
2841     END IF;
2842 
2843     IF l_Line_Adj_rec.ac_attribute5 = FND_API.G_MISS_CHAR THEN
2844         l_Line_Adj_rec.ac_attribute5 := NULL;
2845     END IF;
2846 
2847     IF l_Line_Adj_rec.ac_attribute6 = FND_API.G_MISS_CHAR THEN
2848         l_Line_Adj_rec.ac_attribute6 := NULL;
2849     END IF;
2850 
2851     IF l_Line_Adj_rec.ac_attribute7 = FND_API.G_MISS_CHAR THEN
2852         l_Line_Adj_rec.ac_attribute7 := NULL;
2853     END IF;
2854 
2855     IF l_Line_Adj_rec.ac_attribute8 = FND_API.G_MISS_CHAR THEN
2856         l_Line_Adj_rec.ac_attribute8 := NULL;
2857     END IF;
2858 
2859     IF l_Line_Adj_rec.ac_attribute9 = FND_API.G_MISS_CHAR THEN
2860         l_Line_Adj_rec.ac_attribute9 := NULL;
2861     END IF;
2862 
2863     IF l_Line_Adj_rec.ac_attribute10 = FND_API.G_MISS_CHAR THEN
2864         l_Line_Adj_rec.ac_attribute10 := NULL;
2865     END IF;
2866 
2867     IF l_Line_Adj_rec.ac_attribute11 = FND_API.G_MISS_CHAR THEN
2868         l_Line_Adj_rec.ac_attribute11 := NULL;
2869     END IF;
2870 
2871     IF l_Line_Adj_rec.ac_attribute12 = FND_API.G_MISS_CHAR THEN
2872         l_Line_Adj_rec.ac_attribute12 := NULL;
2873     END IF;
2874 
2875     IF l_Line_Adj_rec.ac_attribute13 = FND_API.G_MISS_CHAR THEN
2876         l_Line_Adj_rec.ac_attribute13 := NULL;
2877     END IF;
2878 
2879     IF l_Line_Adj_rec.ac_attribute14 = FND_API.G_MISS_CHAR THEN
2880         l_Line_Adj_rec.ac_attribute14 := NULL;
2881     END IF;
2882 
2883     IF l_Line_Adj_rec.ac_attribute15 = FND_API.G_MISS_CHAR THEN
2884         l_Line_Adj_rec.ac_attribute15 := NULL;
2885     END IF;
2886 
2887     --uom begin
2888     IF l_Line_Adj_rec.operand_per_pqty = FND_API.G_MISS_NUM THEN
2889         l_Line_Adj_rec.operand_per_pqty := NULL;
2890     END IF;
2891 
2892     IF l_Line_Adj_rec.adjusted_amount_per_pqty = FND_API.G_MISS_NUM THEN
2893         l_Line_Adj_rec.adjusted_amount_per_pqty := NULL;
2894     END IF;
2895 
2896     --uom end
2897 
2898     IF l_Line_Adj_rec.invoiced_amount = FND_API.G_MISS_NUM THEN
2899 	    l_Line_Adj_rec.invoiced_amount := NULL ;
2900     END IF;
2901 
2902     -- eBTax Changes
2903     IF p_x_line_adj_rec.tax_rate_id = FND_API.G_MISS_NUM  THEN
2904         p_x_line_adj_rec.tax_rate_id := NULL;
2905     END IF;
2906 
2907 
2908     -- end eBTax changes
2909 
2910     IF l_debug_level  > 0 THEN
2911         oe_debug_pub.add(  'EXITING OE_LINE_ADJ_UTIL.CONVERT_MISS_TO_NULL' , 1 ) ;
2912     END IF;
2913 
2914     -- RETURN l_Line_Adj_rec;
2915     p_x_Line_Adj_rec := l_Line_Adj_rec;
2916 
2917 END Convert_Miss_To_Null;
2918 
2919 --  Procedure Update_Row
2920 
2921 PROCEDURE Update_Row
2922 (   p_Line_Adj_rec            IN OUT NOCOPY OE_Order_PUB.Line_Adj_Rec_Type
2923 )
2924 IS
2925 l_lock_control		NUMBER;
2926 l_index                 NUMBER;
2927 l_return_status         VARCHAR2(1);
2928 --
2929 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
2930 --
2931 BEGIN
2932      IF l_debug_level  > 0 THEN
2933          oe_debug_pub.add(  'ENTERING OE_LINE_ADJ_UTIL.UPDATE_ROW' , 1 ) ;
2934      END IF;
2935 
2936     -- increment lock_control by 1 whenever the record is updated
2937     SELECT lock_control
2938     INTO   l_lock_control
2939     FROM   OE_PRICE_ADJUSTMENTS
2940     WHERE  price_adjustment_id = p_Line_Adj_rec.price_adjustment_id;
2941 
2942     l_lock_control := l_lock_control + 1;
2943 
2944    --calling notification framework to update global picture
2945    --check code release level first. Notification framework is at Pack H level
2946    IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110508' THEN
2947         IF l_debug_level  > 0 THEN
2948             oe_debug_pub.add(  'JFC: LINE_PRICE_ADJ_ID=' || P_LINE_ADJ_REC.PRICE_ADJUSTMENT_ID ) ;
2949         END IF;
2950        OE_ORDER_UTIL.Update_Global_Picture(p_Upd_New_Rec_If_Exists => True,
2951                     p_Line_adj_rec =>p_line_adj_rec,
2952                     p_line_adj_id => p_line_adj_rec.price_adjustment_id,
2953                     x_index => l_index,
2954                     x_return_status => l_return_status);
2955          IF l_debug_level  > 0 THEN
2956              oe_debug_pub.add(  'UPDATE_GLOBAL RETURN STATUS FROM OE_LINE_ADJ_UTIL.UPDATE_ROW IS: ' || L_RETURN_STATUS ) ;
2957          END IF;
2958          IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2959              IF l_debug_level  > 0 THEN
2960                  oe_debug_pub.add(  'EVENT NOTIFY - UNEXPECTED ERROR' ) ;
2961                  oe_debug_pub.add(  'EXITING OE_LINE_ADJ_UTIL.UPDATE_ROW' , 1 ) ;
2962              END IF;
2963 	     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2964          ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2965              IF l_debug_level  > 0 THEN
2966                  oe_debug_pub.add(  'UPDATE_GLOBAL_PICTURE ERROR IN OE_LINE_ADJ_UTIL.UPDATE_ROW' ) ;
2967                 oe_debug_pub.add(  'EXITING OE_LINE_ADJ_UTIL.UPDATE_ROW' , 1 ) ;
2968             END IF;
2969 	    RAISE FND_API.G_EXC_ERROR;
2970           END IF;
2971     END IF; /* code_release_level*/
2972      -- notification framework end
2973 
2974     UPDATE  OE_PRICE_ADJUSTMENTS
2975     SET     PRICE_ADJUSTMENT_ID    = p_Line_Adj_rec.price_adjustment_id
2976     ,       CREATION_DATE          = p_Line_Adj_rec.creation_date
2977     ,       CREATED_BY             = p_Line_Adj_rec.created_by
2978     ,       LAST_UPDATE_DATE       = p_Line_Adj_rec.last_update_date
2979     ,       LAST_UPDATED_BY        = p_Line_Adj_rec.last_updated_by
2980     ,       LAST_UPDATE_LOGIN      = p_Line_Adj_rec.last_update_login
2981     ,       PROGRAM_APPLICATION_ID = p_Line_Adj_rec.program_application_id
2982     ,       PROGRAM_ID             = p_Line_Adj_rec.program_id
2983     ,       PROGRAM_UPDATE_DATE    = p_Line_Adj_rec.program_update_date
2984     ,       REQUEST_ID             = p_Line_Adj_rec.request_id
2985     ,       HEADER_ID              = p_Line_Adj_rec.header_id
2986     ,       DISCOUNT_ID            = p_Line_Adj_rec.discount_id
2987     ,       DISCOUNT_LINE_ID       = p_Line_Adj_rec.discount_line_id
2988     ,       AUTOMATIC_FLAG         = p_Line_Adj_rec.automatic_flag
2989     ,       PERCENT                = p_Line_Adj_rec.percent
2990     ,       LINE_ID                = p_Line_Adj_rec.line_id
2991     ,       CONTEXT                = p_Line_Adj_rec.context
2992     ,       ATTRIBUTE1             = p_Line_Adj_rec.attribute1
2993     ,       ATTRIBUTE2             = p_Line_Adj_rec.attribute2
2994     ,       ATTRIBUTE3             = p_Line_Adj_rec.attribute3
2995     ,       ATTRIBUTE4             = p_Line_Adj_rec.attribute4
2996     ,       ATTRIBUTE5             = p_Line_Adj_rec.attribute5
2997     ,       ATTRIBUTE6             = p_Line_Adj_rec.attribute6
2998     ,       ATTRIBUTE7             = p_Line_Adj_rec.attribute7
2999     ,       ATTRIBUTE8             = p_Line_Adj_rec.attribute8
3000     ,       ATTRIBUTE9             = p_Line_Adj_rec.attribute9
3001     ,       ATTRIBUTE10            = p_Line_Adj_rec.attribute10
3002     ,       ATTRIBUTE11            = p_Line_Adj_rec.attribute11
3003     ,       ATTRIBUTE12            = p_Line_Adj_rec.attribute12
3004     ,       ATTRIBUTE13            = p_Line_Adj_rec.attribute13
3005     ,       ATTRIBUTE14            = p_Line_Adj_rec.attribute14
3006     ,       ATTRIBUTE15            = p_Line_Adj_rec.attribute15
3007     ,       ORIG_SYS_DISCOUNT_REF  = p_Line_Adj_rec.orig_sys_discount_ref
3008     ,	  LIST_HEADER_ID  	     = p_Line_Adj_rec.list_header_id
3009     ,	  LIST_LINE_ID  	     = p_Line_Adj_rec.list_line_id
3010     ,	  LIST_LINE_TYPE_CODE  	    =  p_Line_Adj_rec.list_line_type_code
3011  , MODIFIER_MECHANISM_TYPE_CODE = p_Line_Adj_rec.modifier_mechanism_type_code
3012     ,	  MODIFIED_FROM   	     = p_Line_Adj_rec.modified_from
3013     ,	  MODIFIED_TO  	     = p_Line_Adj_rec.modified_to
3014     ,	  UPDATED_FLAG  	     = p_Line_Adj_rec.updated_flag
3015     ,	  UPDATE_ALLOWED  	     = p_Line_Adj_rec.update_allowed
3016     ,	  APPLIED_FLAG  	     = p_Line_Adj_rec.applied_flag
3017     ,	  CHANGE_REASON_CODE  	 =     p_Line_Adj_rec.change_reason_code
3018     ,	  CHANGE_REASON_TEXT  	  =    p_Line_Adj_rec.change_reason_text
3019     ,	  operand				=  p_Line_Adj_rec.operand
3020     ,	  Arithmetic_operator	=	p_Line_Adj_rec.arithmetic_operator
3021     ,	  COST_ID                = p_Line_Adj_rec.cost_id
3022     ,	  TAX_CODE               = p_Line_Adj_rec.tax_code
3023     ,	  TAX_EXEMPT_FLAG        = p_Line_Adj_rec.tax_exempt_flag
3024     ,	  TAX_EXEMPT_NUMBER      = p_Line_Adj_rec.tax_exempt_number
3025     ,	  TAX_EXEMPT_REASON_CODE = p_Line_Adj_rec.tax_exempt_reason_code
3026     ,	  PARENT_ADJUSTMENT_ID   = p_Line_Adj_rec.parent_adjustment_id
3027     ,	  INVOICED_FLAG          = p_Line_Adj_rec.invoiced_flag
3028     ,	  ESTIMATED_FLAG         = p_Line_Adj_rec.estimated_flag
3029     ,	  INC_IN_SALES_PERFORMANCE = p_Line_Adj_rec.inc_in_sales_performance
3030     ,	  SPLIT_ACTION_CODE      = p_Line_Adj_rec.split_action_code
3031     ,	  ADJUSTED_AMOUNT      = p_Line_Adj_rec.adjusted_amount
3032     ,	  PRICING_PHASE_ID      = p_Line_Adj_rec.pricing_phase_id
3033     ,	  CHARGE_TYPE_CODE      = p_Line_Adj_rec.charge_type_code
3034     ,	  CHARGE_SUBTYPE_CODE      = p_Line_Adj_rec.charge_subtype_code
3035     ,     LIST_LINE_NO          = p_Line_Adj_rec.list_line_no
3036     ,     SOURCE_SYSTEM_CODE     = p_Line_Adj_rec.source_system_code
3037     ,     BENEFIT_QTY           = p_Line_Adj_rec.benefit_qty
3038     ,     BENEFIT_UOM_CODE      = p_Line_Adj_rec.benefit_uom_code
3039     ,     PRINT_ON_INVOICE_FLAG = p_Line_Adj_rec.print_on_invoice_flag
3040     ,     EXPIRATION_DATE       = p_Line_Adj_rec.expiration_date
3041     ,     REBATE_TRANSACTION_TYPE_CODE  = p_Line_Adj_rec.rebate_transaction_type_code
3042     ,     REBATE_TRANSACTION_REFERENCE  = p_Line_Adj_rec.rebate_transaction_reference
3043     ,     REBATE_PAYMENT_SYSTEM_CODE    = p_Line_Adj_rec.rebate_payment_system_code
3044     ,     REDEEMED_DATE         = p_Line_Adj_rec.redeemed_date
3045     ,     REDEEMED_FLAG         = p_Line_Adj_rec.redeemed_flag
3046     ,     ACCRUAL_FLAG         = p_Line_Adj_rec.accrual_flag
3047     ,     range_break_quantity      = p_Line_Adj_rec.range_break_quantity
3048     ,     accrual_conversion_rate   = p_Line_Adj_rec.accrual_conversion_rate
3049     ,     pricing_group_sequence    = p_Line_Adj_rec.pricing_group_sequence
3050     ,     modifier_level_code       = p_Line_Adj_rec.modifier_level_code
3051     ,     price_break_type_code     = p_Line_Adj_rec.price_break_type_code
3052     ,     substitution_attribute    = p_Line_Adj_rec.substitution_attribute
3053     ,     proration_type_code       = p_Line_Adj_rec.proration_type_code
3054     ,       CREDIT_OR_CHARGE_FLAG   = p_Line_Adj_rec.credit_or_charge_flag
3055     ,       INCLUDE_ON_RETURNS_FLAG = p_Line_Adj_rec.include_on_returns_flag
3056     ,       AC_CONTEXT              = p_Line_Adj_rec.ac_context
3057     ,       AC_ATTRIBUTE1           = p_Line_Adj_rec.ac_attribute1
3058     ,       AC_ATTRIBUTE2           = p_Line_Adj_rec.ac_attribute2
3059     ,       AC_ATTRIBUTE3           = p_Line_Adj_rec.ac_attribute3
3060     ,       AC_ATTRIBUTE4           = p_Line_Adj_rec.ac_attribute4
3061     ,       AC_ATTRIBUTE5           = p_Line_Adj_rec.ac_attribute5
3062     ,       AC_ATTRIBUTE6           = p_Line_Adj_rec.ac_attribute6
3063     ,       AC_ATTRIBUTE7           = p_Line_Adj_rec.ac_attribute7
3064     ,       AC_ATTRIBUTE8           = p_Line_Adj_rec.ac_attribute8
3065     ,       AC_ATTRIBUTE9           = p_Line_Adj_rec.ac_attribute9
3066     ,       AC_ATTRIBUTE10          = p_Line_Adj_rec.ac_attribute10
3067     ,       AC_ATTRIBUTE11          = p_Line_Adj_rec.ac_attribute11
3068     ,       AC_ATTRIBUTE12          = p_Line_Adj_rec.ac_attribute12
3069     ,       AC_ATTRIBUTE13          = p_Line_Adj_rec.ac_attribute13
3070     ,       AC_ATTRIBUTE14          = p_Line_Adj_rec.ac_attribute14
3071     ,       AC_ATTRIBUTE15          = p_Line_Adj_rec.ac_attribute15
3072     ,	  LOCK_CONTROL			 = l_lock_control
3073      --uom begin
3074     ,       OPERAND_PER_PQTY        = p_line_adj_rec.operand_per_pqty
3075     ,       ADJUSTED_AMOUNT_PER_PQTY = p_line_adj_rec.adjusted_amount_per_pqty
3076     --uom end
3077     ,	  INVOICED_AMOUNT           = p_Line_Adj_rec.invoiced_amount
3078     -- eBTax changes
3079     ,     TAX_RATE_ID               = p_Line_Adj_rec.tax_rate_id
3080 
3081     WHERE   PRICE_ADJUSTMENT_ID    = p_Line_Adj_rec.price_adjustment_id
3082     ;
3083 
3084     p_Line_Adj_rec.lock_control := l_lock_control;
3085     IF l_debug_level  > 0 THEN
3086         oe_debug_pub.add(  'EXITING OE_LINE_ADJ_UTIL.UPDATE_ROW.' , 1 ) ;
3087     END IF;
3088 
3089 EXCEPTION
3090 
3091     WHEN OTHERS THEN
3092 
3093         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
3094         THEN
3095             OE_MSG_PUB.Add_Exc_Msg
3096             (   G_PKG_NAME
3097             ,   'Update_Row'
3098             );
3099         END IF;
3100        IF l_debug_level  > 0 THEN
3101            oe_debug_pub.add(  'EXCEPTION IN UPDATE_ROW'||SQLERRM , 2 ) ;
3102        END IF;
3103         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3104 
3105 END Update_Row;
3106 
3107 --To prevent unique key violation on price_adjustment_table next time
3108 Procedure Reset_Sequence Is
3109 h number;
3110 i number;
3111 k number;
3112 j number;
3113 l number;
3114 begin
3115   select max(price_adjustment_id)
3116   into j
3117   from  oe_price_adjustments;
3118 
3119   Select oe_price_adjustments_s.nextval
3120   Into h
3121   From dual;
3122 
3123   If j > h and j <> fnd_api.g_miss_num Then
3124     l:=j-h+10;
3125     for i in 1..l loop
3126       select oe_price_adjustments_s.nextval into k from dual;
3127     end loop;
3128   End If;
3129 
3130 end;
3131 
3132 --  Procedure Insert_Row
3133 
3134 PROCEDURE Insert_Row
3135 (   p_Line_Adj_rec            IN OUT NOCOPY  OE_Order_PUB.Line_Adj_Rec_Type
3136 )
3137 IS
3138 l_lock_control		NUMBER := 1;
3139 l_index                 NUMBER;
3140 l_return_status         VARCHAR2(1);
3141 --
3142 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
3143 --
3144 BEGIN
3145     IF l_debug_level  > 0 THEN
3146         oe_debug_pub.add(  'ENTERING OE_LINE_ADJ_UTIL.INSERT_ROW' , 1 ) ;
3147         oe_debug_pub.add(' list_line_id insert:'|| p_Line_Adj_rec.list_line_id||
3148                          ' ,operand insert:'||p_line_adj_rec.operand||
3149                          ' ,operand pqty insert:'||p_line_adj_rec.operand_per_pqty||
3150                          ' ,applied_flag insert:'||p_line_adj_rec.applied_flag||
3151                          ' ,list_line_type_code:'||p_line_adj_rec.list_line_type_code||
3152                          ' ,operator:'||p_line_adj_rec.arithmetic_operator);
3153     END IF;
3154 
3155     INSERT  INTO OE_PRICE_ADJUSTMENTS
3156     (       PRICE_ADJUSTMENT_ID
3157     ,       CREATION_DATE
3158     ,       CREATED_BY
3159     ,       LAST_UPDATE_DATE
3160     ,       LAST_UPDATED_BY
3161     ,       LAST_UPDATE_LOGIN
3162     ,       PROGRAM_APPLICATION_ID
3163     ,       PROGRAM_ID
3164     ,       PROGRAM_UPDATE_DATE
3165     ,       REQUEST_ID
3166     ,       HEADER_ID
3167     ,       DISCOUNT_ID
3168     ,       DISCOUNT_LINE_ID
3169     ,       AUTOMATIC_FLAG
3170     ,       PERCENT
3171     ,       LINE_ID
3172     ,       CONTEXT
3173     ,       ATTRIBUTE1
3174     ,       ATTRIBUTE2
3175     ,       ATTRIBUTE3
3176     ,       ATTRIBUTE4
3177     ,       ATTRIBUTE5
3178     ,       ATTRIBUTE6
3179     ,       ATTRIBUTE7
3180     ,       ATTRIBUTE8
3181     ,       ATTRIBUTE9
3182     ,       ATTRIBUTE10
3183     ,       ATTRIBUTE11
3184     ,       ATTRIBUTE12
3185     ,       ATTRIBUTE13
3186     ,       ATTRIBUTE14
3187     ,       ATTRIBUTE15
3188     ,       ORIG_SYS_DISCOUNT_REF
3189     ,	  LIST_HEADER_ID
3190     ,	  LIST_LINE_ID
3191     ,	  LIST_LINE_TYPE_CODE
3192     ,	  MODIFIER_MECHANISM_TYPE_CODE
3193     ,	  MODIFIED_FROM
3194     ,	  MODIFIED_TO
3195     ,	  UPDATED_FLAG
3196     ,	  UPDATE_ALLOWED
3197     ,	  APPLIED_FLAG
3198     ,	  CHANGE_REASON_CODE
3199     ,	  CHANGE_REASON_TEXT
3200     ,	  operand
3201     ,	  Arithmetic_operator
3202     ,	  COST_ID
3203     ,	  TAX_CODE
3204     ,	  TAX_EXEMPT_FLAG
3205     ,	  TAX_EXEMPT_NUMBER
3206     ,	  TAX_EXEMPT_REASON_CODE
3207     ,	  PARENT_ADJUSTMENT_ID
3208     ,	  INVOICED_FLAG
3209     ,	  ESTIMATED_FLAG
3210     ,	  INC_IN_SALES_PERFORMANCE
3211     ,	  SPLIT_ACTION_CODE
3212     ,	  ADJUSTED_AMOUNT
3213     ,	  PRICING_PHASE_ID
3214     ,	  CHARGE_TYPE_CODE
3215     ,	  CHARGE_SUBTYPE_CODE
3216     ,     list_line_no
3217     ,     source_system_code
3218     ,     benefit_qty
3219     ,     benefit_uom_code
3220     ,     print_on_invoice_flag
3221     ,     expiration_date
3222     ,     rebate_transaction_type_code
3223     ,     rebate_transaction_reference
3224     ,     rebate_payment_system_code
3225     ,     redeemed_date
3226     ,     redeemed_flag
3227     ,     accrual_flag
3228     ,     range_break_quantity
3229     ,     accrual_conversion_rate
3230     ,     pricing_group_sequence
3231     ,     modifier_level_code
3232     ,     price_break_type_code
3233     ,     substitution_attribute
3234     ,     proration_type_code
3235     ,       CREDIT_OR_CHARGE_FLAG
3236     ,       INCLUDE_ON_RETURNS_FLAG
3237     ,       AC_CONTEXT
3238     ,       AC_ATTRIBUTE1
3239     ,       AC_ATTRIBUTE2
3240     ,       AC_ATTRIBUTE3
3241     ,       AC_ATTRIBUTE4
3242     ,       AC_ATTRIBUTE5
3243     ,       AC_ATTRIBUTE6
3244     ,       AC_ATTRIBUTE7
3245     ,       AC_ATTRIBUTE8
3246     ,       AC_ATTRIBUTE9
3247     ,       AC_ATTRIBUTE10
3248     ,       AC_ATTRIBUTE11
3249     ,       AC_ATTRIBUTE12
3250     ,       AC_ATTRIBUTE13
3251     ,       AC_ATTRIBUTE14
3252     ,       AC_ATTRIBUTE15
3253     --uom begin
3254     ,       OPERAND_PER_PQTY
3255     ,       ADJUSTED_AMOUNT_PER_PQTY
3256     --uom end
3257     --RETRO{
3258     , retrobill_request_id
3259     --RETRO}
3260     ,	  INVOICED_AMOUNT
3261     ,	  LOCK_CONTROL
3262     -- eBTax Changes
3263     ,     TAX_RATE_ID
3264     )
3265     VALUES
3266     (       p_Line_Adj_rec.price_adjustment_id
3267     ,       p_Line_Adj_rec.creation_date
3268     ,       p_Line_Adj_rec.created_by
3269     ,       p_Line_Adj_rec.last_update_date
3270     ,       p_Line_Adj_rec.last_updated_by
3271     ,       p_Line_Adj_rec.last_update_login
3272     ,       p_Line_Adj_rec.program_application_id
3273     ,       p_Line_Adj_rec.program_id
3274     ,       p_Line_Adj_rec.program_update_date
3275     ,       p_Line_Adj_rec.request_id
3276     ,       p_Line_Adj_rec.header_id
3277     ,       p_Line_Adj_rec.discount_id
3278     ,       p_Line_Adj_rec.discount_line_id
3279     ,       p_Line_Adj_rec.automatic_flag
3280     ,       p_Line_Adj_rec.percent
3281     ,       p_Line_Adj_rec.line_id
3282     ,       p_Line_Adj_rec.context
3283     ,       p_Line_Adj_rec.attribute1
3284     ,       p_Line_Adj_rec.attribute2
3285     ,       p_Line_Adj_rec.attribute3
3286     ,       p_Line_Adj_rec.attribute4
3287     ,       p_Line_Adj_rec.attribute5
3288     ,       p_Line_Adj_rec.attribute6
3289     ,       p_Line_Adj_rec.attribute7
3290     ,       p_Line_Adj_rec.attribute8
3291     ,       p_Line_Adj_rec.attribute9
3292     ,       p_Line_Adj_rec.attribute10
3293     ,       p_Line_Adj_rec.attribute11
3294     ,       p_Line_Adj_rec.attribute12
3295     ,       p_Line_Adj_rec.attribute13
3296     ,       p_Line_Adj_rec.attribute14
3297     ,       p_Line_Adj_rec.attribute15
3298     ,       p_Line_Adj_rec.orig_sys_discount_ref
3299     ,	  p_Line_Adj_rec.LIST_HEADER_ID
3300     ,	  p_Line_Adj_rec.LIST_LINE_ID
3301     ,	  p_Line_Adj_rec.LIST_LINE_TYPE_CODE
3302     ,	  p_Line_Adj_rec.MODIFIER_MECHANISM_TYPE_CODE
3303     ,	  p_Line_Adj_rec.MODIFIED_FROM
3304     ,	  p_Line_Adj_rec.MODIFIED_TO
3305     ,	  p_Line_Adj_rec.UPDATED_FLAG
3306     ,	  p_Line_Adj_rec.UPDATE_ALLOWED
3307     ,	  p_Line_Adj_rec.APPLIED_FLAG
3308     ,	  p_Line_Adj_rec.CHANGE_REASON_CODE
3309     ,	  p_Line_Adj_rec.CHANGE_REASON_TEXT
3310     ,	  p_Line_Adj_rec.operand
3311     ,	  p_Line_Adj_rec.arithmetic_operator
3312     ,	  p_line_Adj_rec.COST_ID
3313     ,	  p_line_Adj_rec.TAX_CODE
3314     ,	  p_line_Adj_rec.TAX_EXEMPT_FLAG
3315     ,	  p_line_Adj_rec.TAX_EXEMPT_NUMBER
3316     ,	  p_line_Adj_rec.TAX_EXEMPT_REASON_CODE
3317     ,	  p_line_Adj_rec.PARENT_ADJUSTMENT_ID
3318     ,	  p_line_Adj_rec.INVOICED_FLAG
3319     ,	  p_line_Adj_rec.ESTIMATED_FLAG
3320     ,	  p_line_Adj_rec.INC_IN_SALES_PERFORMANCE
3321     ,	  p_line_Adj_rec.SPLIT_ACTION_CODE
3322     ,	  p_line_Adj_rec.ADJUSTED_AMOUNT
3323     ,	  p_line_Adj_rec.PRICING_PHASE_ID
3324     ,	  p_line_Adj_rec.CHARGE_TYPE_CODE
3325     ,	  p_line_Adj_rec.CHARGE_SUBTYPE_CODE
3326     ,       p_Line_Adj_rec.list_line_no
3327     ,       p_Line_Adj_rec.source_system_code
3328     ,       p_Line_Adj_rec.benefit_qty
3329     ,       p_Line_Adj_rec.benefit_uom_code
3330     ,       p_Line_Adj_rec.print_on_invoice_flag
3331     ,       p_Line_Adj_rec.expiration_date
3332     ,       p_Line_Adj_rec.rebate_transaction_type_code
3333     ,       p_Line_Adj_rec.rebate_transaction_reference
3334     ,       p_Line_Adj_rec.rebate_payment_system_code
3335     ,       p_Line_Adj_rec.redeemed_date
3336     ,       p_Line_Adj_rec.redeemed_flag
3337     ,       p_Line_Adj_rec.accrual_flag
3338     ,       p_Line_Adj_rec.range_break_quantity
3339     ,       p_Line_Adj_rec.accrual_conversion_rate
3340     ,       p_Line_Adj_rec.pricing_group_sequence
3341     ,       p_Line_Adj_rec.modifier_level_code
3342     ,       p_Line_Adj_rec.price_break_type_code
3343     ,       p_Line_Adj_rec.substitution_attribute
3344     ,       p_Line_Adj_rec.proration_type_code
3345     ,       p_Line_Adj_rec.credit_or_charge_flag
3346     ,       p_Line_Adj_rec.include_on_returns_flag
3347     ,       p_Line_Adj_rec.ac_context
3348     ,       p_Line_Adj_rec.ac_attribute1
3349     ,       p_Line_Adj_rec.ac_attribute2
3350     ,       p_Line_Adj_rec.ac_attribute3
3351     ,       p_Line_Adj_rec.ac_attribute4
3352     ,       p_Line_Adj_rec.ac_attribute5
3353     ,       p_Line_Adj_rec.ac_attribute6
3354     ,       p_Line_Adj_rec.ac_attribute7
3355     ,       p_Line_Adj_rec.ac_attribute8
3356     ,       p_Line_Adj_rec.ac_attribute9
3357     ,       p_Line_Adj_rec.ac_attribute10
3358     ,       p_Line_Adj_rec.ac_attribute11
3359     ,       p_Line_Adj_rec.ac_attribute12
3360     ,       p_Line_Adj_rec.ac_attribute13
3361     ,       p_Line_Adj_rec.ac_attribute14
3362     ,       p_Line_Adj_rec.ac_attribute15
3363     --uom begin
3364     ,       p_line_adj_rec.OPERAND_PER_PQTY
3365     ,       p_line_adj_rec.ADJUSTED_AMOUNT_PER_PQTY
3366     --uom end
3367     --RETRO{
3368     ,       p_line_adj_rec.retrobill_request_id
3369     --RETRO}
3370     ,	    p_line_Adj_rec.INVOICED_AMOUNT
3371     ,       l_lock_control
3372     -- eBTax changes
3373     ,      p_line_adj_rec.tax_rate_id
3374     );
3375 
3376     p_Line_Adj_rec.lock_control := l_lock_control;
3377 
3378    --calling notification framework to update_global picture
3379    --check code release level first. Notification framework is at Pack H level
3380    IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110508' THEN
3381       OE_ORDER_UTIL.Update_Global_Picture(p_Upd_New_Rec_If_Exists => True,
3382                     p_old_line_adj_rec => NULL,
3383                     p_line_adj_rec =>p_line_adj_rec,
3384                     p_line_adj_id => p_line_adj_rec.price_adjustment_id,
3385                     x_index => l_index,
3386                     x_return_status => l_return_status);
3387         IF l_debug_level  > 0 THEN
3388             oe_debug_pub.add(  'UPDATE_GLOBAL RETURN STATUS FROM OE_LINE_ADJ_UTIL.INSERT_RO IS: ' || L_RETURN_STATUS ) ;
3389            oe_debug_pub.add(  'RETURNED INDEX IS: ' || L_INDEX , 1 ) ;
3390        END IF;
3391 
3392        IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3393            IF l_debug_level  > 0 THEN
3394                oe_debug_pub.add(  'EVENT NOTIFY - UNEXPECTED ERROR' ) ;
3395                oe_debug_pub.add(  'EXITING OE_LINE_ADJ_UTIL.INSERT_ROW' , 1 ) ;
3396            END IF;
3397            RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3398         ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3399             IF l_debug_level  > 0 THEN
3400                 oe_debug_pub.add(  'UPDATE_GLOBAL_PICTURE ERROR IN OE_LINE_ADJ_UTIL.INSERT_ROW' ) ;
3401                 oe_debug_pub.add(  'EXITINGOE_LINE_ADJ_UTIL.INSERT_ROW' , 1 ) ;
3402             END IF;
3403 	    RAISE FND_API.G_EXC_ERROR;
3404         END IF;
3405       END IF; /*code_release_level*/
3406     -- notification framework end
3407 
3408     IF l_debug_level  > 0 THEN
3409         oe_debug_pub.add(  'EXITING OE_LINE_ADJ_UTIL.INSERT_ROW.' , 1 ) ;
3410     END IF;
3411 
3412 EXCEPTION
3413 
3414     WHEN DUP_VAL_ON_INDEX Then
3415       Reset_Sequence;
3416       IF l_debug_level  > 0 THEN
3417           oe_debug_pub.add(  G_PKG_NAME||':INSER_ROW:'||SQLERRM ) ;
3418       END IF;
3419         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
3420         THEN
3421             OE_MSG_PUB.Add_Exc_Msg
3422             (   G_PKG_NAME
3423             ,   'Insert_Row'
3424             );
3425         END IF;
3426 
3427         --FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME,'Insert_Row:'||SQLERRM);
3428 
3429         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3430 
3431     WHEN OTHERS THEN
3432         IF l_debug_level  > 0 THEN
3433             oe_debug_pub.add(  G_PKG_NAME||':INSER_ROW:'||SQLERRM ) ;
3434         END IF;
3435         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
3436         THEN
3437             OE_MSG_PUB.Add_Exc_Msg
3438             (   G_PKG_NAME
3439             ,   'Insert_Row'
3440             );
3441         END IF;
3442 
3443         --FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME,'Insert_Row:'||SQLERRM);
3444 
3445         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3446 
3447 END Insert_Row;
3448 
3449 --  Procedure Delete_Row
3450 
3451 PROCEDURE Delete_Row
3452 (   p_price_adjustment_id           IN  NUMBER :=
3453                                         FND_API.G_MISS_NUM
3454 ,   p_line_id                       IN  NUMBER :=
3455                                         FND_API.G_MISS_NUM
3456 )
3457 IS
3458 l_return_status		VARCHAR2(30);
3459 CURSOR price_adj IS
3460 	SELECT price_adjustment_id
3461 	FROM OE_PRICE_ADJUSTMENTS
3462 	WHERE   LINE_ID = p_line_id;
3463 
3464 -- added for notification framework
3465 l_new_line_adj_rec     OE_Order_PUB.Line_Adj_Rec_Type;
3466 l_index    NUMBER;
3467 
3468 --
3469 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
3470 --
3471 BEGIN
3472   IF l_debug_level  > 0 THEN
3473       oe_debug_pub.add(  'ENTERING OE_LINE_ADJ_UTIL.DELETE_ROW' ) ;
3474   END IF;
3475   IF p_line_id <> FND_API.G_MISS_NUM
3476   THEN
3477     IF l_debug_level  > 0 THEN
3478         oe_debug_pub.add(  ' P_LINE_ID <> G_MISS_NUM' ) ;
3479     END IF;
3480     FOR l_adj IN price_adj LOOP
3481 
3482    --added for notification framework
3483    --check code release level first. Notification framework is at Pack H level
3484       IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110508' THEN
3485            IF l_debug_level  > 0 THEN
3486                oe_debug_pub.add(  'JFC: IN DELETE ROW , PRICE_ADJUSTMENT_ID'||L_ADJ.PRICE_ADJUSTMENT_ID , 1 ) ;
3487            END IF;
3488       /* Set the operation on the record so that globals are updated as well */
3489         l_new_line_adj_rec.operation := OE_GLOBALS.G_OPR_DELETE;
3490         l_new_line_adj_rec.price_adjustment_id := l_adj.price_adjustment_id;
3491          OE_ORDER_UTIL.Update_Global_Picture(p_Upd_New_Rec_If_Exists => True,
3492                     p_line_adj_rec =>l_new_line_adj_rec,
3493                     p_line_adj_id => l_adj.price_adjustment_id,
3494                     x_index => l_index,
3495                     x_return_status => l_return_status);
3496             IF l_debug_level  > 0 THEN
3497                 oe_debug_pub.add(  'UPDATE_GLOBAL RETURN STATUS FROM OE_LINE_ADJ_UTIL.DELETE_ROW IS: ' || L_RETURN_STATUS ) ;
3498             END IF;
3499 
3500         IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3501            IF l_debug_level  > 0 THEN
3502                oe_debug_pub.add(  'EVENT NOTIFY - UNEXPECTED ERROR' ) ;
3503                oe_debug_pub.add(  'EXITING OE_LINE_ADJ_UTIL.DELETE_ROW' , 1 ) ;
3504            END IF;
3505 	   RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3506         ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3507             IF l_debug_level  > 0 THEN
3508                 oe_debug_pub.add(  'UPDATE_GLOBAL_PICTURE ERROR IN OE_LINE_ADJ_UTIL.DELETE_ROW' ) ;
3509                oe_debug_pub.add(  'EXITING OE_LINE_ADJ_UTIL.DELETE_ROW' , 1 ) ;
3510            END IF;
3511        	RAISE FND_API.G_EXC_ERROR;
3512        END IF;
3513      END IF; /*code_release_level*/
3514   -- end notification framework
3515 
3516       OE_Delayed_Requests_Pvt.Delete_Reqs_for_deleted_entity(
3517         p_entity_code  => OE_GLOBALS.G_ENTITY_LINE_ADJ,
3518         p_entity_id     => l_adj.price_adjustment_id,
3519         x_return_status => l_return_status
3520         );
3521 	  OE_Line_Price_Aattr_Util.delete_row(
3522 			p_price_adjustment_id=>l_adj.price_adjustment_id);
3523 
3524        -- fixed bug 1658300
3525 	  /***
3526 	  OE_Line_Adj_Assocs_Util.delete_row(
3527 			p_price_adjustment_id=>l_adj.price_adjustment_id);
3528 	  ***/
3529 
3530     END LOOP;
3531     DELETE  FROM OE_PRICE_ADJUSTMENTS
3532     WHERE   LINE_ID = p_line_id;
3533   ELSE
3534      IF l_debug_level  > 0 THEN
3535          oe_debug_pub.add(  ' P_LINE_ID = G_MISS_NUM' ) ;
3536      END IF;
3537 
3538     --added for notification framework
3539    --check code release level first. Notification framework is at Pack H level
3540      IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110508' THEN
3541          IF l_debug_level  > 0 THEN
3542              oe_debug_pub.add(  'JFC: IN DELETE ROW , LINE_ID IS G_MISS_NUM , PRICE_ADJUSTMENT_ID'||P_PRICE_ADJUSTMENT_ID , 1 ) ;
3543          END IF;
3544       /* Set the operation on the record so that globals are updated as well */
3545        l_new_line_adj_rec.operation := OE_GLOBALS.G_OPR_DELETE;
3546        l_new_line_adj_rec.price_adjustment_id := p_price_adjustment_id;
3547           OE_ORDER_UTIL.Update_Global_Picture(p_Upd_New_Rec_If_Exists => True,
3548                     p_line_adj_rec =>l_new_line_adj_rec,
3549                     p_line_adj_id => p_price_adjustment_id,
3550                     x_index => l_index,
3551                     x_return_status => l_return_status);
3552           IF l_debug_level  > 0 THEN
3553               oe_debug_pub.add(  'UPDATE_GLOBAL RETURN STATUS FROM OE_LINE_ADJ_UTIL.DELETE_ROW IS: ' || L_RETURN_STATUS ) ;
3554           END IF;
3555         IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3556           IF l_debug_level  > 0 THEN
3557               oe_debug_pub.add(  'EVENT NOTIFY - UNEXPECTED ERROR' ) ;
3558               oe_debug_pub.add(  'EXITING OE_LINE_ADJ_UTIL.DELETE_ROW' , 1 ) ;
3559           END IF;
3560 	  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3561         ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3562           IF l_debug_level  > 0 THEN
3563               oe_debug_pub.add(  'UPDATE_GLOBAL_PICTURE ERROR IN OE_LINE_ADJ_UTIL.DELETE_ROW' ) ;
3564               oe_debug_pub.add(  'EXITING OE_LINE_ADJ_UTIL.DELETE_ROW' , 1 ) ;
3565           END IF;
3566       	RAISE FND_API.G_EXC_ERROR;
3567        END IF;
3568      END IF;  /*code_release_level*/
3569   -- end notification framework
3570 
3571       OE_Delayed_Requests_Pvt.Delete_Reqs_for_deleted_entity
3572         (p_entity_code  => OE_GLOBALS.G_ENTITY_LINE_ADJ,
3573         p_entity_id     => p_price_adjustment_id,
3574         x_return_status => l_return_status
3575         );
3576 
3577 	  OE_Line_Price_Aattr_Util.delete_row(
3578 			p_price_adjustment_id=>p_price_adjustment_id);
3579 
3580        -- fixed bug 1658300
3581 	  /***
3582 	  OE_Line_Adj_Assocs_Util.delete_row(
3583 			p_price_adjustment_id=>p_price_adjustment_id);
3584        ***/
3585 
3586 --bug3528335 moving the following DELETE statement before deletion of the parent and checking for PBH.
3587     --bug3405372 deleting the child lines of PBH modifiers as well
3588     DELETE FROM OE_PRICE_ADJUSTMENTS
3589     WHERE PRICE_ADJUSTMENT_ID IN (SELECT RLTD_PRICE_ADJ_ID
3590 				  FROM OE_PRICE_ADJ_ASSOCS ASSOCS,
3591 				       OE_PRICE_ADJUSTMENTS PARENT
3592 				  WHERE ASSOCS.PRICE_ADJUSTMENT_ID=PARENT.PRICE_ADJUSTMENT_ID
3593 				  AND PARENT.PRICE_ADJUSTMENT_ID=p_price_adjustment_id
3594 				  AND PARENT.LIST_LINE_TYPE_CODE='PBH');
3595     IF l_debug_level > 0 THEN
3596        oe_debug_pub.add('pviprana: Deleted '|| SQL%ROWCOUNT || ' Child Lines');
3597     END IF;
3598     --bug3528335 end
3599 
3600 
3601 
3602     DELETE  FROM OE_PRICE_ADJUSTMENTS
3603     WHERE   PRICE_ADJUSTMENT_ID = p_price_adjustment_id;
3604 
3605   END IF;
3606 IF l_debug_level  > 0 THEN
3607     oe_debug_pub.add(  'LEAVING OE_LINE_ADJ_UTIL.DELETE_ROW' ) ;
3608 END IF;
3609 EXCEPTION
3610 
3611     WHEN OTHERS THEN
3612         IF l_debug_level  > 0 THEN
3613             oe_debug_pub.add(  G_PKG_NAME||':DELETE_ROW:'||SQLERRM ) ;
3614         END IF;
3615         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
3616         THEN
3617             OE_MSG_PUB.Add_Exc_Msg
3618             (   G_PKG_NAME
3619             ,   'Delete_Row'
3620             );
3621         END IF;
3622 
3623         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3624 
3625 END Delete_Row;
3626 
3627 --  Procedure Query_Row
3628 
3629 PROCEDURE Query_Row
3630 (   p_price_adjustment_id     IN  NUMBER
3631 ,   x_Line_Adj_Rec 			IN OUT NOCOPY OE_Order_PUB.Line_Adj_Rec_Type
3632 )
3633 IS
3634   l_Line_Adj_Tbl		OE_Order_PUB.Line_Adj_Tbl_Type;
3635 BEGIN
3636 
3637     Query_Rows
3638         (   p_price_adjustment_id        => p_price_adjustment_id
3639 	   ,   x_Line_Adj_Tbl			 => l_Line_Adj_Tbl
3640 	   );
3641     x_Line_Adj_Rec := l_Line_Adj_Tbl(1);
3642 
3643 END Query_Row;
3644 
3645 --  Procedure Query_Rows
3646 
3647 PROCEDURE Query_Rows
3648 (   p_price_adjustment_id           IN  NUMBER :=
3649                                         FND_API.G_MISS_NUM
3650 ,   p_line_id                       IN  NUMBER :=
3651                                         FND_API.G_MISS_NUM
3652 ,   p_Header_id                     IN  NUMBER :=
3653                                         FND_API.G_MISS_NUM
3654 ,   p_Line_Level_Header_id          IN  NUMBER :=
3655                                         FND_API.G_MISS_NUM
3656 ,   x_Line_Adj_Tbl 		           IN OUT NOCOPY OE_Order_PUB.Line_Adj_Tbl_Type
3657 )
3658 IS
3659 l_count			NUMBER;
3660 
3661 CURSOR l_Line_Adj_csr IS
3662     SELECT  ATTRIBUTE1
3663     ,       ATTRIBUTE10
3664     ,       ATTRIBUTE11
3665     ,       ATTRIBUTE12
3666     ,       ATTRIBUTE13
3667     ,       ATTRIBUTE14
3668     ,       ATTRIBUTE15
3669     ,       ATTRIBUTE2
3670     ,       ATTRIBUTE3
3671     ,       ATTRIBUTE4
3672     ,       ATTRIBUTE5
3673     ,       ATTRIBUTE6
3674     ,       ATTRIBUTE7
3675     ,       ATTRIBUTE8
3676     ,       ATTRIBUTE9
3677     ,       AUTOMATIC_FLAG
3678     ,       CONTEXT
3679     ,       CREATED_BY
3680     ,       CREATION_DATE
3681     ,       DISCOUNT_ID
3682     ,       DISCOUNT_LINE_ID
3683     ,       HEADER_ID
3684     ,       LAST_UPDATED_BY
3685     ,       LAST_UPDATE_DATE
3686     ,       LAST_UPDATE_LOGIN
3687     ,       LINE_ID
3688     ,       PERCENT
3689     ,       PRICE_ADJUSTMENT_ID
3690     ,       PROGRAM_APPLICATION_ID
3691     ,       PROGRAM_ID
3692     ,       PROGRAM_UPDATE_DATE
3693     ,       REQUEST_ID
3694     ,	  LIST_HEADER_ID
3695     ,	  LIST_LINE_ID
3696     ,	  LIST_LINE_TYPE_CODE
3697     ,	  MODIFIER_MECHANISM_TYPE_CODE
3698     ,	  MODIFIED_FROM
3699     ,	  MODIFIED_TO
3700     ,	  UPDATED_FLAG
3701     ,	  UPDATE_ALLOWED
3702     ,	  APPLIED_FLAG
3703     ,	  CHANGE_REASON_CODE
3704     ,	  CHANGE_REASON_TEXT
3705     ,	  operand
3706     ,	  Arithmetic_operator
3707     ,	  COST_ID
3708     ,	  TAX_CODE
3709     ,	  TAX_EXEMPT_FLAG
3710     ,	  TAX_EXEMPT_NUMBER
3711     ,	  TAX_EXEMPT_REASON_CODE
3712     ,	  PARENT_ADJUSTMENT_ID
3713     ,	  INVOICED_FLAG
3714     ,	  ESTIMATED_FLAG
3715     ,	  INC_IN_SALES_PERFORMANCE
3716     ,	  SPLIT_ACTION_CODE
3717     ,	  ADJUSTED_AMOUNT
3718     ,	  PRICING_PHASE_ID
3719     ,	  CHARGE_TYPE_CODE
3720     ,	  CHARGE_SUBTYPE_CODE
3721     ,     list_line_no
3722     ,     source_system_code
3723     ,     benefit_qty
3724     ,     benefit_uom_code
3725     ,     print_on_invoice_flag
3726     ,     expiration_date
3727     ,     rebate_transaction_type_code
3728     ,     rebate_transaction_reference
3729     ,     rebate_payment_system_code
3730     ,     redeemed_date
3731     ,     redeemed_flag
3732     ,     accrual_flag
3733     ,     range_break_quantity
3734     ,     accrual_conversion_rate
3735     ,     pricing_group_sequence
3736     ,     modifier_level_code
3737     ,     price_break_type_code
3738     ,     substitution_attribute
3739     ,     proration_type_code
3740     ,       credit_or_charge_flag
3741     ,       include_on_returns_flag
3742     ,       AC_ATTRIBUTE1
3743     ,       AC_ATTRIBUTE10
3744     ,       AC_ATTRIBUTE11
3745     ,       AC_ATTRIBUTE12
3746     ,       AC_ATTRIBUTE13
3747     ,       AC_ATTRIBUTE14
3748     ,       AC_ATTRIBUTE15
3749     ,       AC_ATTRIBUTE2
3750     ,       AC_ATTRIBUTE3
3751     ,       AC_ATTRIBUTE4
3752     ,       AC_ATTRIBUTE5
3753     ,       AC_ATTRIBUTE6
3754     ,       AC_ATTRIBUTE7
3755     ,       AC_ATTRIBUTE8
3756     ,       AC_ATTRIBUTE9
3757     ,       AC_CONTEXT
3758 --uom begin
3759     ,     OPERAND_PER_PQTY
3760     ,     ADJUSTED_AMOUNT_PER_PQTY
3761 --uom end
3762     ,	  INVOICED_AMOUNT
3763     ,	  orig_sys_discount_ref
3764     --RETRO{
3765     , retrobill_request_id
3766     --RETRO}
3767     ,	  LOCK_CONTROL
3768     -- eBTax changes
3769     ,     TAX_RATE_ID
3770     FROM  OE_PRICE_ADJUSTMENTS
3771     WHERE PRICE_ADJUSTMENT_ID = p_price_adjustment_id;
3772 
3773 CURSOR l_Line_Adj_csr2 IS
3774     SELECT  ATTRIBUTE1
3775     ,       ATTRIBUTE10
3776     ,       ATTRIBUTE11
3777     ,       ATTRIBUTE12
3778     ,       ATTRIBUTE13
3779     ,       ATTRIBUTE14
3780     ,       ATTRIBUTE15
3781     ,       ATTRIBUTE2
3782     ,       ATTRIBUTE3
3783     ,       ATTRIBUTE4
3784     ,       ATTRIBUTE5
3785     ,       ATTRIBUTE6
3786     ,       ATTRIBUTE7
3787     ,       ATTRIBUTE8
3788     ,       ATTRIBUTE9
3789     ,       AUTOMATIC_FLAG
3790     ,       CONTEXT
3791     ,       CREATED_BY
3792     ,       CREATION_DATE
3793     ,       DISCOUNT_ID
3794     ,       DISCOUNT_LINE_ID
3795     ,       HEADER_ID
3796     ,       LAST_UPDATED_BY
3797     ,       LAST_UPDATE_DATE
3798     ,       LAST_UPDATE_LOGIN
3799     ,       LINE_ID
3800     ,       PERCENT
3801     ,       PRICE_ADJUSTMENT_ID
3802     ,       PROGRAM_APPLICATION_ID
3803     ,       PROGRAM_ID
3804     ,       PROGRAM_UPDATE_DATE
3805     ,       REQUEST_ID
3806     ,	  LIST_HEADER_ID
3807     ,	  LIST_LINE_ID
3808     ,	  LIST_LINE_TYPE_CODE
3809     ,	  MODIFIER_MECHANISM_TYPE_CODE
3810     ,	  MODIFIED_FROM
3811     ,	  MODIFIED_TO
3812     ,	  UPDATED_FLAG
3813     ,	  UPDATE_ALLOWED
3814     ,	  APPLIED_FLAG
3815     ,	  CHANGE_REASON_CODE
3816     ,	  CHANGE_REASON_TEXT
3817     ,	  operand
3818     ,	  Arithmetic_operator
3819     ,	  COST_ID
3820     ,	  TAX_CODE
3821     ,	  TAX_EXEMPT_FLAG
3822     ,	  TAX_EXEMPT_NUMBER
3823     ,	  TAX_EXEMPT_REASON_CODE
3824     ,	  PARENT_ADJUSTMENT_ID
3825     ,	  INVOICED_FLAG
3826     ,	  ESTIMATED_FLAG
3827     ,	  INC_IN_SALES_PERFORMANCE
3828     ,	  SPLIT_ACTION_CODE
3829     ,	  ADJUSTED_AMOUNT
3830     ,	  PRICING_PHASE_ID
3831     ,	  CHARGE_TYPE_CODE
3832     ,	  CHARGE_SUBTYPE_CODE
3833     ,     list_line_no
3834     ,     source_system_code
3835     ,     benefit_qty
3836     ,     benefit_uom_code
3837     ,     print_on_invoice_flag
3838     ,     expiration_date
3839     ,     rebate_transaction_type_code
3840     ,     rebate_transaction_reference
3841     ,     rebate_payment_system_code
3842     ,     redeemed_date
3843     ,     redeemed_flag
3844     ,     accrual_flag
3845     ,     range_break_quantity
3846     ,     accrual_conversion_rate
3847     ,     pricing_group_sequence
3848     ,     modifier_level_code
3849     ,     price_break_type_code
3850     ,     substitution_attribute
3851     ,     proration_type_code
3852     ,       credit_or_charge_flag
3853     ,       include_on_returns_flag
3854     ,       AC_ATTRIBUTE1
3855     ,       AC_ATTRIBUTE10
3856     ,       AC_ATTRIBUTE11
3857     ,       AC_ATTRIBUTE12
3858     ,       AC_ATTRIBUTE13
3859     ,       AC_ATTRIBUTE14
3860     ,       AC_ATTRIBUTE15
3861     ,       AC_ATTRIBUTE2
3862     ,       AC_ATTRIBUTE3
3863     ,       AC_ATTRIBUTE4
3864     ,       AC_ATTRIBUTE5
3865     ,       AC_ATTRIBUTE6
3866     ,       AC_ATTRIBUTE7
3867     ,       AC_ATTRIBUTE8
3868     ,       AC_ATTRIBUTE9
3869     ,       AC_CONTEXT
3870 --uom begin
3871     ,     OPERAND_PER_PQTY
3872     ,     ADJUSTED_AMOUNT_PER_PQTY
3873 --uom end
3874     ,	  INVOICED_AMOUNT
3875     ,	  orig_sys_discount_ref
3876     --RETRO{
3877     , retrobill_request_id
3878     --RETRO}
3879     ,	  LOCK_CONTROL
3880   -- eBTax changes
3881     ,     TAX_RATE_ID
3882     FROM    OE_PRICE_ADJUSTMENTS
3883     WHERE line_id = p_line_id;
3884 
3885 CURSOR l_Line_Adj_csr3 IS
3886     SELECT  ATTRIBUTE1
3887     ,       ATTRIBUTE10
3888     ,       ATTRIBUTE11
3889     ,       ATTRIBUTE12
3890     ,       ATTRIBUTE13
3891     ,       ATTRIBUTE14
3892     ,       ATTRIBUTE15
3893     ,       ATTRIBUTE2
3894     ,       ATTRIBUTE3
3895     ,       ATTRIBUTE4
3896     ,       ATTRIBUTE5
3897     ,       ATTRIBUTE6
3898     ,       ATTRIBUTE7
3899     ,       ATTRIBUTE8
3900     ,       ATTRIBUTE9
3901     ,       AUTOMATIC_FLAG
3902     ,       CONTEXT
3903     ,       CREATED_BY
3904     ,       CREATION_DATE
3905     ,       DISCOUNT_ID
3906     ,       DISCOUNT_LINE_ID
3907     ,       HEADER_ID
3908     ,       LAST_UPDATED_BY
3909     ,       LAST_UPDATE_DATE
3910     ,       LAST_UPDATE_LOGIN
3911     ,       LINE_ID
3912     ,       PERCENT
3913     ,       PRICE_ADJUSTMENT_ID
3914     ,       PROGRAM_APPLICATION_ID
3915     ,       PROGRAM_ID
3916     ,       PROGRAM_UPDATE_DATE
3917     ,       REQUEST_ID
3918     ,	  LIST_HEADER_ID
3919     ,	  LIST_LINE_ID
3920     ,	  LIST_LINE_TYPE_CODE
3921     ,	  MODIFIER_MECHANISM_TYPE_CODE
3922     ,	  MODIFIED_FROM
3923     ,	  MODIFIED_TO
3924     ,	  UPDATED_FLAG
3925     ,	  UPDATE_ALLOWED
3926     ,	  APPLIED_FLAG
3927     ,	  CHANGE_REASON_CODE
3928     ,	  CHANGE_REASON_TEXT
3929     ,	  operand
3930     ,	  Arithmetic_operator
3931     ,	  COST_ID
3932     ,	  TAX_CODE
3933     ,	  TAX_EXEMPT_FLAG
3934     ,	  TAX_EXEMPT_NUMBER
3935     ,	  TAX_EXEMPT_REASON_CODE
3936     ,	  PARENT_ADJUSTMENT_ID
3937     ,	  INVOICED_FLAG
3938     ,	  ESTIMATED_FLAG
3939     ,	  INC_IN_SALES_PERFORMANCE
3940     ,	  SPLIT_ACTION_CODE
3941     ,	  ADJUSTED_AMOUNT
3942     ,	  PRICING_PHASE_ID
3943     ,	  CHARGE_TYPE_CODE
3944     ,	  CHARGE_SUBTYPE_CODE
3945     ,     list_line_no
3946     ,     source_system_code
3947     ,     benefit_qty
3948     ,     benefit_uom_code
3949     ,     print_on_invoice_flag
3950     ,     expiration_date
3951     ,     rebate_transaction_type_code
3952     ,     rebate_transaction_reference
3953     ,     rebate_payment_system_code
3954     ,     redeemed_date
3955     ,     redeemed_flag
3956     ,     accrual_flag
3957     ,     range_break_quantity
3958     ,     accrual_conversion_rate
3959     ,     pricing_group_sequence
3960     ,     modifier_level_code
3961     ,     price_break_type_code
3962     ,     substitution_attribute
3963     ,     proration_type_code
3964     ,       credit_or_charge_flag
3965     ,       include_on_returns_flag
3966     ,       AC_ATTRIBUTE1
3967     ,       AC_ATTRIBUTE10
3968     ,       AC_ATTRIBUTE11
3969     ,       AC_ATTRIBUTE12
3970     ,       AC_ATTRIBUTE13
3971     ,       AC_ATTRIBUTE14
3972     ,       AC_ATTRIBUTE15
3973     ,       AC_ATTRIBUTE2
3974     ,       AC_ATTRIBUTE3
3975     ,       AC_ATTRIBUTE4
3976     ,       AC_ATTRIBUTE5
3977     ,       AC_ATTRIBUTE6
3978     ,       AC_ATTRIBUTE7
3979     ,       AC_ATTRIBUTE8
3980     ,       AC_ATTRIBUTE9
3981     ,       AC_CONTEXT
3982 --uom begin
3983     ,     OPERAND_PER_PQTY
3984     ,     ADJUSTED_AMOUNT_PER_PQTY
3985 --uom end
3986     ,	  INVOICED_AMOUNT
3987     ,	  orig_sys_discount_ref
3988     --RETRO{
3989     , retrobill_request_id
3990     --RETRO}
3991     ,	  LOCK_CONTROL
3992         -- eBTax changes
3993     ,     TAX_RATE_ID
3994     FROM    OE_PRICE_ADJUSTMENTS
3995     WHERE header_id = p_header_id
3996     and   line_id is null;
3997 
3998 --Line-level adjustments based on header_id
3999 CURSOR l_Line_Adj_csr4 IS
4000     SELECT  ATTRIBUTE1
4001     ,       ATTRIBUTE10
4002     ,       ATTRIBUTE11
4003     ,       ATTRIBUTE12
4004     ,       ATTRIBUTE13
4005     ,       ATTRIBUTE14
4006     ,       ATTRIBUTE15
4007     ,       ATTRIBUTE2
4008     ,       ATTRIBUTE3
4009     ,       ATTRIBUTE4
4010     ,       ATTRIBUTE5
4011     ,       ATTRIBUTE6
4012     ,       ATTRIBUTE7
4013     ,       ATTRIBUTE8
4014     ,       ATTRIBUTE9
4015     ,       AUTOMATIC_FLAG
4016     ,       CONTEXT
4017     ,       CREATED_BY
4018     ,       CREATION_DATE
4019     ,       DISCOUNT_ID
4020     ,       DISCOUNT_LINE_ID
4021     ,       HEADER_ID
4022     ,       LAST_UPDATED_BY
4023     ,       LAST_UPDATE_DATE
4024     ,       LAST_UPDATE_LOGIN
4025     ,       LINE_ID
4026     ,       PERCENT
4027     ,       PRICE_ADJUSTMENT_ID
4028     ,       PROGRAM_APPLICATION_ID
4029     ,       PROGRAM_ID
4030     ,       PROGRAM_UPDATE_DATE
4031     ,       REQUEST_ID
4032     ,	  LIST_HEADER_ID
4033     ,	  LIST_LINE_ID
4034     ,	  LIST_LINE_TYPE_CODE
4035     ,	  MODIFIER_MECHANISM_TYPE_CODE
4036     ,	  MODIFIED_FROM
4037     ,	  MODIFIED_TO
4038     ,	  UPDATED_FLAG
4039     ,	  UPDATE_ALLOWED
4040     ,	  APPLIED_FLAG
4041     ,	  CHANGE_REASON_CODE
4042     ,	  CHANGE_REASON_TEXT
4043     ,	  operand
4044     ,	  Arithmetic_operator
4045     ,	  COST_ID
4046     ,	  TAX_CODE
4047     ,	  TAX_EXEMPT_FLAG
4048     ,	  TAX_EXEMPT_NUMBER
4049     ,	  TAX_EXEMPT_REASON_CODE
4050     ,	  PARENT_ADJUSTMENT_ID
4051     ,	  INVOICED_FLAG
4052     ,	  ESTIMATED_FLAG
4053     ,	  INC_IN_SALES_PERFORMANCE
4054     ,	  SPLIT_ACTION_CODE
4055     ,	  ADJUSTED_AMOUNT
4056     ,	  PRICING_PHASE_ID
4057     ,	  CHARGE_TYPE_CODE
4058     ,	  CHARGE_SUBTYPE_CODE
4059     ,     list_line_no
4060     ,     source_system_code
4061     ,     benefit_qty
4062     ,     benefit_uom_code
4063     ,     print_on_invoice_flag
4064     ,     expiration_date
4065     ,     rebate_transaction_type_code
4066     ,     rebate_transaction_reference
4067     ,     rebate_payment_system_code
4068     ,     redeemed_date
4069     ,     redeemed_flag
4070     ,     accrual_flag
4071     ,     range_break_quantity
4072     ,     accrual_conversion_rate
4073     ,     pricing_group_sequence
4074     ,     modifier_level_code
4075     ,     price_break_type_code
4076     ,     substitution_attribute
4077     ,     proration_type_code
4078     ,       credit_or_charge_flag
4079     ,       include_on_returns_flag
4080     ,       AC_ATTRIBUTE1
4081     ,       AC_ATTRIBUTE10
4082     ,       AC_ATTRIBUTE11
4083     ,       AC_ATTRIBUTE12
4084     ,       AC_ATTRIBUTE13
4085     ,       AC_ATTRIBUTE14
4086     ,       AC_ATTRIBUTE15
4087     ,       AC_ATTRIBUTE2
4088     ,       AC_ATTRIBUTE3
4089     ,       AC_ATTRIBUTE4
4090     ,       AC_ATTRIBUTE5
4091     ,       AC_ATTRIBUTE6
4092     ,       AC_ATTRIBUTE7
4093     ,       AC_ATTRIBUTE8
4094     ,       AC_ATTRIBUTE9
4095     ,       AC_CONTEXT
4096 --uom begin
4097     ,     OPERAND_PER_PQTY
4098     ,     ADJUSTED_AMOUNT_PER_PQTY
4099 --uom end
4100     ,	  INVOICED_AMOUNT
4101     ,	  orig_sys_discount_ref
4102     --RETRO{
4103     , retrobill_request_id
4104     --RETRO}
4105     ,	  LOCK_CONTROL
4106  -- eBTax changes
4107     ,     TAX_RATE_ID
4108     FROM    OE_PRICE_ADJUSTMENTS
4109     WHERE header_id = p_line_level_header_id
4110     and   line_id is not null;
4111 
4112     l_implicit_rec l_line_adj_csr%ROWTYPE;
4113     l_entity                        NUMBER;
4114 --
4115 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
4116 --
4117 BEGIN
4118 
4119     IF
4120     (p_price_adjustment_id IS NOT NULL
4121      AND
4122      p_price_adjustment_id <> FND_API.G_MISS_NUM)
4123     AND
4124     (p_line_id IS NOT NULL
4125      AND
4126      p_line_id <> FND_API.G_MISS_NUM)
4127     THEN
4128             IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4129             THEN
4130                 OE_MSG_PUB.Add_Exc_Msg
4131                 (   G_PKG_NAME
4132                 ,   'Query Rows'
4133                 ,   'Keys are mutually exclusive: price_adjustment_id = '|| p_price_adjustment_id || ', line_id = '|| p_line_id
4134                 );
4135             END IF;
4136 
4137         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4138 
4139     END IF;
4140 
4141     IF nvl(p_price_adjustment_id,-1) <> FND_API.G_MISS_NUM THEN
4142 	   l_entity := 1;
4143            OPEN l_line_adj_csr;
4144     ELSIF nvl(p_line_id,-1) <> FND_API.G_MISS_NUM THEN
4145 	   l_entity := 2;
4146            OPEN l_line_adj_csr2;
4147     ELSIF nvl(p_header_id,-1) <> FND_API.G_MISS_NUM THEN
4148 	   l_entity := 3;
4149            OPEN l_line_adj_csr3;
4150     ELSIF nvl(p_line_level_header_id,-1) <> FND_API.G_MISS_NUM THEN
4151 	   l_entity := 4;
4152            OPEN l_line_adj_csr4;
4153     END IF;
4154 
4155     l_count := 1;
4156 
4157     --  Loop over fetched records
4158     LOOP
4159 
4160         IF l_entity = 1 THEN
4161              FETCH l_line_adj_csr INTO l_implicit_rec;
4162              EXIT WHEN l_line_adj_csr%NOTFOUND;
4163         ELSIF l_entity = 2 THEN
4164              FETCH l_line_adj_csr2 INTO l_implicit_rec;
4165              EXIT WHEN l_line_adj_csr2%NOTFOUND;
4166         ELSIF l_entity = 3 THEN
4167              FETCH l_line_adj_csr3 INTO l_implicit_rec;
4168              EXIT WHEN l_line_adj_csr3%NOTFOUND;
4169 	--bug3392650 (the condition l_entity=3 was being checked twice)
4170         ELSIF l_entity = 4 THEN
4171              FETCH l_line_adj_csr4 INTO l_implicit_rec;
4172              EXIT WHEN l_line_adj_csr4%NOTFOUND;
4173         ELSE
4174           EXIT;
4175         END IF;
4176 
4177         x_Line_Adj_tbl(l_count).attribute1      := l_implicit_rec.ATTRIBUTE1;
4178         x_Line_Adj_tbl(l_count).attribute10     := l_implicit_rec.ATTRIBUTE10;
4179         x_Line_Adj_tbl(l_count).attribute11     := l_implicit_rec.ATTRIBUTE11;
4180         x_Line_Adj_tbl(l_count).attribute12     := l_implicit_rec.ATTRIBUTE12;
4181         x_Line_Adj_tbl(l_count).attribute13     := l_implicit_rec.ATTRIBUTE13;
4182         x_Line_Adj_tbl(l_count).attribute14     := l_implicit_rec.ATTRIBUTE14;
4183         x_Line_Adj_tbl(l_count).attribute15     := l_implicit_rec.ATTRIBUTE15;
4184         x_Line_Adj_tbl(l_count).attribute2      := l_implicit_rec.ATTRIBUTE2;
4185         x_Line_Adj_tbl(l_count).attribute3      := l_implicit_rec.ATTRIBUTE3;
4186         x_Line_Adj_tbl(l_count).attribute4      := l_implicit_rec.ATTRIBUTE4;
4187         x_Line_Adj_tbl(l_count).attribute5      := l_implicit_rec.ATTRIBUTE5;
4188         x_Line_Adj_tbl(l_count).attribute6      := l_implicit_rec.ATTRIBUTE6;
4189         x_Line_Adj_tbl(l_count).attribute7      := l_implicit_rec.ATTRIBUTE7;
4190         x_Line_Adj_tbl(l_count).attribute8      := l_implicit_rec.ATTRIBUTE8;
4191         x_Line_Adj_tbl(l_count).attribute9      := l_implicit_rec.ATTRIBUTE9;
4192         x_Line_Adj_tbl(l_count).automatic_flag  := l_implicit_rec.AUTOMATIC_FLAG;
4193         x_Line_Adj_tbl(l_count).context         := l_implicit_rec.CONTEXT;
4194         x_Line_Adj_tbl(l_count).created_by      := l_implicit_rec.CREATED_BY;
4195         x_Line_Adj_tbl(l_count).creation_date   := l_implicit_rec.CREATION_DATE;
4196         x_Line_Adj_tbl(l_count).discount_id     := l_implicit_rec.DISCOUNT_ID;
4197         x_Line_Adj_tbl(l_count).discount_line_id := l_implicit_rec.DISCOUNT_LINE_ID;
4198         x_Line_Adj_tbl(l_count).header_id       := l_implicit_rec.HEADER_ID;
4199         x_Line_Adj_tbl(l_count).last_updated_by := l_implicit_rec.LAST_UPDATED_BY;
4200         x_Line_Adj_tbl(l_count).last_update_date := l_implicit_rec.LAST_UPDATE_DATE;
4201         x_Line_Adj_tbl(l_count).last_update_login := l_implicit_rec.LAST_UPDATE_LOGIN;
4202         x_Line_Adj_tbl(l_count).line_id         := l_implicit_rec.LINE_ID;
4203         x_Line_Adj_tbl(l_count).percent         := l_implicit_rec.PERCENT;
4204         x_Line_Adj_tbl(l_count).price_adjustment_id := l_implicit_rec.PRICE_ADJUSTMENT_ID;
4205         x_Line_Adj_tbl(l_count).program_application_id := l_implicit_rec.PROGRAM_APPLICATION_ID;
4206         x_Line_Adj_tbl(l_count).program_id      := l_implicit_rec.PROGRAM_ID;
4207         x_Line_Adj_tbl(l_count).program_update_date := l_implicit_rec.PROGRAM_UPDATE_DATE;
4208         x_Line_Adj_tbl(l_count).request_id      := l_implicit_rec.REQUEST_ID;
4209         x_Line_Adj_tbl(l_count).list_header_id      := l_implicit_rec.list_header_id;
4210         x_Line_Adj_tbl(l_count).list_line_id      := l_implicit_rec.list_line_id;
4211         x_Line_Adj_tbl(l_count).list_line_type_code      := l_implicit_rec.list_line_type_code;
4212         x_Line_Adj_tbl(l_count).modifier_mechanism_type_code := l_implicit_rec.modifier_mechanism_type_code;
4213       x_Line_Adj_tbl(l_count).modified_from      := l_implicit_rec.modified_from;
4214       x_Line_Adj_tbl(l_count).modified_to      := l_implicit_rec.modified_to;
4215       x_Line_Adj_tbl(l_count).updated_flag      := l_implicit_rec.updated_flag;
4216       x_Line_Adj_tbl(l_count).update_allowed    := l_implicit_rec.update_allowed;
4217       x_Line_Adj_tbl(l_count).applied_flag      := l_implicit_rec.applied_flag;
4218       x_Line_Adj_tbl(l_count).change_reason_code := l_implicit_rec.change_reason_code;
4219       x_Line_Adj_tbl(l_count).change_reason_text := l_implicit_rec.change_reason_text;
4220       x_Line_Adj_tbl(l_count).operand := l_implicit_rec.operand;
4221       x_Line_Adj_tbl(l_count).arithmetic_operator := l_implicit_rec.arithmetic_operator;
4222         x_Line_Adj_tbl(l_count).adjusted_amount := l_implicit_rec.adjusted_amount;
4223         x_Line_Adj_tbl(l_count).pricing_phase_id := l_implicit_rec.pricing_phase_id;
4224         x_Line_Adj_tbl(l_count).cost_id := l_implicit_rec.cost_id;
4225         x_Line_Adj_tbl(l_count).tax_code := l_implicit_rec.tax_code;
4226         x_Line_Adj_tbl(l_count).tax_exempt_flag := l_implicit_rec.tax_exempt_flag;
4227         x_Line_Adj_tbl(l_count).tax_exempt_number := l_implicit_rec.tax_exempt_number;
4228         x_Line_Adj_tbl(l_count).tax_exempt_reason_code := l_implicit_rec.tax_exempt_reason_code;
4229         x_Line_Adj_tbl(l_count).parent_adjustment_id := l_implicit_rec.parent_adjustment_id;
4230         x_Line_Adj_tbl(l_count).invoiced_flag := l_implicit_rec.invoiced_flag;
4231         x_Line_Adj_tbl(l_count).estimated_flag := l_implicit_rec.estimated_flag;
4232         x_Line_Adj_tbl(l_count).inc_in_sales_performance := l_implicit_rec.inc_in_sales_performance;
4233         x_Line_Adj_tbl(l_count).split_action_code := l_implicit_rec.split_action_code;
4234         x_Line_Adj_tbl(l_count).charge_type_code := l_implicit_rec.charge_type_code;
4235         x_Line_Adj_tbl(l_count).charge_subtype_code := l_implicit_rec.charge_subtype_code;
4236         x_Line_Adj_tbl(l_count).list_line_no := l_implicit_rec.list_line_no;
4237         x_Line_Adj_tbl(l_count).source_system_code := l_implicit_rec.source_system_code;
4238         x_Line_Adj_tbl(l_count).benefit_qty := l_implicit_rec.benefit_qty;
4239         x_Line_Adj_tbl(l_count).benefit_uom_code := l_implicit_rec.benefit_uom_code;
4240         x_Line_Adj_tbl(l_count).print_on_invoice_flag := l_implicit_rec.print_on_invoice_flag;
4241         x_Line_Adj_tbl(l_count).expiration_date := l_implicit_rec.expiration_date;
4242         x_Line_Adj_tbl(l_count).rebate_transaction_type_code := l_implicit_rec.rebate_transaction_type_code;
4243         x_Line_Adj_tbl(l_count).rebate_transaction_reference := l_implicit_rec.rebate_transaction_reference;
4244         x_Line_Adj_tbl(l_count).rebate_payment_system_code := l_implicit_rec.rebate_payment_system_code;
4245         x_Line_Adj_tbl(l_count).redeemed_date := l_implicit_rec.redeemed_date;
4246         x_Line_Adj_tbl(l_count).redeemed_flag := l_implicit_rec.redeemed_flag;
4247         x_Line_Adj_tbl(l_count).accrual_flag := l_implicit_rec.accrual_flag;
4248      x_Line_Adj_tbl(l_count).range_break_quantity := l_implicit_rec.range_break_quantity;
4249      x_Line_Adj_tbl(l_count).accrual_conversion_rate := l_implicit_rec.accrual_conversion_rate;
4250      x_Line_Adj_tbl(l_count).pricing_group_sequence := l_implicit_rec.pricing_group_sequence;
4251      x_Line_Adj_tbl(l_count).modifier_level_code := l_implicit_rec.modifier_level_code;
4252      x_Line_Adj_tbl(l_count).price_break_type_code := l_implicit_rec.price_break_type_code;
4253      x_Line_Adj_tbl(l_count).substitution_attribute := l_implicit_rec.substitution_attribute;
4254      x_Line_Adj_tbl(l_count).proration_type_code := l_implicit_rec.proration_type_code;
4255      x_Line_Adj_tbl(l_count).credit_or_charge_flag := l_implicit_rec.credit_or_charge_flag;
4256      x_Line_Adj_tbl(l_count).include_on_returns_flag := l_implicit_rec.include_on_returns_flag;
4257         x_Line_Adj_tbl(l_count).ac_attribute1    := l_implicit_rec.AC_ATTRIBUTE1;
4258         x_Line_Adj_tbl(l_count).ac_attribute10   := l_implicit_rec.AC_ATTRIBUTE10;
4259         x_Line_Adj_tbl(l_count).ac_attribute11   := l_implicit_rec.AC_ATTRIBUTE11;
4260         x_Line_Adj_tbl(l_count).ac_attribute12   := l_implicit_rec.AC_ATTRIBUTE12;
4261         x_Line_Adj_tbl(l_count).ac_attribute13   := l_implicit_rec.AC_ATTRIBUTE13;
4262         x_Line_Adj_tbl(l_count).ac_attribute14   := l_implicit_rec.AC_ATTRIBUTE14;
4263         x_Line_Adj_tbl(l_count).ac_attribute15   := l_implicit_rec.AC_ATTRIBUTE15;
4264         x_Line_Adj_tbl(l_count).ac_attribute2    := l_implicit_rec.AC_ATTRIBUTE2;
4265         x_Line_Adj_tbl(l_count).ac_attribute3    := l_implicit_rec.AC_ATTRIBUTE3;
4266         x_Line_Adj_tbl(l_count).ac_attribute4    := l_implicit_rec.AC_ATTRIBUTE4;
4267         x_Line_Adj_tbl(l_count).ac_attribute5    := l_implicit_rec.AC_ATTRIBUTE5;
4268         x_Line_Adj_tbl(l_count).ac_attribute6    := l_implicit_rec.AC_ATTRIBUTE6;
4269         x_Line_Adj_tbl(l_count).ac_attribute7    := l_implicit_rec.AC_ATTRIBUTE7;
4270         x_Line_Adj_tbl(l_count).ac_attribute8    := l_implicit_rec.AC_ATTRIBUTE8;
4271         x_Line_Adj_tbl(l_count).ac_attribute9    := l_implicit_rec.AC_ATTRIBUTE9;
4272         x_Line_Adj_tbl(l_count).ac_context       := l_implicit_rec.AC_CONTEXT;
4273 --uom begin
4274        x_Line_Adj_tbl(l_count).operand_per_pqty := l_implicit_rec.operand_per_pqty;
4275        x_Line_Adj_tbl(l_count).adjusted_amount_per_pqty := l_implicit_rec.adjusted_amount_per_pqty;
4276 --uom end
4277        x_Line_Adj_tbl(l_count).invoiced_amount    := l_implicit_rec.invoiced_amount;
4278        x_Line_Adj_tbl(l_count).orig_sys_discount_ref := l_implicit_rec.orig_sys_discount_ref;
4279         x_Line_Adj_tbl(l_count).lock_control      := l_implicit_rec.LOCK_CONTROL;
4280  -- eBTax Changes
4281         x_Line_Adj_tbl(l_count).tax_rate_id      := l_implicit_rec.tax_Rate_id;
4282 
4283         -- set values for non-DB fields
4284         x_Line_Adj_tbl(l_count).db_flag          := FND_API.G_TRUE;
4285         x_Line_Adj_tbl(l_count).operation        := FND_API.G_MISS_CHAR;
4286         x_Line_Adj_tbl(l_count).return_status    := FND_API.G_MISS_CHAR;
4287 
4288      -- bug 2209746   begin
4289      if (l_entity = 2) then
4290          if  nvl(l_implicit_rec.adjusted_amount,0) <> 0 then
4291 x_line_Adj_tbl(l_count).group_value := abs(l_implicit_rec.operand/l_implicit_rec.adjusted_amount);
4292        end if;
4293      end if;
4294      --bug 2209746    end
4295      --RT{
4296         x_Line_Adj_tbl(l_count).retrobill_request_id:=l_implicit_rec.retrobill_request_id;
4297      --RT}
4298 	   l_count := l_count + 1;
4299 
4300     END LOOP;
4301 
4302     IF l_entity = 1 THEN
4303         CLOSE l_line_adj_csr;
4304     ELSIF l_entity = 2 THEN
4305         CLOSE l_line_adj_csr2;
4306     ELSIF l_entity = 3 THEN
4307         CLOSE l_line_adj_csr3;
4308     ELSIF l_entity = 4 THEN
4309         CLOSE l_line_adj_csr4;
4310     END IF;
4311 
4312     --  PK sent and no rows found
4313 
4314     IF
4315     (p_price_adjustment_id IS NOT NULL
4316      AND
4317      p_price_adjustment_id <> FND_API.G_MISS_NUM)
4318     AND
4319     (x_Line_Adj_tbl.COUNT = 0)
4320     THEN
4321         RAISE NO_DATA_FOUND;
4322     END IF;
4323 
4324 
4325     --  Return fetched table
4326 
4327 EXCEPTION
4328 
4329     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4330         IF l_debug_level  > 0 THEN
4331             oe_debug_pub.add(  G_PKG_NAME||':QUERY_ROW:'||SQLERRM ) ;
4332         END IF;
4333         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4334 
4335     WHEN OTHERS THEN
4336         IF l_debug_level  > 0 THEN
4337             oe_debug_pub.add(  G_PKG_NAME||':QUERY_ROW:'||SQLERRM ) ;
4338         END IF;
4339         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4340         THEN
4341             OE_MSG_PUB.Add_Exc_Msg
4342             (   G_PKG_NAME
4343             ,   'Query_Rows'
4344             );
4345         END IF;
4346 
4347         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4348 
4349 END Query_Rows;
4350 
4351 --  Procedure       lock_Row
4352 
4353 PROCEDURE Lock_Row
4354 ( x_return_status OUT NOCOPY VARCHAR2
4355 
4356 ,   p_x_Line_Adj_rec                IN OUT NOCOPY OE_Order_PUB.Line_Adj_Rec_Type
4357 --                                      := OE_Order_PUB.G_MISS_LINE_ADJ_REC
4358 ,   p_price_adjustment_id           IN  NUMBER
4359                                         := FND_API.G_MISS_NUM
4360 -- ,   x_Line_Adj_rec                  OUT OE_Order_PUB.Line_Adj_Rec_Type
4361 )
4362 IS
4363 l_price_adjustment_id         NUMBER;
4364 l_Line_Adj_rec                OE_Order_PUB.Line_Adj_Rec_Type;
4365 l_lock_control				NUMBER;
4366 
4367 --
4368 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
4369 --
4370 BEGIN
4371 
4372    IF l_debug_level  > 0 THEN
4373        oe_debug_pub.add(  'ENTERING OE_LINE_ADJ_UTIL.LOCK_ROW' , 1 ) ;
4374    END IF;
4375 
4376     SAVEPOINT Lock_Row;
4377 
4378     l_lock_control := NULL;
4379 
4380     -- Retrieve the primary key.
4381     IF p_price_adjustment_id <> FND_API.G_MISS_NUM THEN
4382         l_price_adjustment_id := p_price_adjustment_id;
4383     ELSE
4384         l_price_adjustment_id := p_x_line_adj_rec.price_adjustment_id;
4385 	   l_lock_control := p_x_Line_Adj_rec.lock_control;
4386     END IF;
4387 
4388 
4389     -- added for performance change
4390     SELECT price_adjustment_id
4391     INTO   l_price_adjustment_id
4392     FROM   oe_price_adjustments
4393     WHERE  price_adjustment_id = l_price_adjustment_id
4394     FOR UPDATE NOWAIT;
4395 
4396     IF l_debug_level  > 0 THEN
4397         oe_debug_pub.add(  'SELECTING FOR UPDATE.' , 1 ) ;
4398     END IF;
4399 
4400     OE_Line_Adj_Util.Query_Row
4401     (p_price_adjustment_id	=> l_price_adjustment_id
4402     ,x_Line_Adj_rec 		=> p_x_Line_Adj_rec
4403     );
4404     -- If lock_control is not passed(is null or missing), then return the locked record.
4405 
4406 
4407     IF l_lock_control is null OR
4408        l_lock_control = FND_API.G_MISS_NUM
4409     THEN
4410 
4411         --  Set return status
4412         x_return_status                := FND_API.G_RET_STS_SUCCESS;
4413         p_x_line_adj_rec.return_status     := FND_API.G_RET_STS_SUCCESS;
4414 
4415         -- return for lock by ID.
4416 	RETURN;
4417 
4418     END IF;
4419 
4420     --  Row locked. If the whole record is passed, then
4421     --  Compare lock_control.
4422 
4423     IF l_debug_level  > 0 THEN
4424         oe_debug_pub.add(  'COMPARE ' , 1 ) ;
4425     END IF;
4426 
4427     IF      OE_GLOBALS.Equal(p_x_line_adj_rec.lock_control,
4428                              l_lock_control)
4429     THEN
4430 
4431         --  Row has not changed. Set out parameter.
4432 
4433         IF l_debug_level  > 0 THEN
4434             oe_debug_pub.add(  'LOCKED ROW' , 1 ) ;
4435         END IF;
4436 
4437         --  Set return status
4438 
4439         x_return_status                := FND_API.G_RET_STS_SUCCESS;
4440         p_x_line_adj_rec.return_status       := FND_API.G_RET_STS_SUCCESS;
4441 
4442     ELSE
4443 
4444         --  Row has changed by another user.
4445         IF l_debug_level  > 0 THEN
4446             oe_debug_pub.add(  'ROW CHANGED BY OTHER USER' , 1 ) ;
4447         END IF;
4448 
4449         x_return_status                := FND_API.G_RET_STS_ERROR;
4450         p_x_line_adj_rec.return_status       := FND_API.G_RET_STS_ERROR;
4451 
4452         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
4453         THEN
4454 
4455             -- Release the lock
4456             ROLLBACK TO Lock_Row;
4457 
4458             fnd_message.set_name('ONT','OE_LOCK_ROW_CHANGED');
4459             OE_MSG_PUB.Add;
4460 
4461         END IF;
4462 
4463     END IF;
4464 
4465 EXCEPTION
4466 
4467     WHEN NO_DATA_FOUND THEN
4468 
4469         x_return_status                := FND_API.G_RET_STS_ERROR;
4470         p_x_Line_Adj_rec.return_status   := FND_API.G_RET_STS_ERROR;
4471 
4472         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
4473         THEN
4474 
4475             FND_MESSAGE.SET_NAME('ONT','OE_LOCK_ROW_DELETED');
4476             FND_MSG_PUB.Add;
4477 
4478         END IF;
4479     WHEN APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION THEN
4480 
4481         x_return_status                := FND_API.G_RET_STS_ERROR;
4482         p_x_Line_Adj_rec.return_status   := FND_API.G_RET_STS_ERROR;
4483 
4484         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
4485         THEN
4486 
4487             FND_MESSAGE.SET_NAME('ONT','OE_LOCK_ROW_ALREADY_LOCKED');
4488             FND_MSG_PUB.Add;
4489 
4490         END IF;
4491     WHEN OTHERS THEN
4492 
4493         x_return_status                := FND_API.G_RET_STS_UNEXP_ERROR;
4494         p_x_Line_Adj_rec.return_status   := FND_API.G_RET_STS_UNEXP_ERROR;
4495 
4496         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4497         THEN
4498             OE_MSG_PUB.Add_Exc_Msg
4499             (   G_PKG_NAME
4500             ,   'Lock_Row'
4501             );
4502         END IF;
4503 
4504 END Lock_Row;
4505 
4506 --  Procedure       lock_Rows
4507 
4508 PROCEDURE Lock_Rows
4509 (   p_price_adjustment_id          IN  NUMBER
4510                                        := FND_API.G_MISS_NUM
4511 ,   p_line_id           			IN  NUMBER
4512                                        := FND_API.G_MISS_NUM
4513 ,   x_Line_Adj_tbl                  OUT NOCOPY OE_Order_PUB.Line_Adj_Tbl_Type
4514 , x_return_status OUT NOCOPY VARCHAR2
4515 
4516 )
4517 IS
4518 
4519   CURSOR lock_adj_lines(p_line_id IN NUMBER) IS
4520   SELECT price_adjustment_id
4521   FROM   oe_price_adjustments
4522   WHERE  line_id = p_line_id
4523   FOR UPDATE NOWAIT;
4524 
4525   l_price_adjustment_id         NUMBER;
4526   l_Line_Adj_tbl                OE_Order_PUB.Line_Adj_Tbl_Type;
4527   l_lock_control			  NUMBER;
4528 
4529 --
4530 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
4531 --
4532 BEGIN
4533 
4534   IF l_debug_level  > 0 THEN
4535       oe_debug_pub.add(  'ENTERING OE_LINE_ADJ_UTIL.LOCK_ROWS.' , 1 ) ;
4536   END IF;
4537 
4538   IF (p_price_adjustment_id IS NOT NULL AND
4539 	 p_price_adjustment_id <> FND_API.G_MISS_NUM) AND
4540      (p_line_id IS NOT NULL AND
4541 	 p_line_id <> FND_API.G_MISS_NUM)
4542   THEN
4543     IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
4544 	 OE_MSG_PUB.Add_Exc_Msg
4545 	 (  G_PKG_NAME
4546 	 ,  'Lock_Rows'
4547 	 ,  'Keys are mutually exclusive: price_adjustment_id = ' ||
4548 	    p_price_adjustment_id || ', line_id = ' || p_line_id );
4549     END IF;
4550 
4551     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4552   END IF;
4553 
4554   IF p_price_adjustment_id <> FND_API.G_MISS_NUM THEN
4555 
4556     SELECT price_adjustment_id
4557     INTO   l_price_adjustment_id
4558     FROM   oe_price_adjustments
4559     WHERE  price_adjustment_id = p_price_adjustment_id
4560     FOR UPDATE NOWAIT;
4561   END IF;
4562 
4563   -- null line_id shouldn't be passed in unnecessarily if
4564   -- price_adjustment_id is passed in already.
4565   BEGIN
4566     IF p_line_id <> FND_API.G_MISS_NUM THEN
4567 	 SAVEPOINT LOCK_ROWS;
4568 	 OPEN lock_adj_lines(p_line_id);
4569 
4570 	 LOOP
4571 	   FETCH lock_adj_lines INTO l_price_adjustment_id;
4572 	   EXIT WHEN lock_adj_lines%NOTFOUND;
4573       END LOOP;
4574       CLOSE lock_adj_lines;
4575     END IF;
4576   EXCEPTION
4577     WHEN OTHERS THEN
4578 	 ROLLBACK TO LOCK_ROWS;
4579 
4580 	 IF lock_adj_lines%ISOPEN THEN
4581         CLOSE lock_adj_lines;
4582       END IF;
4583 
4584 	 RAISE;
4585   END;
4586 
4587   OE_Line_Adj_Util.Query_Rows
4588   ( p_price_adjustment_id	=> p_price_adjustment_id
4589   , p_line_id				=> p_line_id
4590   , x_Line_Adj_tbl			=> x_Line_Adj_tbl
4591   );
4592 
4593   x_return_status := FND_API.G_RET_STS_SUCCESS;
4594 
4595   EXCEPTION
4596     WHEN NO_DATA_FOUND THEN
4597       x_return_status                := FND_API.G_RET_STS_ERROR;
4598       IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
4599       THEN
4600         fnd_message.set_name('ONT','OE_LOCK_ROW_DELETED');
4601         OE_MSG_PUB.Add;
4602       END IF;
4603 
4604      WHEN APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION THEN
4605        x_return_status                := FND_API.G_RET_STS_ERROR;
4606        IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
4607        THEN
4608          fnd_message.set_name('ONT','OE_LOCK_ROW_ALREADY_LOCKED');
4609          OE_MSG_PUB.Add;
4610        END IF;
4611 
4612      WHEN OTHERS THEN
4613         x_return_status                := FND_API.G_RET_STS_UNEXP_ERROR;
4614        IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4615        THEN
4616          OE_MSG_PUB.Add_Exc_Msg
4617          (   G_PKG_NAME
4618           ,   'Lock_Row'
4619          );
4620        END IF;
4621 
4622    IF l_debug_level  > 0 THEN
4623        oe_debug_pub.add(  'EXITING OE_LINE_ADJ_UTIL.LOCK_ROWS.' , 1 ) ;
4624    END IF;
4625 
4626 END Lock_Rows;
4627 
4628 PROCEDURE Log_Adj_Requests
4629 ( x_return_status OUT NOCOPY VARCHAR2
4630 
4631 , p_adj_rec		IN	OE_order_pub.Line_Adj_Rec_Type
4632 , p_old_adj_rec		IN	OE_order_pub.Line_Adj_Rec_Type
4633 , p_delete_flag		IN	BOOLEAN DEFAULT FALSE
4634   ) IS
4635 BEGIN
4636 
4637    x_return_status := FND_API.G_RET_STS_SUCCESS;
4638 
4639    -- if the adjustment_id changed or the percent changed
4640    -- or discount or discount_line has changed
4641 
4642     IF (  (p_adj_rec.price_adjustment_id <> p_old_adj_rec.price_adjustment_id
4643 	   OR
4644 	   p_old_adj_rec.price_adjustment_id IS NULL)
4645 	OR
4646 	  (p_adj_rec.operand <> p_old_adj_rec.operand
4647 	   OR
4648 	   p_old_adj_rec.operand IS NULL)
4649 	OR
4650 	  (p_adj_rec.list_line_id <> p_old_adj_rec.list_line_id
4651 	   OR
4652 	   p_old_adj_rec.list_line_id IS NULL)
4653 	OR
4654 	  (p_adj_rec.list_header_id <> p_old_adj_rec.list_header_id
4655 	   OR
4656 	   p_old_adj_rec.list_header_id IS NULL)
4657 	OR
4658 	  p_delete_flag)
4659       THEN
4660 
4661 	  /*
4662        oe_delayed_requests_pvt.log_request(p_entity_code	=> OE_GLOBALS.G_ENTITY_LINE_ADJ,
4663 		   p_entity_id		=> p_adj_rec.line_id,
4664 		   p_requesting_entity_code        => OE_GLOBALS.G_ENTITY_LINE_ADJ,
4665                    p_requesting_entity_id          => p_adj_rec.price_adjustment_id,
4666 		   p_request_type	=> OE_GLOBALS.G_PRICE_ADJ,
4667 		   x_return_status	=> x_return_status);
4668 		   */
4669 		   null;
4670 
4671     END IF;
4672 
4673 END Log_Adj_Requests;
4674 
4675 --  Function Get_Values
4676 
4677 FUNCTION Get_Values
4678 (   p_Line_Adj_rec                  IN  OE_Order_PUB.Line_Adj_Rec_Type
4679 ,   p_old_Line_Adj_rec              IN  OE_Order_PUB.Line_Adj_Rec_Type :=
4680                                         OE_Order_PUB.G_MISS_LINE_ADJ_REC
4681 ) RETURN OE_Order_PUB.Line_Adj_Val_Rec_Type
4682 IS
4683 l_Line_Adj_val_rec            OE_Order_PUB.Line_Adj_Val_Rec_Type;
4684 BEGIN
4685 
4686     IF (p_Line_Adj_rec.discount_id IS NULL OR
4687         p_Line_Adj_rec.discount_id <> FND_API.G_MISS_NUM) AND
4688         NOT OE_GLOBALS.Equal(p_Line_Adj_rec.discount_id,
4689         p_old_Line_Adj_rec.discount_id)
4690     THEN
4691         l_Line_Adj_val_rec.discount := OE_Id_To_Value.Discount
4692         (   p_discount_id                 => p_Line_Adj_rec.discount_id
4693         );
4694     END IF;
4695 
4696     RETURN l_Line_Adj_val_rec;
4697 
4698 END Get_Values;
4699 
4700 --  Procedure Get_Ids
4701 
4702 PROCEDURE Get_Ids
4703 (   p_x_Line_Adj_rec                IN OUT NOCOPY OE_Order_PUB.Line_Adj_Rec_Type
4704 ,   p_Line_Adj_val_rec              IN  OE_Order_PUB.Line_Adj_Val_Rec_Type
4705 )
4706 IS
4707 l_Line_Adj_rec                OE_Order_PUB.Line_Adj_Rec_Type;
4708 BEGIN
4709 
4710     --  initialize  return_status.
4711 
4712     l_Line_Adj_rec.return_status := FND_API.G_RET_STS_SUCCESS;
4713 
4714     --  initialize l_Line_Adj_rec.
4715 
4716     l_Line_Adj_rec := p_x_Line_Adj_rec;
4717 
4718     IF  p_Line_Adj_val_rec.discount <> FND_API.G_MISS_CHAR
4719     THEN
4720 
4721         IF p_x_Line_Adj_rec.discount_id <> FND_API.G_MISS_NUM THEN
4722 
4723             l_Line_Adj_rec.discount_id := p_x_Line_Adj_rec.discount_id;
4724 
4725             IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_SUCCESS)
4726             THEN
4727 
4728                 FND_MESSAGE.SET_NAME('ONT','OE_BOTH_VAL_AND_ID_EXIST');
4729                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','discount');
4730                 FND_MSG_PUB.Add;
4731 
4732             END IF;
4733 
4734         ELSE
4735 
4736             l_Line_Adj_rec.discount_id := OE_Value_To_Id.discount
4737             (   p_discount                    => p_Line_Adj_val_rec.discount
4738             );
4739 
4740             IF l_Line_Adj_rec.discount_id = FND_API.G_MISS_NUM THEN
4741                 l_Line_Adj_rec.return_status := FND_API.G_RET_STS_ERROR;
4742             END IF;
4743 
4744         END IF;
4745 
4746     END IF;
4747 
4748 
4749     -- RETURN l_Line_Adj_rec;
4750     p_x_Line_Adj_rec := l_Line_Adj_rec;
4751 
4752 END Get_Ids;
4753 
4754 -- This function converts a Header adj record to a Line Adjustment record
4755 Function Convert_Hdr_Adj_To_Line_Adj
4756 ( p_header_adj_rec IN OE_Order_PUB.Header_adj_rec_type)
4757 RETURN OE_Order_PUB.Line_Adj_Rec_Type
4758 IS
4759 l_line_adj_rec OE_Order_PUB.Line_Adj_Rec_Type;
4760 BEGIN
4761 
4762         l_line_adj_rec.attribute1        := p_header_adj_rec.attribute1;
4763         l_line_adj_rec.attribute10       := p_header_adj_rec.attribute10;
4764         l_line_adj_rec.attribute11       := p_header_adj_rec.attribute11;
4765         l_line_adj_rec.attribute12       := p_header_adj_rec.attribute12;
4766         l_line_adj_rec.attribute13       := p_header_adj_rec.attribute13;
4767         l_line_adj_rec.attribute14       := p_header_adj_rec.attribute14;
4768         l_line_adj_rec.attribute15       := p_header_adj_rec.attribute15;
4769         l_line_adj_rec.attribute2        := p_header_adj_rec.attribute2;
4770         l_line_adj_rec.attribute3        := p_header_adj_rec.attribute3;
4771         l_line_adj_rec.attribute4        := p_header_adj_rec.attribute4;
4772         l_line_adj_rec.attribute5        := p_header_adj_rec.attribute5;
4773         l_line_adj_rec.attribute6        := p_header_adj_rec.attribute6;
4774         l_line_adj_rec.attribute7        := p_header_adj_rec.attribute7;
4775         l_line_adj_rec.attribute8        := p_header_adj_rec.attribute8;
4776         l_line_adj_rec.attribute9        := p_header_adj_rec.attribute9;
4777         l_line_adj_rec.automatic_flag    :=p_header_adj_rec.automatic_flag;
4778         l_line_adj_rec.context         := p_header_adj_rec.context;
4779         l_line_adj_rec.created_by        := p_header_adj_rec.created_by;
4780         l_line_adj_rec.creation_date     := p_header_adj_rec.creation_date;
4781         l_line_adj_rec.discount_id       := p_header_adj_rec.discount_id;
4782         l_line_adj_rec.discount_line_id:=p_header_adj_rec.discount_line_id;
4783         l_line_adj_rec.header_id         := p_header_adj_rec.header_id;
4784         l_line_adj_rec.last_updated_by := p_header_adj_rec.last_updated_by;
4785         l_line_adj_rec.last_update_date:= p_header_adj_rec.last_update_date;
4786         l_line_adj_rec.last_update_login:= p_header_adj_rec.last_update_login;
4787         l_line_adj_rec.line_id         := p_header_adj_rec.line_id;
4788         l_line_adj_rec.percent         := p_header_adj_rec.percent;
4789         l_line_adj_rec.price_adjustment_id        := p_header_adj_rec.price_adjustment_id;
4790         l_line_adj_rec.program_application_id := p_header_adj_rec.program_application_id;
4791         l_line_adj_rec.program_id               := p_header_adj_rec.program_id;
4792         l_line_adj_rec.program_update_date        := p_header_adj_rec.program_update_date;
4793         l_line_adj_rec.request_id               := p_header_adj_rec.request_id;
4794         l_line_adj_rec.return_status            := p_header_adj_rec.return_status;
4795         l_line_adj_rec.db_flag                := p_header_adj_rec.db_flag;
4796         l_line_adj_rec.operation                := p_header_adj_rec.operation;
4797     l_line_adj_rec.list_header_id	:= p_header_adj_rec.list_header_id;
4798     l_line_adj_rec.list_line_id	:= p_header_adj_rec.list_line_id;
4799     l_line_adj_rec.list_line_type_code	:= p_header_adj_rec.list_line_type_code;
4800     l_line_adj_rec.modifier_mechanism_type_code	:= p_header_adj_rec.modifier_mechanism_type_code;
4801     l_line_adj_rec.modified_from	:= p_header_adj_rec.modified_from;
4802     l_line_adj_rec.modified_to	:= p_header_adj_rec.modified_to;
4803     l_line_adj_rec.updated_flag	:= p_header_adj_rec.updated_flag;
4804     l_line_adj_rec.update_allowed	:= p_header_adj_rec.update_allowed;
4805     l_line_adj_rec.applied_flag	:= p_header_adj_rec.applied_flag;
4806     l_line_adj_rec.change_reason_code	:= p_header_adj_rec.change_reason_code;
4807     l_line_adj_rec.change_reason_text	:= p_header_adj_rec.change_reason_text;
4808     l_line_adj_rec.operand	:= p_header_adj_rec.operand;
4809     l_line_adj_rec.operand_per_pqty	:= p_header_adj_rec.operand_per_pqty;
4810     l_line_adj_rec.arithmetic_operator	:= p_header_adj_rec.arithmetic_operator;
4811     l_line_adj_rec.adjusted_amount	:= p_header_adj_rec.adjusted_amount;
4812     l_line_adj_rec.adjusted_amount_per_pqty	:= p_header_adj_rec.adjusted_amount_per_pqty;
4813     l_line_adj_rec.pricing_phase_id	:= p_header_adj_rec.pricing_phase_id;
4814     l_line_adj_rec.cost_id     := p_header_adj_rec.cost_id;
4815 	l_line_adj_rec.tax_code    := p_header_adj_rec.tax_code;
4816 	l_line_adj_rec.tax_exempt_flag := p_header_adj_rec.tax_exempt_flag;
4817 	l_line_adj_rec.tax_exempt_number := p_header_adj_rec.tax_exempt_number;
4818 	l_line_adj_rec.tax_exempt_reason_code := p_header_adj_rec.tax_exempt_reason_code;
4819 	l_line_adj_rec.parent_adjustment_id := p_header_adj_rec.parent_adjustment_id;
4820 	l_line_adj_rec.invoiced_flag := p_header_adj_rec.invoiced_flag;
4821 	l_line_adj_rec.estimated_flag := p_header_adj_rec.estimated_flag;
4822 	l_line_adj_rec.inc_in_sales_performance := p_header_adj_rec.inc_in_sales_performance;
4823 	l_line_adj_rec.split_action_code := p_header_adj_rec.split_action_code;
4824 	l_line_adj_rec.charge_type_code := p_header_adj_rec.charge_type_code;
4825 	l_line_adj_rec.charge_subtype_code := p_header_adj_rec.charge_subtype_code;
4826 
4827 	l_line_adj_rec.adjusted_amount := p_header_adj_rec.adjusted_amount;
4828 	l_line_adj_rec.pricing_phase_id := p_header_adj_rec.pricing_phase_id;
4829 	l_line_adj_rec.list_line_no := p_header_adj_rec.list_line_no;
4830 	l_line_adj_rec.source_system_code := p_header_adj_rec.source_system_code;
4831 	l_line_adj_rec.benefit_qty := p_header_adj_rec.benefit_qty;
4832 	l_line_adj_rec.benefit_uom_code := p_header_adj_rec.benefit_uom_code;
4833 	l_line_adj_rec.print_on_invoice_flag := p_header_adj_rec.print_on_invoice_flag;
4834 	l_line_adj_rec.expiration_date := p_header_adj_rec.expiration_date;
4835 	l_line_adj_rec.rebate_transaction_type_code := p_header_adj_rec.rebate_transaction_type_code;
4836 	l_line_adj_rec.rebate_transaction_reference := p_header_adj_rec.rebate_transaction_reference;
4837 	l_line_adj_rec.rebate_payment_system_code := p_header_adj_rec.rebate_payment_system_code;
4838 	l_line_adj_rec.redeemed_date := p_header_adj_rec.redeemed_date;
4839 	l_line_adj_rec.redeemed_flag := p_header_adj_rec.redeemed_flag;
4840 	l_line_adj_rec.accrual_flag := p_header_adj_rec.accrual_flag;
4841 	l_line_adj_rec.range_break_quantity := p_header_adj_rec.range_break_quantity;
4842 	l_line_adj_rec.accrual_conversion_rate := p_header_adj_rec.accrual_conversion_rate;
4843 	l_line_adj_rec.pricing_group_sequence := p_header_adj_rec.pricing_group_sequence;
4844 	l_line_adj_rec.modifier_level_code := p_header_adj_rec.modifier_level_code;
4845 	l_line_adj_rec.price_break_type_code := p_header_adj_rec.price_break_type_code;
4846 	l_line_adj_rec.substitution_attribute := p_header_adj_rec.substitution_attribute;
4847 	l_line_adj_rec.proration_type_code := p_header_adj_rec.proration_type_code;
4848 	l_line_adj_rec.credit_or_charge_flag := p_header_adj_rec.credit_or_charge_flag;
4849 	l_line_adj_rec.include_on_returns_flag := p_header_adj_rec.include_on_returns_flag;
4850         l_line_adj_rec.ac_attribute1        := p_header_adj_rec.ac_attribute1;
4851         l_line_adj_rec.ac_attribute10       := p_header_adj_rec.ac_attribute10;
4852         l_line_adj_rec.ac_attribute11       := p_header_adj_rec.ac_attribute11;
4853         l_line_adj_rec.ac_attribute12       := p_header_adj_rec.ac_attribute12;
4854         l_line_adj_rec.ac_attribute13       := p_header_adj_rec.ac_attribute13;
4855         l_line_adj_rec.ac_attribute14       := p_header_adj_rec.ac_attribute14;
4856         l_line_adj_rec.ac_attribute15       := p_header_adj_rec.ac_attribute15;
4857         l_line_adj_rec.ac_attribute2        := p_header_adj_rec.ac_attribute2;
4858         l_line_adj_rec.ac_attribute3        := p_header_adj_rec.ac_attribute3;
4859         l_line_adj_rec.ac_attribute4        := p_header_adj_rec.ac_attribute4;
4860         l_line_adj_rec.ac_attribute5        := p_header_adj_rec.ac_attribute5;
4861         l_line_adj_rec.ac_attribute6        := p_header_adj_rec.ac_attribute6;
4862         l_line_adj_rec.ac_attribute7        := p_header_adj_rec.ac_attribute7;
4863         l_line_adj_rec.ac_attribute8        := p_header_adj_rec.ac_attribute8;
4864         l_line_adj_rec.ac_attribute9        := p_header_adj_rec.ac_attribute9;
4865         l_line_adj_rec.ac_context           := p_header_adj_rec.ac_context;
4866         l_line_adj_rec.invoiced_amount      := p_header_adj_rec.invoiced_amount;
4867 
4868       RETURN l_line_adj_rec;
4869 
4870 END Convert_Hdr_Adj_To_Line_Adj;
4871 
4872 Procedure Append_Adjustment_Attribs(
4873 				px_Line_Adj_Att_Tbl    in out nocopy OE_Order_Pub.line_adj_att_tbl_Type
4874 				,p_price_adjustment_id	number
4875 				,p_adj_index			pls_integer
4876 				)
4877 is
4878 l_Line_Adj_Att_Tbl    	OE_Order_Pub.line_adj_att_tbl_Type;
4879 i					pls_integer;
4880 begin
4881 
4882 		Oe_Line_Price_Aattr_util.Query_Rows(
4883 						p_price_adjustment_id => p_price_adjustment_id
4884 						, x_Line_Adj_Att_Tbl  => l_Line_Adj_Att_Tbl
4885 						);
4886 
4887 		i:= L_Line_Adj_Att_Tbl.First;
4888 		While i is not null loop
4889 
4890 			L_Line_Adj_Att_Tbl(i).operation := OE_GLOBALS.G_OPR_CREATE;
4891 			L_Line_Adj_Att_Tbl(i).price_adjustment_id := fnd_api.g_miss_num;
4892 			L_Line_Adj_Att_Tbl(i).adj_index := p_adj_index;
4893 			L_Line_Adj_Att_Tbl(i).price_adj_attrib_id := fnd_api.g_miss_num;
4894 
4895 			px_Line_Adj_Att_Tbl(px_Line_Adj_Att_Tbl.count+1) := L_Line_Adj_Att_Tbl(i);
4896 
4897 	  	i:= L_Line_Adj_Att_Tbl.Next(i);
4898 
4899 		end loop;
4900 
4901 end Append_Adjustment_Attribs;
4902 
4903 Procedure Prorate_Lumpsum (
4904 px_line_adj_rec  IN OUT NOCOPY OE_Order_Pub.Line_AdJ_Rec_Type
4905 ,  p_to_line_id     IN NUMBER
4906 , x_copy_from_line_adj_rec OUT NOCOPY OE_Order_Pub.Line_Adj_Rec_Type
4907 
4908 )
4909 IS
4910 l_ordered_quantity              NUMBER;
4911 l_sign                          NUMBER;
4912 l_pricing_quantity              NUMBER;
4913 --
4914 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
4915 --
4916 Begin
4917   IF l_debug_level  > 0 THEN
4918       oe_debug_pub.add(  'ENTERING PROCEDURE PRORATE_LUMPSUM' ) ;
4919   END IF;
4920 
4921   If px_line_adj_rec.operand = 0 or px_line_adj_rec.operand is null Then
4922     IF l_debug_level  > 0 THEN
4923         oe_debug_pub.add(  ' NOTHING TO PRORATE , OPERAND IS 0' ) ;
4924     END IF;
4925     x_copy_from_line_adj_rec.operation := OE_GLOBALS.G_OPR_NONE;
4926     Return;
4927   End If;
4928 
4929   IF (px_line_adj_rec.list_line_type_code='DIS') THEN
4930     l_sign := -1;
4931   ELSE
4932     l_sign := 1;
4933   END IF;
4934 
4935    -- First correct the copy_from line adj record
4936    SELECT ordered_quantity,pricing_quantity
4937      INTO l_ordered_quantity,
4938           l_pricing_quantity
4939      FROM oe_order_lines_all
4940     WHERE  line_id = px_line_adj_rec.line_id;
4941 
4942    If (round(abs(px_line_adj_rec.operand) -
4943              abs(l_ordered_quantity * px_line_adj_rec.adjusted_amount/ px_line_adj_rec.operand),20))
4944      <> 0
4945    THEN
4946       IF l_debug_level  > 0 THEN
4947           oe_debug_pub.add(  'OPERAND'||PX_LINE_ADJ_REC.OPERAND ||'<>'||L_ORDERED_QUANTITY||'*'||PX_LINE_ADJ_REC.ADJUSTED_AMOUNT ) ;
4948       END IF;
4949 
4950      x_copy_from_line_adj_rec := px_line_adj_rec;
4951      x_copy_from_line_adj_rec.operation := oe_globals.g_opr_update;
4952      x_copy_from_line_adj_rec.operand := l_ordered_quantity
4953            * x_copy_from_line_adj_rec.adjusted_amount * l_sign;
4954 
4955 
4956      x_copy_from_line_adj_rec.operand_per_pqty := l_pricing_quantity
4957            *x_copy_from_line_adj_rec.adjusted_amount_per_pqty*l_sign;
4958 
4959      x_copy_from_line_adj_rec.operand_per_pqty:=nvl(x_copy_from_line_adj_rec.operand_per_pqty,
4960                                                    x_copy_from_line_adj_rec.operand);
4961 
4962      IF l_debug_level  > 0 THEN
4963          oe_debug_pub.add(  ' PRORATED ADJUSTED_AMOUNT_PER_PQTY:'||X_COPY_FROM_LINE_ADJ_REC.ADJUSTED_AMOUNT_PER_PQTY ) ;
4964          oe_debug_pub.add(  ' PRORATED ADJUSTED_AMOUNT:'||X_COPY_FROM_LINE_ADJ_REC.ADJUSTED_AMOUNT ) ;
4965      END IF;
4966 
4967   ELSE
4968      x_copy_from_line_adj_rec.operation := OE_GLOBALS.G_OPR_NONE;
4969   END IF;
4970 
4971    -- Then correct the copy_to line adj record
4972    SELECT ordered_quantity
4973      INTO l_ordered_quantity
4974      FROM oe_order_lines_all
4975     WHERE  line_id = p_to_line_id;
4976 
4977   IF (round(abs(px_line_adj_rec.operand) -
4978              abs(l_ordered_quantity * px_line_adj_rec.adjusted_amount/ px_line_adj_rec.operand),20))
4979      <> 0
4980 
4981    THEN
4982 
4983      px_line_adj_rec.operand := l_ordered_quantity
4984                                 * px_line_adj_rec.adjusted_amount
4985                                 * l_sign;
4986 
4987      px_line_adj_rec.operand_per_pqty := NULL;
4988 
4989   END IF;
4990 
4991  IF l_debug_level  > 0 THEN
4992      oe_debug_pub.add(  'LEAVING PROCEDURE PRORATE_LUMPSUM' ) ;
4993  END IF;
4994   EXCEPTION
4995 
4996     WHEN OTHERS THEN
4997 
4998         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4999         THEN
5000             OE_MSG_PUB.Add_Exc_Msg
5001             (   G_PKG_NAME
5002             ,   'Update_Row'
5003             );
5004         END IF;
5005        IF l_debug_level  > 0 THEN
5006            oe_debug_pub.add(  'EXCEPTION IN PRORATE_LUMPSUM'||SQLERRM , 2 ) ;
5007        END IF;
5008         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5009 
5010 End Prorate_Lumpsum;
5011 
5012 Procedure Append_Adjustment_Lines(
5013 				p_header_id 			Number default null,
5014 				p_line_id 			Number default null,
5015 				p_to_line_id 			Number default null,
5016 				p_to_header_id 		        Number default null,
5017 				p_operation			varchar2,
5018 				p_line_category_code	        varchar2,
5019                                 p_split_by                      varchar2 default null,
5020 				px_Line_Adj_Att_Tbl    in out nocopy OE_Order_Pub.line_adj_att_tbl_Type,
5021 				px_Line_Adj_Tbl in out nocopy OE_Order_Pub.Line_Adj_Tbl_Type,
5022                                 px_line_adj_assoc_tbl in out nocopy  OE_Order_PUB.Line_Adj_Assoc_tbl_type,
5023                                 --RT{
5024                                 p_mode                          varchar2 default null,
5025                                 p_retrobill_request_id in Varchar2 default null,
5026                                 p_key_line_id in Number default null
5027                                 --RT}
5028                                 )
5029 is
5030 l_Line_Adj_Tbl			OE_Order_Pub.Line_Adj_Tbl_Type;
5031 i					pls_integer;
5032 l_has_pbh                       VARCHAR2(1):='N';
5033 l_pbh_tbl                       Pbh_Tbl_Type;
5034 cnt                             Pls_Integer:=0;
5035 l_copy_from_line_adj_rec        OE_Order_pub.Line_Adj_Rec_Type;
5036 --
5037 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
5038 --
5039 l_from_line_category            VARCHAR2(100);
5040 --RT{
5041 l_ulp NUMBER;
5042 cursor get_ulp(p_line_id IN NUMBER) IS
5043 SELECT UNIT_LIST_PRICE
5044 FROM   OE_ORDER_LINES_ALL
5045 WHERE  LINE_ID = p_line_id;
5046 l_sign PLS_INTEGER:=1;
5047 l_line_id NUMBER;
5048 l_header_id NUMBER;
5049 l_has_retrobilled_before Varchar2(1):='N';
5050 --RT}
5051 l_charges_for_backorders     VARCHAR2(1):=NVL(FND_PROFILE.VALUE('ONT_CHARGES_FOR_BACKORDERS'),'N');
5052 l_prg_exist     VARCHAR2(1) := 'N'; --bug 16317238
5053 begin
5054 
5055 	IF l_debug_level  > 0 THEN
5056 	    oe_debug_pub.add(  'ENTERING OE_LINE_ADJ_UTIL.APPEND_ADJUSTMENT_LINES' , 1 ) ;
5057             oe_debug_pub.add(' operation:'|| p_operation);
5058 	END IF;
5059 
5060 
5061     -- Manish Changes
5062    if p_line_id is not null then
5063 
5064       IF OE_CODE_CONTROL.Get_Code_Release_Level >= '110510' and
5065          p_operation <> OE_GLOBALS.G_OPR_DELETE  THEN
5066           --RT{
5067            --we need to retrieve the latest adjustments if it is a retrobilled line
5068            --call retrobill api to get the retrobill line id, if none l_line_id will
5069            --set to the same value as p_line_id
5070 
5071           Oe_Retrobill_Pvt.Get_Last_Retro_LinID(p_line_id=>p_line_id,
5072                                                 x_line_id=>l_line_id);
5073 
5074           if nvl(p_line_id,-1) <> nvl(l_line_id,-1) then
5075            --Old id and new id difference, line has been retrobilled multiple times
5076            --new id is actullay a retrobill line, not a regular line.
5077            --we just need to copy adjustment with retrobill_request_id is not null
5078            --from this retrobill line over.
5079            l_has_retrobilled_before:='Y';
5080           end if;
5081 
5082           --RT}
5083           OE_Version_History_Util.Query_Rows
5084             (  p_line_id => l_line_id
5085              , p_version_number => OE_ORDER_COPY_UTIL.G_LN_VER_NUMBER
5086              , p_phase_change_flag => OE_ORDER_COPY_UTIL.G_LN_PHASE_CHANGE_FLAG
5087 			 , x_Line_Adj_Tbl => l_Line_Adj_Tbl);
5088 
5089           If l_debug_level > 0 Then
5090            oe_debug_pub.add(' input line id to retro api:'||p_line_id||' output line id:'|| l_line_id);
5091            oe_debug_pub.add(' l_line_adj_tbl.count from versioning:'|| l_Line_Adj_Tbl.count);
5092           End If;
5093 
5094       ELSE
5095               oe_debug_pub.add('pre 11510, using old query row');
5096 	      OE_Line_Adj_Util.Query_Rows(p_Line_Id => p_line_id
5097 					        , x_Line_Adj_Tbl => l_Line_Adj_Tbl);
5098       END IF;
5099 
5100    else
5101 	--	l_Line_Adj_Tbl := OE_Line_Adj_Util.Query_Rows(p_header_Id => p_header_id);
5102       IF OE_CODE_CONTROL.Get_Code_Release_Level >= '110510' and
5103          p_operation <> OE_GLOBALS.G_OPR_DELETE  THEN
5104            --RT{
5105            Oe_Retrobill_Pvt.Get_Last_Retro_HdrID(p_header_id=>p_header_id,
5106                                            x_header_id=>l_header_id);
5107           if nvl(p_header_id,-1) <> nvl(l_header_id,-1) then
5108            l_has_retrobilled_before:='Y';
5109           end if;
5110            --RT}
5111 
5112           OE_Version_History_Util.Query_Rows
5113             (  p_header_id => l_header_id
5114              , p_version_number => OE_ORDER_COPY_UTIL.G_LN_VER_NUMBER
5115              , p_phase_change_flag => OE_ORDER_COPY_UTIL.G_LN_PHASE_CHANGE_FLAG
5116 			 , x_Line_Adj_Tbl => l_Line_Adj_Tbl);
5117 
5118           If l_debug_level > 0 Then
5119            oe_debug_pub.add(' input Header id to retro api:'||p_header_id||' output Header id:'|| l_header_id);
5120            oe_debug_pub.add(' l_line_adj_tbl.count from versioning:'|| l_Line_Adj_Tbl.count);
5121           End If;
5122 
5123       ELSE
5124 	      OE_Line_Adj_Util.Query_Rows(p_header_Id => p_header_id
5125 						   , x_Line_Adj_Tbl => l_Line_Adj_Tbl);
5126       END IF;
5127 	End If;
5128 
5129 	i:= l_Line_Adj_Tbl.First;
5130 	While i is not Null Loop
5131 
5132 
5133 	If p_operation = OE_GLOBALS.G_OPR_DELETE then
5134 
5135 	  l_Line_Adj_Tbl(i).operation := p_operation;
5136 	  px_line_adj_tbl(px_line_adj_tbl.count+1) := L_Line_Adj_Tbl(i);
5137 
5138 	Else
5139 
5140 	  /* Modified IF condition to process only Line Level Freight Charges for Bug # 1559906 */
5141           -- bug 1937110, added type 'IUE'.
5142           oe_debug_pub.add('Retro:list line type code:'||l_Line_Adj_Tbl(i).list_line_type_code);
5143 
5144           --RT{
5145           IF NOT(nvl(p_mode,'xx-') = 'RETROBILL' and l_Line_Adj_Tbl(i).list_line_type_code = 'FREIGHT_CHARGE') AND
5146              NOT (l_has_retrobilled_before = 'Y' and l_line_adj_tbl(i).retrobill_request_id IS NULL)
5147           THEN
5148           --skip processing, freigh charge is not supported for retrobilling
5149           --skip processing if we copy adjustment from a retrobill order and retrobill request id is null
5150           --we just want to copy over where retrobill request id is not null if it is a retrobill line
5151           --RT}
5152           --bug 16317238 checking if PRG needs to be copied only applicable if get item is service
5153         IF p_line_id is not NULL AND p_line_id <> fnd_api.g_miss_num AND l_Line_Adj_Tbl(i).list_line_type_code = 'PRG' THEN
5154         BEGIN
5155         oe_debug_pub.ADD('p_line_id :'||p_line_id,1);
5156 
5157         SELECT 'Y'
5158         INTO l_prg_exist
5159         FROM oe_price_adjustments prg, oe_order_lines_all l,
5160                     oe_price_adj_assocs a,oe_price_adjustments p
5161               WHERE prg.line_id = p_line_id
5162               AND prg.list_line_type_code = 'PRG'
5163               AND prg.price_adjustment_id = a.price_adjustment_id
5164               AND p.price_adjustment_id = a.rltd_price_adj_id
5165               AND p.line_id = l.line_id
5166               AND l.item_type_code = 'SERVICE' AND l.SUBSCRIPTION_ENABLE_FLAG <> 'Y'
5167               AND ROWNUM <2;
5168 
5169         EXCEPTION
5170         WHEN NO_DATA_FOUND THEN
5171           oe_debug_pub.ADD('prg does not exist',1);
5172             l_prg_exist := 'N';
5173         END;
5174       END IF;
5175       --end bug 16317238
5176 
5177 	  If (l_Line_Adj_Tbl(i).list_line_type_code in ('DIS','SUR', 'PBH', 'IUE') OR (l_Line_Adj_Tbl(i).list_line_type_code = 'PRG' AND l_prg_exist='Y'))  -- 'PRG' condition added for bug 16317238
5178 	  or (l_Line_Adj_Tbl(i).list_line_type_code = 'FREIGHT_CHARGE' and l_Line_Adj_Tbl(i).line_id is not null) then
5179                 If l_line_adj_tbl(i).list_line_type_code = 'PBH' Then
5180                    l_has_pbh := 'Y';
5181                    --l_pbh_tbl store the index that has pbh adj line
5182                    cnt := cnt + 1;
5183                     l_pbh_tbl(cnt):=px_line_adj_tbl.count+1;
5184                 End If;
5185                 -- FP bug3337324
5186                  -- changed for the bug 3479388
5187                   -- changed the below condition for the bug 9494742
5188 		If l_Line_Adj_Tbl(i).list_line_type_code ='FREIGHT_CHARGE' and
5189 			((p_line_category_code = 'RETURN' and
5190 			(NVL(l_Line_Adj_Tbl(i).include_on_returns_flag,'N') <> 'Y' OR
5191 			 NVL(l_Line_Adj_Tbl(i).applied_flag,'N') = 'N' )) OR
5192                          (p_split_by = 'SYSTEM' and l_charges_for_backorders = 'N' and
5193                           l_line_adj_tbl(i).arithmetic_operator = 'LUMPSUM')) then
5194                          oe_debug_pub.add('No Charges are Copied');
5195 			Null;
5196 		Else
5197 
5198                   -- prorate lumpsum
5199                   IF (l_line_adj_tbl(i).modifier_level_code='LINE'
5200                   and l_line_adj_tbl(i).arithmetic_operator = 'LUMPSUM')
5201                   THEN
5202                                           IF l_debug_level  > 0 THEN
5203                                               oe_debug_pub.add(  ' P_HEADER_ID:'||P_HEADER_ID|| 'P_TO_HEADER_ID:'||P_TO_HEADER_ID ) ;
5204                            oe_debug_pub.add(  ' P_SPLIT_BY:'||P_SPLIT_BY ) ;
5205                        END IF;
5206                        --BTEA
5207                        --Only when split we need to do this.
5208                        --during split we will have same to_ and from_ header_id
5209                        --and split_by column is not null
5210                        If p_to_header_id = p_header_id
5211                           AND p_split_by is Not NULL
5212                        Then
5213                          -- added for the bug 3479388
5214 			IF NOT (p_split_by = 'SYSTEM' and l_charges_for_backorders = 'Y'
5215 			      and l_Line_Adj_Tbl(i).list_line_type_code = 'FREIGHT_CHARGE') THEN -- 7363214
5216                          Prorate_Lumpsum(l_line_adj_tbl(i),
5217                                          p_to_line_id,
5218                                          l_copy_from_line_adj_rec);
5219 
5220                          IF l_copy_from_line_adj_rec.operation
5221                            = OE_GLOBALS.G_OPR_UPDATE THEN
5222                              IF l_debug_level  > 0 THEN
5223                                  oe_debug_pub.add(  ' UPDATING OPERAND FOR LINE ID:'||L_COPY_FROM_LINE_ADJ_REC.LINE_ID ) ;
5224                              END IF;
5225                            px_line_adj_tbl(px_line_adj_tbl.count+1)
5226                              := l_copy_from_line_adj_rec;
5227                          END IF;
5228                          END IF;
5229                         End If;
5230                   End If;
5231 
5232 			Append_Adjustment_Attribs(
5233 				px_Line_Adj_Att_Tbl    	=> px_Line_Adj_Att_Tbl
5234 				,p_price_adjustment_id	=> l_Line_Adj_Tbl(i).price_adjustment_id
5235 				,p_adj_index			=> px_line_adj_tbl.count+1
5236 				);
5237 
5238 	  		l_Line_Adj_Tbl(i).operation := p_operation;
5239 
5240 			-- lkxu, fix bug 1623316
5241                -- don't populate line_id field if it is a HEADER level adjustment
5242 
5243                    --removed if condn.
5244                         l_Line_Adj_Tbl(i).line_id := p_to_line_id;
5245 
5246                /* Fixing Bug 2075878  */
5247              IF l_line_adj_tbl(i).modifier_level_code = 'ORDER' THEN
5248                 l_Line_Adj_Tbl(i).modifier_level_code := 'LINE';
5249                 --RT{
5250                 IF l_Line_Adj_Tbl(i).arithmetic_operator = '%' THEN
5251                   open  get_ulp(p_key_line_id);
5252                   fetch get_ulp INTO l_ulp;
5253                   close get_ulp;
5254 		  oe_debug_pub.add('pviprana: l_ulp :' || l_ulp);
5255 		  --bug3392650 ( Changed the condition l_Line_Adj_Tbl(i).adjusted_amount < 0)
5256                   IF (l_Line_Adj_Tbl(i).list_line_type_code = 'DIS') THEN
5257                    l_sign := -1;
5258                   ELSE
5259                    l_sign := 1;
5260                   END IF;
5261 		  --bug3392650 Calculating adjusted amount only if l_ulp is not null
5262 		  oe_debug_pub.add('pviprana: adjusted amt'||l_Line_Adj_Tbl(i).adjusted_amount);
5263 		  IF(l_ulp IS NOT NULL ) THEN
5264                      l_Line_Adj_Tbl(i).adjusted_amount:= (l_Line_Adj_Tbl(i).operand/100) * l_ulp *l_sign;
5265 		  END IF;
5266                   oe_debug_pub.add('Converting Order level to line, unit list price:'|| l_ulp);
5267                   oe_debug_pub.add('Adjusted amount:'||l_Line_Adj_Tbl(i).adjusted_amount);
5268                 END IF;
5269                 --RT}
5270              END IF;
5271 
5272 	  		-- l_Line_Adj_Tbl(i).line_id := p_to_line_id;
5273 	  		l_Line_Adj_Tbl(i).Header_id := p_to_Header_id;
5274 	  		l_Line_Adj_Tbl(i).invoiced_flag := 'N';
5275 			l_Line_Adj_Tbl(i).invoiced_amount := null; --bug 5241848
5276 --	  		l_Line_Adj_Tbl(i).price_adjustment_id := fnd_api.g_miss_num;
5277 
5278 			-- Check for refndable charges on return lines. If the charge is
5279 			-- refundable then it should be created as a credit.
5280 
5281 	-- Commented for 7683779 Start
5282 	/*
5283 	--Added for bug 7328969 Start
5284       		select line_category_code into l_from_line_category
5285       		from oe_order_lines_all
5286       		where line_id = p_line_id ;
5287 
5288       		oe_debug_pub.add('p_line_category_code :'||p_line_category_code);
5289       		oe_debug_pub.add('l_from_line_category :'||l_from_line_category);
5290       		oe_debug_pub.add('l_Line_Adj_Tbl(i).credit_or_charge_flag :'||l_Line_Adj_Tbl(i).credit_or_charge_flag);
5291 
5292 	--Added for bug 7328969 End
5293 	*/
5294 	-- Commented for 7683779 End
5295 
5296 			If l_Line_Adj_Tbl(i).list_line_type_code ='FREIGHT_CHARGE'
5297 			THEN
5298 			--Added for bug 7683779 Start
5299 			    select line_category_code into l_from_line_category
5300 			    from oe_order_lines_all
5301 			    where line_id = p_line_id ;
5302 
5303 			    IF l_debug_level  > 0 THEN
5304 			        oe_debug_pub.add('p_line_category_code :'||p_line_category_code);
5305 			        oe_debug_pub.add('l_from_line_category :'||l_from_line_category);
5306 			        oe_debug_pub.add('l_Line_Adj_Tbl(i).credit_or_charge_flag :'||l_Line_Adj_Tbl(i).credit_or_charge_flag);
5307 			    END IF;
5308 
5309 	                --Added for bug 7683779 End
5310 
5311 		--Modified for bug 7328969 Start
5312 		--IF p_line_category_code = 'RETURN' THEN
5313 		IF (p_line_category_code = 'RETURN' AND l_from_line_category= 'ORDER' ) OR
5314 		( l_from_line_category = 'RETURN' and  p_line_category_code = 'ORDER') THEN
5315 
5316 		--Modified for bug 7328969 End
5317 
5318                        If l_Line_Adj_Tbl(i).credit_or_charge_flag = 'C' THEN
5319                            l_Line_Adj_Tbl(i).credit_or_charge_flag := 'D';
5320                        ELSE
5321                            l_Line_Adj_Tbl(i).credit_or_charge_flag := 'C';
5322                        END IF;
5323 
5324                        oe_debug_pub.add('l_Line_Adj_Tbl(i).credit_or_charge_flag :'||l_Line_Adj_Tbl(i).credit_or_charge_flag);
5325 
5326                        l_Line_Adj_Tbl(i).updated_flag := 'Y';
5327                        l_Line_Adj_Tbl(i).change_reason_code := 'MISC';
5328                        l_Line_Adj_Tbl(i).change_reason_text := 'Reversing Credit';
5329                    ELSE
5330 /* commented out nocopy the following 3 lines to fix the bug 2594720
5331 
5332 
5333                        l_Line_Adj_Tbl(i).updated_flag := 'N';
5334                        l_Line_Adj_Tbl(i).change_reason_code := NULL;
5335                        l_Line_Adj_Tbl(i).change_reason_text := NULL;
5336    */
5337                        NULL;
5338 
5339 /* Added the following code to fix the bug 2888990 */
5340                  --Commented for bug 7328969 Start
5341                        /*select line_category_code into l_from_line_category
5342                        from oe_order_lines_all
5343                        where line_id = p_line_id ;*/
5344                  --Commented for bug 7328969 End
5345 
5346                        if l_from_line_category = 'RETURN' and  p_line_category_code = 'ORDER' THEN
5347                          If l_Line_Adj_Tbl(i).credit_or_charge_flag = 'C' THEN
5348                           l_Line_Adj_Tbl(i).credit_or_charge_flag := 'D';
5349                          ELSE
5350                           l_Line_Adj_Tbl(i).credit_or_charge_flag := 'C';
5351                          END IF;
5352 
5353                          l_Line_Adj_Tbl(i).updated_flag := 'Y';
5354                          l_Line_Adj_Tbl(i).change_reason_code := 'MISC';
5355                          l_Line_Adj_Tbl(i).change_reason_text := 'Reversing Credit';
5356                        end if;
5357 /* End of code for the bug 2888990 */
5358 
5359 
5360 			    END IF;
5361 			END IF;
5362 
5363 	  		px_line_adj_tbl(px_line_adj_tbl.count+1) := L_Line_Adj_Tbl(i);
5364 
5365 		end if; -- For Freight charges
5366 
5367 	  End If; -- Copy only certain list line types
5368          --RT{
5369          END IF;  --check Retrobill and freight
5370          --RT}
5371 	End if; -- operation=g_opr_delete
5372 
5373 	  i:= l_Line_Adj_Tbl.Next(i);
5374 
5375 	end loop;
5376 
5377          If l_has_pbh = 'Y' Then
5378                    Append_Association(p_line_adj_tbl        => px_line_adj_tbl,
5379                                       px_line_adj_assoc_tbl => px_line_adj_assoc_tbl,
5380                                       p_pbh_tbl             => l_pbh_tbl);
5381          End If;
5382 
5383   IF (p_operation = OE_GLOBALS.G_OPR_CREATE) and l_Line_Adj_Tbl.count > 0 THEN
5384   I:=px_line_adj_tbl.first;
5385   while I is not null loop
5386    IF (px_line_adj_tbl(i).operation = OE_GLOBALS.G_OPR_CREATE) THEN
5387   px_line_adj_tbl(i).price_adjustment_id:=fnd_api.g_miss_num;
5388      --RT{
5389        oe_debug_pub.add('operand:'||px_line_adj_tbl(i).operand);
5390        oe_debug_pub.add('operand per pqty:'||px_line_adj_tbl(i).operand_per_pqty);
5391        oe_debug_pub.add('Retro:p_mode:'||p_mode);
5392      IF nvl(p_mode,'NULLMODE') = 'RETROBILL' THEN
5393         IF px_line_adj_tbl(i).retrobill_request_id IS NOT NULL
5394           and px_line_adj_tbl(i).applied_flag = 'N' THEN
5395           --applied flag needs to remain 'Y'. Becomes 'N' only after
5396           --the pricing engine call
5397           px_line_adj_tbl(i).applied_flag := 'Y';
5398         END IF;
5399 
5400         --replace with new retrobill request id.
5401         px_line_adj_tbl(i).retrobill_request_id:= p_retrobill_request_id;
5402 
5403         --px_line_adj_tbl(i).applied_flag:='N';
5404         oe_debug_pub.add('RETRO:ADJ:Copied list line id:'|| px_line_adj_tbl(i).list_line_id);
5405         oe_debug_pub.add('RETRO:ADJ:Operand:'|| px_line_adj_tbl(i).operand);
5406         oe_debug_pub.add('RETRO:ADJ:Operand pqty:'||px_line_adj_tbl(i).operand_per_pqty);
5407      END IF;
5408      --RT}
5409    END IF;
5410   I:=px_line_adj_tbl.next(I);
5411   end loop;
5412   END IF;
5413 
5414 	IF l_debug_level  > 0 THEN
5415 	    oe_debug_pub.add(  'EXITING OE_LINE_ADJ_UTIL.APPEND_ADJUSTMENT_LINES' , 1 ) ;
5416 	END IF;
5417 
5418 end Append_Adjustment_Lines;
5419 
5420 Procedure copy_adjustment_lines(
5421 	p_from_line_id			number
5422 	,p_to_line_id			number
5423 	,p_from_Header_id		number
5424 	,p_to_Header_id		number
5425 	,p_line_category_code	varchar2
5426 	,p_split_by		varchar2 default null
5427 	,p_booked_flag		varchar2 default null
5428         ,p_mode                 varchar2 default null
5429 --RT{
5430         ,p_retrobill_request_id Number   default null
5431 --RT}
5432         ,x_return_status out nocopy varchar2
5433 
5434 	)
5435 is
5436 l_Header_Adj_tbl 	oe_order_pub.Header_adj_tbl_type;
5437 l_Line_Adj_tbl 	oe_order_pub.Line_adj_tbl_type;
5438 l_control_rec				Oe_Globals.Control_rec_type;
5439 l_Line_Adj_Att_tbl            OE_Order_PUB.Line_Adj_Att_tbl_type;
5440 l_Line_Adj_Assoc_tbl          OE_Order_PUB.Line_Adj_Assoc_tbl_type;
5441 -- l_x_header_rec                OE_Order_PUB.Header_Rec_Type;
5442 l_header_rec                OE_Order_PUB.Header_Rec_Type;
5443 l_x_Header_Adj_tbl            OE_Order_PUB.Header_Adj_Tbl_Type;
5444 l_x_Header_Scredit_tbl        OE_Order_PUB.Header_Scredit_Tbl_Type;
5445 l_x_line_tbl                  OE_Order_PUB.Line_Tbl_Type;
5446 l_line_tbl                    OE_Order_PUB.Line_Tbl_Type;
5447 l_x_Line_Adj_tbl              OE_Order_PUB.Line_Adj_Tbl_Type;
5448 l_x_Line_Scredit_tbl          OE_Order_PUB.Line_Scredit_Tbl_Type;
5449 l_x_action_request_tbl        OE_Order_PUB.request_tbl_type;
5450 l_x_lot_serial_tbl            OE_Order_PUB.lot_serial_tbl_type;
5451 l_x_Header_price_Att_tbl      OE_Order_PUB.Header_price_Att_tbl_type;
5452 l_x_Header_Adj_Att_tbl        OE_Order_PUB.Header_Adj_Att_tbl_type;
5453 l_x_Header_Adj_Assoc_tbl      OE_Order_PUB.Header_Adj_Assoc_tbl_type;
5454 l_x_Line_price_Att_tbl        OE_Order_PUB.Line_price_Att_tbl_type;
5455 l_x_Line_Adj_Att_tbl          OE_Order_PUB.Line_Adj_Att_tbl_type;
5456 l_x_Line_Adj_Assoc_tbl        OE_Order_PUB.Line_Adj_Assoc_tbl_type;
5457 l_x_msg_count                   number;
5458 l_x_msg_data                    Varchar2(2000);
5459 i						pls_integer;
5460 --serla begin
5461 l_x_Header_Payment_tbl        OE_Order_PUB.Header_Payment_Tbl_Type;
5462 l_x_Line_Payment_tbl          OE_Order_PUB.Line_Payment_Tbl_Type;
5463 --serla end
5464 --
5465 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
5466 --
5467 begin
5468 	IF l_debug_level  > 0 THEN
5469 	    oe_debug_pub.add(  'ENTERING OE_LINE_ADJ_UTIL.COPY_ADJUSTMENT_LINES' , 1 ) ;
5470             oe_debug_pub.add(  'SPLIT BY:'||P_SPLIT_BY ) ;
5471         END IF;
5472 	-- Set the existing rows to delete
5473 	Append_Adjustment_Lines(
5474 				p_line_id 	 => p_to_line_id
5475 				,p_operation	 => OE_GLOBALS.G_OPR_DELETE
5476 				,p_line_category_code	 => p_line_category_code
5477 				,px_Line_Adj_Att_Tbl => l_Line_Adj_Att_Tbl
5478                                 ,px_Line_Adj_Tbl => l_Line_Adj_tbl
5479                                 ,px_line_adj_assoc_tbl => l_line_adj_assoc_tbl);
5480 
5481 	Append_Adjustment_Lines(p_header_id => p_from_header_id
5482 				,p_line_id 	 => p_from_line_id
5483 				,p_to_line_id 	 => p_to_line_id
5484 				,p_to_Header_id => p_to_Header_id
5485 				,p_line_category_code	 => p_line_category_code
5486 				,p_operation	 => OE_GLOBALS.G_OPR_CREATE
5487                                 ,p_split_by      => p_split_by
5488 				,px_Line_Adj_Att_Tbl => l_Line_Adj_Att_Tbl
5489  			        ,px_Line_Adj_Tbl => l_Line_Adj_tbl
5490                                 ,px_line_adj_assoc_tbl => l_line_adj_assoc_tbl
5491                              --RT{
5492                                 ,p_mode =>p_mode
5493                                 ,p_retrobill_request_id=>p_retrobill_request_id);
5494                              --RT});
5495     --RT{
5496     IF nvl(p_mode,'xx-') = 'RETROBILL' THEN
5497       OE_ORDER_COPY_UTIL.G_ORDER_LEVEL_COPY :=0;
5498     END IF;
5499     --RT}
5500     -- Append Header level adjustments only if the order is different
5501 /* Modified the following if condition to fix the bug 2170086 */
5502         oe_debug_pub.add('pviprana: p_from_header_id'||p_from_header_id);
5503 	oe_debug_pub.add('pviprana: p_to_header_id'||p_to_header_id);
5504 	oe_debug_pub.add('pviprana: p_from_line_id'||p_from_line_id);
5505 	oe_debug_pub.add('pviprana: p_to_line_id'||p_to_line_id);
5506 	If p_from_Header_id <> p_to_Header_id and
5507        OE_ORDER_COPY_UTIL.G_ORDER_LEVEL_COPY = 0 then
5508 	    --bug3392650 passing an extra parameter p_key_line_id if the mode is 'RETROBILL' so that l_ulp is obtained properly in
5509             --append_adjustment_lines when the order level modifier is being converted to line level.
5510 	      IF nvl(p_mode,'xx-') = 'RETROBILL' THEN
5511 		Append_Adjustment_Lines(
5512 				p_Header_id 	 => p_from_Header_id
5513 				,p_to_line_id 	 => p_to_line_id
5514 				,p_to_Header_id => p_to_Header_id
5515 				,p_line_category_code	 => p_line_category_code
5516 				,p_operation	 => OE_GLOBALS.G_OPR_CREATE
5517 				,px_Line_Adj_Att_Tbl => l_Line_Adj_Att_Tbl
5518  			        ,px_Line_Adj_Tbl => l_Line_Adj_tbl
5519                                 ,px_line_adj_assoc_tbl => l_line_adj_assoc_tbl
5520                                  --RT{
5521 				,p_key_line_id => p_from_line_id
5522                                 ,p_mode =>p_mode
5523                                 ,p_retrobill_request_id=>p_retrobill_request_id
5524                                  --RT}
5525                                  );
5526 		ELSE
5527 		   Append_Adjustment_Lines(
5528 				p_Header_id 	 => p_from_Header_id
5529 				,p_to_line_id 	 => p_to_line_id
5530 				,p_to_Header_id => p_to_Header_id
5531 				,p_line_category_code	 => p_line_category_code
5532 				,p_operation	 => OE_GLOBALS.G_OPR_CREATE
5533 				,px_Line_Adj_Att_Tbl => l_Line_Adj_Att_Tbl
5534  			        ,px_Line_Adj_Tbl => l_Line_Adj_tbl
5535                                 ,px_line_adj_assoc_tbl => l_line_adj_assoc_tbl
5536                                  );
5537 		END IF;
5538 
5539 
5540 
5541 	End If;
5542 If
5543 		l_Line_Adj_tbl.count > 0 or
5544 		l_Line_Adj_att_tbl.count > 0
5545 Then
5546 
5547    -- set control record
5548    l_control_rec.controlled_operation := TRUE;
5549    l_control_rec.write_to_DB          := TRUE;
5550    l_control_rec.change_attributes    := TRUE;
5551    l_control_rec.default_attributes   := TRUE;
5552    l_control_rec.validate_entity      := TRUE;
5553    l_control_rec.clear_dependents     := TRUE;
5554 
5555    l_control_rec.process              := FALSE;
5556    l_control_rec.clear_api_cache      := FALSE;
5557    l_control_rec.clear_api_requests   := FALSE;
5558 
5559 
5560     --  Call OE_Order_PVT.Process_order
5561 
5562 	IF l_debug_level  > 0 THEN
5563 	    oe_debug_pub.add(  'BEFORE OE_ORDER_PVT.PROCESS_ORDER'||L_LINE_ADJ_TBL.COUNT , 1 ) ;
5564 	END IF ;
5565 
5566    OE_Globals.G_PRICING_RECURSION := 'Y';
5567 
5568     OE_Order_PVT.Process_order
5569     (   p_api_version_number          => 1.0
5570     ,   x_return_status               => x_return_status
5571     ,   x_msg_count                   => l_x_msg_count
5572     ,   x_msg_data                    => l_x_msg_data
5573     ,   p_control_rec                 => l_control_rec
5574     ,   p_x_Line_Adj_tbl              => l_Line_Adj_tbl
5575     ,   p_x_Line_Adj_att_tbl          => l_Line_Adj_att_tbl
5576 --  ,   x_header_rec                  => l_x_header_rec
5577     ,   p_x_header_rec                => l_header_rec
5578     ,   p_x_Header_Adj_tbl            => l_x_Header_Adj_tbl
5579     ,   p_x_header_price_att_tbl      => l_x_header_price_att_tbl
5580     ,   p_x_Header_Adj_att_tbl        => l_x_Header_Adj_att_tbl
5581     ,   p_x_Header_Adj_Assoc_tbl      => l_x_Header_Adj_Assoc_tbl
5582     ,   p_x_Header_Scredit_tbl        => l_x_Header_Scredit_tbl
5583 --serla begin
5584     ,   p_x_Header_Payment_tbl          => l_x_Header_Payment_tbl
5585 --serla end
5586 --  ,   p_x_line_tbl                  => l_x_line_tbl
5587     ,   p_x_line_tbl                  => l_line_tbl
5588  -- ,   x_Line_Adj_tbl                => l_x_Line_Adj_tbl
5589     ,   p_x_Line_Price_att_tbl        => l_x_Line_Price_att_tbl
5590  -- ,   x_Line_Adj_att_tbl            => l_x_Line_Adj_att_tbl
5591  -- ,   x_Line_Adj_Assoc_tbl          => l_x_Line_Adj_Assoc_tbl
5592     ,   p_x_Line_Adj_Assoc_tbl        => l_Line_Adj_Assoc_tbl
5593     ,   p_x_Line_Scredit_tbl          => l_x_Line_Scredit_tbl
5594 --serla begin
5595     ,   p_x_Line_Payment_tbl            => l_x_Line_Payment_tbl
5596 --serla end
5597     ,   p_x_Lot_Serial_tbl            => l_x_Lot_Serial_Tbl
5598     ,   p_x_action_request_tbl        => l_x_Action_Request_tbl
5599     );
5600 
5601   OE_Globals.G_PRICING_RECURSION := 'N';
5602 
5603 
5604   End If;
5605 
5606 	IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
5607 		RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5608 	ELSIF x_return_status = FND_API.G_RET_STS_ERROR THEN
5609 		RAISE FND_API.G_EXC_ERROR;
5610 	END IF;
5611 
5612 	IF l_debug_level  > 0 THEN
5613 	    oe_debug_pub.add(  'EXITING OE_LINE_ADJ_UTIL.COPY_ADJUSTMENT_LINES' , 1 ) ;
5614 	END IF;
5615 
5616 	Exception
5617 	    WHEN FND_API.G_EXC_ERROR THEN
5618 		  x_return_status := FND_API.G_RET_STS_ERROR;
5619 
5620 		WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5621 
5622 			x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5623                         IF l_debug_level  > 0 THEN
5624                             oe_debug_pub.add(  G_PKG_NAME||':COPY_ADJUSTMENT_LINES:'||SQLERRM ) ;
5625                         END IF;
5626 
5627 end copy_adjustment_lines;
5628 
5629 /* Start AuditTrail */
5630 PROCEDURE Pre_Write_Process
5631    (  p_x_line_adj_rec IN OUT NOCOPY OE_ORDER_PUB.line_adj_rec_type,
5632       p_old_line_adj_rec IN OE_ORDER_PUB.line_adj_rec_type := OE_ORDER_PUB.G_MISS_LINE_ADJ_REC)  IS
5633 /*local */
5634 l_return_status     varchar2(30);
5635 --
5636 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
5637 --
5638 l_org_id                NUMBER(15):=MO_GLOBAL.Get_Current_Org_Id;  --TaxER
5639 l_current_event number := 0;  --TaxER
5640 l_tax_calculation_event_code number := 0;  --TaxER
5641 l_line_rec OE_Order_PUB.Line_Rec_Type;  --TaxER
5642 BEGIN
5643 
5644        --11.5.10 Versioning/Audit Trail updates
5645      IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110510' AND
5646          OE_GLOBALS.G_ROLL_VERSION <> 'N' AND
5647          NOT OE_GLOBALS.G_HEADER_CREATED THEN
5648        IF OE_GLOBALS.G_REASON_CODE IS NULL AND
5649            OE_GLOBALS.G_CAPTURED_REASON IN ('V','A') THEN
5650           IF p_x_line_adj_rec.change_reason_code <> FND_API.G_MISS_CHAR THEN
5651             Null; -- for bug 13343285
5652             /*  OE_GLOBALS.G_REASON_TYPE := 'CHANGE_CODE';
5653               OE_GLOBALS.G_REASON_CODE := p_x_line_adj_rec.change_reason_code;
5654               OE_GLOBALS.G_REASON_COMMENTS := p_x_line_adj_rec.change_reason_text;
5655               OE_GLOBALS.G_CAPTURED_REASON := 'Y';*/
5656           ELSE
5657               if l_debug_level > 0 then
5658                  OE_DEBUG_PUB.add('Reason code for versioning is missing or invalid', 1);
5659               end if;
5660               --bug 3775971
5661               if OE_GLOBALS.G_UI_FLAG AND
5662                 (OE_GLOBALS.G_PRICING_RECURSION = 'Y' OR
5663                  OE_GLOBALS.G_RECURSION_MODE = 'Y') then
5664                  raise FND_API.G_EXC_ERROR;
5665               end if;
5666           END IF;
5667        END IF;
5668 
5669        --log delayed request
5670         oe_debug_pub.add('log versioning request',1);
5671           OE_Delayed_Requests_Pvt.Log_Request(p_entity_code => OE_GLOBALS.G_ENTITY_ALL,
5672                                    p_entity_id => p_x_line_adj_rec.header_id,
5673                                    p_requesting_entity_code => OE_GLOBALS.G_ENTITY_LINE_ADJ,
5674                                    p_requesting_entity_id => p_x_line_adj_rec.price_adjustment_id,
5675                                    p_request_type => OE_GLOBALS.G_VERSION_AUDIT,
5676                                    x_return_status => l_return_status);
5677      END IF;
5678 
5679 if (p_x_line_adj_rec.operation  = OE_GLOBALS.G_OPR_UPDATE) then
5680 
5681    IF OE_GLOBALS.G_AUDIT_REASON_RQD_FLAG = 'Y' OR
5682 	 OE_GLOBALS.G_AUDIT_HISTORY_RQD_FLAG = 'Y' THEN
5683 
5684       IF l_debug_level  > 0 THEN
5685           oe_debug_pub.add(  'CALL TO RECORD LINE PRICE ADJ HISTORY' , 5 ) ;
5686       END IF;
5687      IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110510' THEN
5688           OE_Versioning_Util.Capture_Audit_Info(p_entity_code => OE_GLOBALS.G_ENTITY_LINE_ADJ,
5689                                            p_entity_id => p_x_line_adj_rec.price_adjustment_id,
5690                                            p_hist_type_code =>  'UPDATE');
5691            --log delayed request
5692              OE_Delayed_Requests_Pvt.Log_Request(p_entity_code => OE_GLOBALS.G_ENTITY_ALL,
5693                                    p_entity_id => p_x_line_adj_rec.header_id,
5694                                    p_requesting_entity_code => OE_GLOBALS.G_ENTITY_LINE_ADJ,
5695                                    p_requesting_entity_id => p_x_line_adj_rec.price_adjustment_id,
5696                                    p_request_type => OE_GLOBALS.G_VERSION_AUDIT,
5697                                    x_return_status => l_return_status);
5698           OE_GLOBALS.G_AUDIT_HISTORY_RQD_FLAG := 'N';
5699      ELSE
5700       OE_CHG_ORDER_PVT.RecordLPAdjHist
5701       ( p_line_adj_id => p_x_line_adj_rec.price_adjustment_id,
5702         p_line_adj_rec => null,
5703         p_hist_type_code => 'UPDATE',
5704         p_reason_code => p_x_line_adj_rec.change_reason_code,
5705         p_comments => p_x_line_adj_rec.change_reason_text,
5706         p_wf_activity_code => null,
5707         p_wf_result_code => null,
5708         x_return_status => l_return_status );
5709      END IF;
5710 
5711    END IF;
5712 END IF;  --TaxER
5713 
5714    --TaxER start
5715     IF  (NVL(oe_sys_parameters.value('OE_INVOICE_FREIGHT_AS_LINE',l_org_id), 'N') = 'Y')
5716     AND p_x_line_adj_rec.list_line_type_code = 'FREIGHT_CHARGE'  THEN
5717 
5718         BEGIN
5719 
5720          IF OE_Order_Cache.g_header_rec.order_type_id is not null THEN
5721 
5722               IF (OE_Order_Cache.g_order_type_rec.order_type_id = FND_API.G_MISS_NUM) OR (OE_Order_Cache.g_order_type_rec.order_type_id is null)
5723                   OR (OE_Order_Cache.g_order_type_rec.order_type_id <> OE_Order_Cache.g_header_rec.Order_Type_id)
5724               THEN
5725                          OE_Order_Cache.Load_Order_type(OE_Order_CACHE.g_header_rec.Order_Type_id) ;
5726                END IF ;
5727 
5728               IF (OE_Order_Cache.g_order_type_rec.order_type_id = OE_Order_Cache.g_header_rec.Order_Type_id) THEN
5729                         if (OE_Order_Cache.g_order_type_rec.tax_calculation_event_code = 'ENTERING') then
5730                                 l_tax_calculation_event_code := 0;
5731                         elsif (OE_Order_Cache.g_order_type_rec.tax_calculation_event_code = 'BOOKING') then
5732                                 l_tax_calculation_event_code := 1;
5733                         elsif (OE_Order_Cache.g_order_type_rec.tax_calculation_event_code = 'SHIPPING') then
5734                                 l_tax_calculation_event_code := 2;
5735                         elsif (OE_Order_Cache.g_order_type_rec.tax_calculation_event_code = 'INVOICING') then
5736                                 l_tax_calculation_event_code := 3;
5737                         else
5738                                 l_tax_calculation_event_code := -1;
5739                         end if ;
5740                ELSE
5741                       l_tax_calculation_event_code := 0 ;
5742                END IF ;
5743 
5744 
5745          END IF;
5746 
5747         EXCEPTION
5748            WHEN NO_DATA_FOUND THEN
5749                  l_tax_calculation_event_code := 0;
5750            WHEN OTHERS THEN
5751             IF l_debug_level > 0 THEN
5752              oe_debug_pub.add('OEXULADB:Failed while trying to query up tax_calcualtion_event for order_type_id ');
5753             END IF;
5754 
5755              RAISE;
5756         END;
5757 
5758        BEGIN
5759        l_line_rec  := OE_line_UTIL.Query_Row(p_line_id=> p_x_line_adj_rec.line_id);
5760        EXCEPTION
5761           WHEN NO_DATA_FOUND THEN --bug12594800
5762              l_current_event := 0; /* current event is Entering */
5763        END;
5764         IF nvl(l_line_rec.booked_flag, 'N') = 'Y' THEN
5765             l_current_event := 1;  /* current event is booking or higher */
5766         END IF;
5767 
5768         IF (l_line_rec.shippable_flag = 'Y' and
5769             l_line_rec.shipped_quantity is not null ) THEN
5770            l_current_event := 2; /* current event is shipping or higher */
5771         END IF;
5772 
5773 
5774         IF ( l_tax_calculation_event_code = 2 and
5775              l_line_rec.shippable_flag = 'N' ) THEN
5776               l_current_event := l_tax_calculation_event_code;
5777         END IF;
5778 
5779         IF l_debug_level > 0 THEN
5780            oe_debug_pub.add('OEXULADB:Tax Event Code :'||l_tax_calculation_event_code);
5781            oe_debug_pub.add('OEXULADB:Current Event  :'||l_current_event);
5782         END IF;
5783 
5784      IF l_current_event >= l_tax_calculation_event_code THEN
5785 
5786           IF (OE_GLOBALS.G_UI_FLAG)
5787              AND nvl(FND_PROFILE.VALUE('ONT_DELAY_TAX_CALC'), 'N') = 'N'
5788           THEN
5789             OE_delayed_requests_Pvt.log_request(
5790                 p_entity_code           => OE_GLOBALS.G_ENTITY_LINE,
5791                 p_entity_id             => p_x_line_adj_rec.line_id,
5792                 p_requesting_entity_code => OE_GLOBALS.G_ENTITY_LINE,
5793                 p_requesting_entity_id   => p_x_line_adj_rec.line_id,
5794                 p_request_type          => OE_GLOBALS.g_tax_line,
5795                 x_return_status         => l_return_status);
5796           ELSE
5797             OE_delayed_requests_Pvt.log_request(
5798                 p_entity_code           => OE_GLOBALS.G_ENTITY_ALL,
5799                 p_entity_id             => p_x_line_adj_rec.line_id,
5800                 p_requesting_entity_code => OE_GLOBALS.G_ENTITY_LINE,
5801                 p_requesting_entity_id   => p_x_line_adj_rec.line_id,
5802                 p_request_type          => OE_GLOBALS.g_tax_line,
5803                 p_param1                => NULL,
5804                 x_return_status         => l_return_status);
5805           END IF;
5806        END IF;
5807 
5808      END IF;
5809   --TaxER end
5810 
5811     IF l_return_status <> FND_API.G_RET_STS_SUCCESS then
5812 	  IF l_debug_level  > 0 THEN
5813 	      oe_debug_pub.add(  'INSERT INTO LINE PRICE ADJUSTMENTS AUDIT HISTORY CAUSED ERROR' , 1 ) ;
5814 	  END IF;
5815        IF l_return_status = FND_API.G_RET_STS_ERROR then
5816           raise FND_API.G_EXC_ERROR;
5817        ELSE
5818           raise FND_API.G_EXC_UNEXPECTED_ERROR;
5819        END IF;
5820     END IF;
5821 --TaxER END IF;
5822 
5823 END Pre_Write_Process;
5824 /* End AuditTrail */
5825 
5826 Function Is_Pricing_Related_Change(p_new_line_rec In Oe_Order_Pub.Line_Rec_Type,
5827                                    p_old_line_rec   In Oe_Order_Pub.Line_Rec_Type) Return Boolean As
5828    l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
5829    Begin
5830 
5831        IF l_debug_level  > 0 THEN
5832              oe_debug_pub.add(  ' Check if any pricing related changes has occured' ) ;
5833        END IF;
5834 
5835        IF NOT OE_GLOBALS.Equal(p_new_line_rec.agreement_id,p_old_line_rec.agreement_id)
5836        OR NOT OE_GLOBALS.Equal(p_new_line_rec.cust_po_number,p_old_line_rec.cust_po_number)
5837        OR NOT OE_GLOBALS.Equal(p_new_line_rec.inventory_item_id,p_old_line_rec.inventory_item_id)
5838        OR NOT OE_GLOBALS.Equal(p_new_line_rec.invoice_to_org_id,p_old_line_rec.invoice_to_org_id)
5839        OR NOT OE_GLOBALS.Equal(p_new_line_rec.ordered_item_id,p_old_line_rec.ordered_item_id)
5840        OR NOT OE_GLOBALS.Equal(p_new_line_rec.ordered_item,p_old_line_rec.ordered_item)
5841        OR NOT OE_GLOBALS.Equal(p_new_line_rec.line_category_code,p_old_line_rec.line_category_code)
5842        OR NOT OE_GLOBALS.Equal(p_new_line_rec.line_type_id,p_old_line_rec.line_type_id)
5843        OR NOT OE_GLOBALS.Equal(p_new_line_rec.ordered_quantity,p_old_line_rec.ordered_quantity)
5844        OR NOT OE_GLOBALS.Equal(p_new_line_rec.order_quantity_uom,p_old_line_rec.order_quantity_uom)
5845        OR NOT OE_GLOBALS.Equal(p_new_line_rec.payment_term_id,p_old_line_rec.payment_term_id)
5846        OR NOT OE_GLOBALS.Equal(p_new_line_rec.price_list_id,p_old_line_rec.price_list_id)
5847        OR NOT OE_GLOBALS.Equal(p_new_line_rec.pricing_date,p_old_line_rec.pricing_date)
5848        OR NOT OE_GLOBALS.Equal(p_new_line_rec.pricing_quantity,p_old_line_rec.pricing_quantity)
5849        OR NOT OE_GLOBALS.Equal(p_new_line_rec.pricing_quantity_uom,p_old_line_rec.pricing_quantity_uom)
5850        OR NOT OE_GLOBALS.Equal(p_new_line_rec.request_date,p_old_line_rec.request_date)
5851        OR NOT OE_GLOBALS.Equal(p_new_line_rec.ship_to_org_id,p_old_line_rec.ship_to_org_id)
5852        OR NOT OE_GLOBALS.Equal(p_new_line_rec.sold_to_org_id,p_old_line_rec.sold_to_org_id)
5853        OR NOT OE_GLOBALS.Equal(p_new_line_rec.unit_selling_price,p_old_line_rec.unit_selling_price)
5854        OR NOT OE_GLOBALS.Equal(p_new_line_rec.service_start_date,p_old_line_rec.service_start_date)
5855        OR NOT OE_GLOBALS.Equal(p_new_line_rec.service_end_date,p_old_line_rec.service_end_date)
5856        OR NOT OE_GLOBALS.Equal(p_new_line_rec.service_duration,p_old_line_rec.service_duration)
5857        OR NOT OE_GLOBALS.Equal(p_new_line_rec.service_period,p_old_line_rec.service_period)
5858        --Bug 4332307
5859        OR (
5860            ((p_new_line_rec.unit_list_price IS NOT NULL AND
5861              p_new_line_rec.unit_list_price <> FND_API.G_MISS_NUM AND
5862              p_new_line_rec.unit_list_price <> p_old_line_rec.unit_list_price)
5863             OR
5864              (p_new_line_rec.unit_list_price IS NULL))
5865            AND
5866             p_old_line_rec.unit_list_price IS NOT NULL AND
5867             p_old_line_rec.unit_list_price <> FND_API.G_MISS_NUM AND
5868             p_new_line_rec.original_list_price  IS NOT NULL AND
5869             p_new_line_rec.original_list_price <> FND_API.G_MISS_NUM AND
5870             p_new_line_rec.Ordered_Quantity <> fnd_api.g_miss_num and
5871             p_new_line_rec.order_quantity_uom is not null and
5872             p_new_line_rec.order_quantity_uom <> fnd_api.g_miss_char
5873             AND oe_code_control.code_release_level >= '110510'
5874             AND nvl(fnd_profile.value('ONT_LIST_PRICE_OVERRIDE_PRIV'), 'NONE') = 'UNLIMITED'
5875             AND  OE_GLOBALS.G_UI_FLAG
5876             AND  OE_Globals.G_PRICING_RECURSION = 'N'
5877           )
5878        --Bug 4332307
5879 
5880     Then
5881          IF l_debug_level  > 0 THEN
5882              oe_debug_pub.add(  ' PRICING RELATED FIELDS HAS CHANGED' ) ;
5883          END IF;
5884          Return True;
5885 
5886     Else
5887          IF l_debug_level  > 0 THEN
5888              oe_debug_pub.add(  ' NO pricing related Fields Has Changed' ) ;
5889          END IF;
5890          Return False;
5891     End If;
5892 
5893 
5894    End;
5895 
5896 /* 1503357 - Delete all PRG lines associated with a particular line */
5897 Procedure Delete_PRG_Lines(p_line_id In Number, p_operation In Varchar2) Is
5898 
5899   -- Get all PRG lines
5900   Cursor prg_lines is
5901    select adj1.line_id, assoc.rltd_price_adj_id
5902    from oe_price_adjustments adj1,
5903 	oe_price_adj_assocs  assoc,
5904 	oe_price_adjustments adj2,
5905         oe_order_lines_all line
5906    where adj1.price_adjustment_id = assoc.rltd_price_adj_id AND
5907 	 assoc.price_adjustment_id = adj2.price_adjustment_id AND
5908 	 adj2.list_line_type_code = 'PRG' AND
5909 	 adj1.line_id = line.line_id AND   /*Added for bug 4018279*/
5910          line.open_flag = 'Y' AND
5911 	 adj2.line_id = p_line_id;
5912 
5913 
5914   Cursor prg_adjs is
5915        select price_adjustment_id
5916         from oe_price_adjustments
5917         where line_id = p_line_id AND list_line_type_code = 'PRG';
5918 
5919   /* Variables to call process order */
5920   l_line_tbl                         OE_ORDER_PUB.Line_Tbl_Type;
5921   l_old_line_tbl		     OE_ORDER_PUB.Line_Tbl_Type;
5922   l_control_rec                      OE_GLOBALS.Control_Rec_Type;
5923   l_line_rec			     OE_Order_PUB.Line_Rec_Type;
5924   x_return_status	             Varchar2(1);
5925   l_prg_line_id	                     NUMBER;
5926   l_price_adj_id		     NUMBER;
5927   l_delete_prg                       varchar2(1);
5928   l_dummy                            NUMBER;
5929   l_rltd_price_adj_id                NUMBER;
5930   --
5931   l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
5932   --
5933   l_reason_code VARCHAR2(30);
5934   l_reason_comments VARCHAR2(2000);
5935   l_captured_reason varchar2(1);
5936 
5937   Begin
5938    IF l_debug_level  > 0 THEN
5939        oe_debug_pub.add(  'ENTERING OEXULADB.DELETE_PRG_LINES WITH LINE_ID = ' || P_LINE_ID ) ;
5940    END IF;
5941   if l_debug_level > 0 then
5942     oe_debug_pub.add('reason:'||OE_GLOBALS.G_REASON_CODE,3);
5943     oe_debug_pub.add('captured:'||OE_GLOBALS.G_captured_reason,3);
5944     oe_debug_pub.add('audit:'||OE_GLOBALS.G_version_audit,3);
5945    end if;
5946   l_reason_code := OE_GLOBALS.G_REASON_CODE;
5947    l_reason_comments := OE_GLOBALS.G_REASON_COMMENTS;
5948    l_captured_reason := OE_GLOBALS.G_CAPTURED_REASON;
5949    OPEN prg_lines;
5950    FETCH prg_lines into l_prg_line_id, l_rltd_price_adj_id;
5951    WHILE prg_lines%FOUND Loop
5952         IF l_debug_level  > 0 THEN
5953             oe_debug_pub.add(  'PRG LINE ID = ' || L_PRG_LINE_ID ) ;
5954         END IF;
5955         OE_LINE_UTIL.QUERY_ROW(p_line_id => l_prg_line_id,
5956 	                       x_line_rec => l_line_rec);
5957 
5958 	l_old_line_tbl(1) := l_line_rec;
5959 
5960       if (l_line_rec.booked_flag <> 'Y') Then
5961 
5962 	IF l_debug_level  > 0 THEN
5963 	    oe_debug_pub.add(  'ORDER NOT BOOKED' ) ;
5964 	END IF;
5965 	l_line_rec.operation := OE_GLOBALS.G_OPR_DELETE;
5966 
5967       else
5968 	if (l_line_rec.shipped_quantity is NULL) Then
5969 	  IF l_debug_level  > 0 THEN
5970 	      oe_debug_pub.add(  'BOOKED ORDER , LINE NOT SHIPPED' ) ;
5971 	  END IF;
5972           if (p_operation = OE_GLOBALS.G_OPR_DELETE) Then
5973             -- bug 2756288, if buy line can be deleted, so can get line
5974             l_line_rec.operation := OE_GLOBALS.G_OPR_DELETE;
5975           else
5976 	    l_line_rec.operation := OE_GLOBALS.G_OPR_UPDATE;
5977 	    l_line_rec.ordered_quantity := 0;
5978 	    l_line_rec.pricing_quantity := 0;
5979           end if;
5980 	else
5981 	  IF l_debug_level  > 0 THEN
5982 	      oe_debug_pub.add(  'BOOKED ORDER , SHIPPED LINE' ) ;
5983 	  END IF;
5984 	  l_line_rec.operation := OE_GLOBALS.G_OPR_UPDATE;
5985 	  l_line_rec.calculate_price_flag := 'Y';
5986 	end if;
5987       end if;
5988 	 l_line_rec.change_reason := 'SYSTEM';
5989 	 l_line_rec.change_comments := 'REPRICING';
5990 
5991       for i in prg_adjs LOOP
5992         -- Delete PRG adjustment record and the association
5993         -- between the buy line and the get line
5994         IF l_debug_level  > 0 THEN
5995             oe_debug_pub.add(  'PRICE ADJ ID = ' || I.PRICE_ADJUSTMENT_ID ) ;
5996         END IF;
5997         OE_LINE_ADJ_UTIL.DELETE_ROW(p_price_adjustment_id => i.price_adjustment_id);
5998 
5999         DELETE FROM OE_PRICE_ADJ_ASSOCS WHERE PRICE_ADJUSTMENT_ID = i.price_adjustment_id;
6000        END LOOP;
6001         BEGIN
6002           l_delete_prg := 'N';
6003           SELECT price_adj_assoc_id INTO l_dummy from oe_price_adj_assocs
6004           WHERE rltd_price_adj_id = l_rltd_price_adj_id and rownum < 2;
6005           exception
6006             WHEN NO_DATA_FOUND THEN
6007              l_delete_prg := 'Y';
6008          END;
6009          IF l_debug_level  > 0 THEN
6010              oe_debug_pub.add(  'ASSOC ID:'||L_DUMMY ) ;
6011          END IF;
6012 
6013       IF (l_delete_prg = 'Y') THEN
6014 	-- Call Process Order
6015 	l_control_rec.controlled_operation := TRUE;
6016 	l_control_rec.check_security	   := TRUE;
6017     	l_control_rec.clear_dependents 	   := TRUE;
6018 	l_control_rec.default_attributes   := TRUE;
6019 	l_control_rec.change_attributes	   := TRUE;
6020 	l_control_rec.validate_entity	   := TRUE;
6021     	l_control_rec.write_to_DB          := TRUE;
6022     	l_control_rec.process              := FALSE;
6023 
6024         l_line_tbl(1) 	          := l_line_rec;
6025 
6026 	Oe_Order_Pvt.Lines
6027 	(    p_validation_level			=> FND_API.G_VALID_LEVEL_NONE
6028 	,	p_control_rec			=> l_control_rec
6029 	,	p_x_line_tbl			=> l_line_tbl
6030 	,	p_x_old_line_tbl		=> l_old_line_tbl
6031 	,       x_return_status                 => x_return_status
6032 	);
6033 
6034          OE_GLOBALS.G_CASCADING_REQUEST_LOGGED := TRUE;
6035        END IF;
6036       FETCH prg_lines into l_prg_line_id, l_rltd_price_adj_id;
6037    End Loop;
6038    CLOSE prg_lines;
6039   if l_debug_level > 0 then
6040     oe_debug_pub.add('reason:'||OE_GLOBALS.G_REASON_CODE,3);
6041     oe_debug_pub.add('captured:'||OE_GLOBALS.G_captured_reason,3);
6042     oe_debug_pub.add('audit:'||OE_GLOBALS.G_version_audit,3);
6043    end if;
6044    OE_GLOBALS.G_REASON_CODE := l_reason_code;
6045    OE_GLOBALS.G_REASON_COMMENTS := l_reason_comments;
6046    OE_GLOBALS.G_CAPTURED_REASON := l_captured_reason;
6047 
6048    IF l_debug_level  > 0 THEN
6049        oe_debug_pub.add(  'EXITING OEXULADB.DELETE_PRG_LINES' ) ;
6050    END IF;
6051   EXCEPTION
6052     WHEN OTHERS THEN
6053     IF l_debug_level  > 0 THEN
6054         oe_debug_pub.add(  'EXCEPTION IN DELETE_PRG_LINES'||SQLERRM , 3 ) ;
6055     END IF;
6056     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6057   End Delete_PRG_Lines;
6058 
6059 Procedure Check_Canceled_PRG(p_old_line_rec in Oe_Order_Pub.line_rec_type,
6060                              p_new_line_rec in Oe_Order_Pub.line_rec_type) Is
6061                              --
6062                              l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
6063                              --
6064 Begin
6065 
6066 IF p_new_line_rec.operation = OE_GLOBALS.G_OPR_DELETE OR NOT OE_GLOBALS.EQUAL(p_new_line_rec.ordered_quantity, p_old_line_rec.ordered_quantity) Then
6067        IF (nvl(p_new_line_rec.booked_flag, 'X') <> 'Y') Then
6068         IF (p_new_line_rec.operation = OE_GLOBALS.G_OPR_DELETE OR p_new_line_rec.ordered_quantity = 0) Then
6069   	  IF l_debug_level  > 0 THEN
6070   	      oe_debug_pub.add(  'OPEN ORDER , ORDERED QTY CHANGED TO ZERO , DELETE ALL PRG LINES' ) ;
6071   	  END IF;
6072  	  Delete_PRG_Lines(p_new_line_rec.line_id, p_new_line_rec.operation);
6073         END IF;
6074       ELSE
6075 	IF (p_new_line_rec.ordered_quantity = 0 AND
6076 	  (p_new_line_rec.change_reason is NOT NULL OR
6077 	      p_new_line_rec.change_reason <> FND_API.G_MISS_CHAR))
6078         OR p_new_line_rec.operation = OE_GLOBALS.G_OPR_DELETE Then
6079   	     IF l_debug_level  > 0 THEN
6080   	         oe_debug_pub.add(  'BOOKED ORDER , ORDERED QTY CHANGED TO ZERO , DELETE ALL PRG LINES' ) ;
6081   	     END IF;
6082 	     Delete_PRG_Lines(p_new_line_rec.line_id, p_new_line_rec.operation);
6083         END IF;
6084       END IF;
6085      End if;
6086 EXCEPTION
6087   WHEN OTHERS THEN
6088   IF l_debug_level  > 0 THEN
6089       oe_debug_pub.add(  'EXCEPTION IN CHECK_CANCELED_PRG'||SQLERRM , 3 ) ;
6090   END IF;
6091   RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6092 End Check_Canceled_PRG;
6093 
6094 ------------------------------------------------------------------------------------
6095 --Called from OEXULINB.pls apply_attribute_changes to check is a repricing is required
6096 --Not yet fully implemented. Will work in when getting the lock of OEXULINB.pls
6097 ------------------------------------------------------------------------------------
6098 Procedure Process_Pricing (p_x_new_line_rec In OUT Nocopy Oe_Order_Pub.Line_Rec_Type,
6099                            p_old_line_rec   In Oe_Order_Pub.Line_Rec_Type,
6100                            p_no_price_flag  In Boolean) Is
6101 
6102 l_price_flag                 Varchar2(1):='Y';
6103 l_charges_for_included_item  VARCHAR2(1):=NVL(FND_PROFILE.VALUE('ONT_CHARGES_FOR_INCLUDED_ITEM'),'N');
6104 l_return_status              VARCHAR2(10);
6105 l_pricing_related_changes    Boolean :=False;
6106 l_margin_related_changes     Boolean :=False;
6107 
6108 --
6109 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
6110 --
6111 Begin
6112     IF l_debug_level  > 0 THEN
6113         oe_debug_pub.add(  'ENTERING OE_LINE_ADJ_UTIL.PROCESS_PRICING CALLED FROM ULINB' ) ;
6114     END IF;
6115 
6116     IF NOT OE_GLOBALS.Equal(p_x_new_line_rec.cancelled_quantity,p_old_line_rec.cancelled_quantity)
6117            and p_x_new_line_rec.cancelled_quantity > 0
6118     Then
6119        IF l_debug_level  > 0 THEN
6120            oe_debug_pub.add(  ' USER CANCELS LINE , CANCELLED QUANTITY:'||P_X_NEW_LINE_REC.CANCELLED_QUANTITY ) ;
6121        END IF;
6122 
6123        --bug7491829 added p_ordered_quantity
6124        Process_Cancelled_Lines(p_x_new_line_rec=>p_x_new_line_rec,
6125                                p_ordered_quantity => p_old_line_rec.ordered_quantity);
6126     End If;
6127 
6128     IF  Is_Pricing_Related_Change(p_new_line_rec => p_x_new_line_rec,
6129                                    p_old_line_rec  => p_old_line_rec)
6130     THEN
6131          l_pricing_related_changes := True;
6132     End If;
6133 
6134 
6135   IF     NOT OE_GLOBALS.Equal(p_x_new_line_rec.unit_cost,p_old_line_rec.unit_cost)
6136   Then
6137          IF l_debug_level  > 0 THEN
6138              oe_debug_pub.add(  ' BOOKED FLAG OR UNIT COST CHANGES' ) ;
6139          END IF;
6140          l_margin_related_changes := True;
6141   End If;
6142 
6143 
6144   IF l_pricing_related_changes THEN
6145         Register_Changed_Lines(p_line_id   => p_x_new_line_rec.line_id,
6146                                 p_header_id => p_x_new_line_rec.header_id,
6147                                 p_operation => p_x_new_line_rec.operation);
6148 
6149      --bug 2965218
6150         If G_GROUP_PRICING_DSP IS NULL and p_x_new_line_rec.source_document_type_id = 5 Then
6151 	    G_GROUP_PRICING_DSP := nvl(fnd_profile.value('ONT_GRP_PRICE_FOR_DSP'),'N');
6152         End If;
6153 	if p_x_new_line_rec.source_document_type_id = 5 and G_GROUP_PRICING_DSP = 'N' Then
6154            If nvl(G_SEND_ALL_LINES_FOR_DSP,'N') <> 'Y' Then
6155               G_SEND_ALL_LINES_FOR_DSP := 'N';
6156            End If;
6157         else
6158             G_SEND_ALL_LINES_FOR_DSP := 'Y';
6159         end if;
6160        If l_debug_level > 0 Then
6161           oe_debug_pub.add('G_GROUP_PRICING_DSP = '||G_GROUP_PRICING_DSP);
6162        End If;
6163 
6164 	If G_CODE_RELEASE_LEVEL IS NULL THEN
6165 	   G_CODE_RELEASE_LEVEL := OE_CODE_CONTROL.CODE_RELEASE_LEVEL;
6166 	End If;
6167 
6168        If l_debug_level > 0 Then
6169           oe_debug_pub.add('G_CODE_RELEASE_LEVEL = '||G_CODE_RELEASE_LEVEL);
6170        End If;
6171 
6172        if p_x_new_line_rec.ordered_quantity2 is not null and G_CODE_RELEASE_LEVEL < '110509' Then
6173           G_OPM_ITEM_CATCHWEIGHT_USED := 'Y';
6174        End If;
6175   END IF;
6176 
6177 
6178   IF  (l_margin_related_changes or l_pricing_related_changes)
6179       AND p_x_new_line_rec.booked_flag = 'Y'  THEN
6180      IF OE_FEATURES_PVT.Is_Margin_Avail THEN
6181          --attributes affect selling price changes, we log a delayed request to
6182          --evaluate margin, margin_hold procedure will hold the order if
6183          --margin falls below a intended setup margin
6184         IF Oe_Sys_Parameters.Value('COMPUTE_MARGIN') <> 'N' Then
6185          IF l_debug_level  > 0 THEN
6186              oe_debug_pub.add(  'LOGGING DELAYED REQUEST FOR MARGIN HOLD FOR BOOKED LINE_ID:'||P_X_NEW_LINE_REC.LINE_ID ) ;
6187          END IF;
6188          oe_delayed_requests_pvt.log_request(
6189                      p_entity_code            => OE_GLOBALS.G_ENTITY_ALL,
6190                      p_entity_id              => p_x_new_line_rec.header_id,
6191 
6192                      p_requesting_entity_code => OE_GLOBALS.G_ENTITY_ALL,
6193                      p_requesting_entity_id   => p_x_new_line_rec.header_id,
6194 
6195                      p_request_type           => 'MARGIN_HOLD',
6196                      x_return_status          => l_return_status);
6197         END IF;
6198      END IF;
6199   END IF;
6200 
6201 
6202 
6203 --MRG BGN, performance bug 4580260 (fp of bug 4273309)
6204 IF OE_FEATURES_PVT.Is_Margin_Avail
6205  AND p_x_new_line_rec.item_type_code NOT IN ('KIT','MODEL','INCLUDED','CLASS','CONFIG','OPTION') THEN
6206  IF l_debug_level  > 0 THEN
6207      oe_debug_pub.add(  'NEW INV ITEM ID = '||P_X_NEW_LINE_REC.INVENTORY_ITEM_ID , 1 ) ;
6208      oe_debug_pub.add(  'OLD INV ITEM ID = '||P_OLD_LINE_REC.INVENTORY_ITEM_ID , 1 ) ;
6209      oe_debug_pub.add(  'NEW SHIP_FROM_ORG_ID = '||P_X_NEW_LINE_REC.SHIP_FROM_ORG_ID , 1 ) ;
6210      oe_debug_pub.add(  'OLD SHIP_FROM_ORG_ID = '||P_OLD_LINE_REC.SHIP_FROM_ORG_ID , 1 ) ;
6211      oe_debug_pub.add(  'NEW PROJECT_ID = '||P_X_NEW_LINE_REC.PROJECT_ID , 1 ) ;
6212      oe_debug_pub.add(  'OLD PROJECT_ID = '||P_OLD_LINE_REC.PROJECT_ID , 1 ) ;
6213      oe_debug_pub.add(  'NEW ACTUAL_SHIPMENT_DATE = '||P_X_NEW_LINE_REC.ACTUAL_SHIPMENT_DATE , 1 ) ;
6214      oe_debug_pub.add(  'OLD ACTUAL_SHIPMENT_DATE = '||P_OLD_LINE_REC.ACTUAL_SHIPMENT_DATE , 1 ) ;
6215      oe_debug_pub.add(  'NEW FULFILLMENT_DATE = '||P_X_NEW_LINE_REC.FULFILLMENT_DATE , 1 ) ;
6216      oe_debug_pub.add(  'OLD FULFILLMENT_DATE = '||P_OLD_LINE_REC.FULFILLMENT_DATE , 1 ) ;
6217      oe_debug_pub.add(  'NEW PRICING_DATE = '||P_X_NEW_LINE_REC.PRICING_DATE , 1 ) ;
6218      oe_debug_pub.add(  'OLD PRICING_DATE = '||P_OLD_LINE_REC.PRICING_DATE , 1 ) ;
6219  END IF;
6220 
6221    IF NOT OE_GLOBALS.Equal(p_x_new_line_rec.inventory_item_id,p_old_line_rec.inventory_item_id)
6222       OR NOT OE_GLOBALS.Equal(p_x_new_line_rec.ship_from_org_id,p_old_line_rec.ship_from_org_id)
6223       OR NOT OE_GLOBALS.Equal(p_x_new_line_rec.project_id,p_old_line_rec.project_id)
6224       OR NOT OE_GLOBALS.Equal(p_x_new_line_rec.actual_shipment_date,p_old_line_rec.actual_shipment_date)
6225       OR NOT OE_GLOBALS.Equal(p_x_new_line_rec.fulfillment_date,p_old_line_rec.fulfillment_date)
6226       OR NOT OE_GLOBALS.Equal(p_x_new_line_rec.pricing_date,p_old_line_rec.pricing_date)
6227     THEN
6228         IF Oe_Sys_Parameters.Value('COMPUTE_MARGIN') <> 'N' Then
6229          IF l_debug_level  > 0 THEN
6230              oe_debug_pub.add(  'BEFORE OE_DELAYED_REQUESTS_PVT.LOG_REQUEST CALL' ) ;
6231              oe_debug_pub.add(  'IN PROCESS_PRICING OEXULADB.PLS' ) ;
6232          END IF;
6233 
6234            oe_delayed_requests_pvt.log_request(
6235                        p_entity_code            => OE_GLOBALS.G_ENTITY_LINE,
6236                        p_entity_id              => p_x_new_line_rec.line_id,
6237                        p_requesting_entity_code => OE_GLOBALS.G_ENTITY_LINE,
6238 
6239                        p_requesting_entity_id   => p_x_new_line_rec.line_id,
6240                        p_request_type           => 'GET_COST',
6241                        x_return_status          => l_return_status);
6242         END IF;
6243      END IF;
6244 
6245 END IF;
6246 --MRG END
6247 
6248 l_pricing_related_changes  :=False;
6249 l_margin_related_changes   :=False;
6250 IF l_debug_level  > 0 THEN
6251     oe_debug_pub.add(  'LEAVING OE_LINE_ADJ_UTIL.PROCESS_PRICING' ) ;
6252 END IF;
6253 End Process_Pricing;
6254 
6255 Procedure Log_Pricing_Requests (p_x_new_line_rec in Out Nocopy Oe_Order_Pub.Line_Rec_Type,
6256                                 p_old_line_rec in Oe_Order_Pub.Line_Rec_Type,
6257                                 p_no_price_flag  Boolean  Default False,
6258                                 p_price_flag     Varchar2 Default 'Y') Is
6259 
6260  l_zero_line_qty     Boolean :=FALSE;
6261  l_price_control_rec QP_PREQ_GRP.control_record_type;
6262  l_x_line_tbl        Oe_Order_Pub.Line_Tbl_Type;
6263  l_return_status     Varchar2(5);
6264  i PLS_INTEGER;
6265  l_x_result_out      Varchar2(5);
6266  --
6267  l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
6268  --
6269  -- sol_ord_er #16014165
6270  l_cnt_hdr_log NUMBER := 0;
6271  l_cnt_lin_log NUMBER := 0;
6272 Begin
6273 
6274        IF p_price_flag = 'Y' and
6275 		not p_no_price_flag  and
6276 		nvl(oe_globals.g_pricing_recursion,'N') <> 'Y' and
6277 		p_x_new_line_rec.Ordered_Quantity <> fnd_api.g_miss_num and
6278 		p_x_new_line_rec.order_quantity_uom is not null and
6279 		p_x_new_line_rec.order_quantity_uom <> fnd_api.g_miss_char
6280 	THEN
6281                 --bsadri for cancelled lines l_zero_line_qty is true
6282 
6283                 IF nvl(p_x_new_line_rec.ordered_quantity,0) = 0 THEN
6284                     l_zero_line_qty := TRUE;
6285                 ELSE
6286                     l_zero_line_qty := FALSE;
6287                 END IF;
6288 		If
6289 		( (p_x_new_line_rec.unit_list_price is null or
6290 		  p_x_new_line_rec.Unit_List_Price = fnd_api.g_miss_num or
6291 		  NOT OE_GLOBALS.Equal(p_x_new_line_rec.ordered_quantity,p_old_line_rec.ordered_quantity) or
6292 		  NOT OE_GLOBALS.Equal(p_x_new_line_rec.cancelled_Quantity,p_old_line_rec.cancelled_Quantity) or
6293 		   NOT OE_GLOBALS.Equal(p_x_new_line_rec.order_quantity_uom,p_old_line_rec.order_quantity_uom) or
6294 		   NOT OE_GLOBALS.Equal(p_x_new_line_rec.inventory_item_id,p_old_line_rec.inventory_item_id) )  --fix bug 1388503 btea
6295                   and p_x_new_line_rec.item_type_code <> OE_GLOBALS.G_ITEM_SERVICE
6296 		   )
6297 	   then
6298 
6299 
6300                IF ((OE_GLOBALS.G_UI_FLAG) and (nvl(Oe_Config_Pvt.oecfg_configuration_pricing,'N')='N'))
6301                THEN
6302 
6303           	        l_Price_Control_Rec.pricing_event := 'PRICE';
6304 			l_Price_Control_Rec.calculate_flag := QP_PREQ_GRP.G_SEARCH_N_CALCULATE;
6305 			l_Price_Control_Rec.Simulation_Flag := 'N';
6306 
6307 			l_x_line_tbl(1) := p_x_new_line_rec;
6308                         IF NOT l_zero_line_qty THEN
6309                          --bsadri call the Price_line for non-cancelled lines
6310 			  oe_order_adj_pvt.Price_line(
6311 				X_Return_Status     => l_Return_Status
6312 				,p_Line_id          => p_x_new_line_rec.line_id
6313 				,p_Request_Type_code=> 'ONT'
6314 				,p_Control_rec      => l_Price_Control_Rec
6315 				,p_Write_To_Db		=> FALSE
6316 				,x_Line_Tbl		=> l_x_Line_Tbl
6317 				);
6318 
6319 			   -- Populate Line_rec
6320 			    i:= l_x_Line_Tbl.First;
6321 			    While i is not null loop
6322 				  p_x_new_line_rec := l_x_Line_Tbl(i);
6323 				  i:= l_x_Line_Tbl.Next(i);
6324 			    End Loop;
6325                          END IF;
6326 	   End If;
6327         End If;  --end if for UI Flag Check
6328 
6329 	   IF l_debug_level  > 0 THEN
6330 	       oe_debug_pub.add(  'LOGGING DELAYED REQUEST FOR PRICING' ) ;
6331 	   END IF;
6332 
6333         IF ((OE_GLOBALS.G_UI_FLAG) and (nvl(Oe_Config_Pvt.oecfg_configuration_pricing,'N')='N')) OR
6334             p_x_new_line_rec.item_type_code = 'INCLUDED' THEN
6335           IF l_debug_level  > 0 THEN
6336               oe_debug_pub.add(  'UI MODE OR CONFIG , INCLUDED ITEM'||P_X_NEW_LINE_REC.LINE_ID ) ;
6337           END IF;
6338           IF NOT l_zero_line_qty THEN
6339              --bsadri don't call this for a cancelled line
6340             OE_delayed_requests_Pvt.log_request(
6341 				p_entity_code 			=> OE_GLOBALS.G_ENTITY_LINE,
6342 				p_entity_id         	=> p_x_new_line_rec.line_id,
6343 				p_requesting_entity_code => OE_GLOBALS.G_ENTITY_LINE,
6344 				p_requesting_entity_id   => p_x_new_line_rec.line_id,
6345 				p_request_unique_key1  	=> 'LINE',
6346 		 		p_param1                 => p_x_new_line_rec.header_id,
6347                  		p_param2                 => 'LINE',
6348 		 		p_request_type           => OE_GLOBALS.G_PRICE_LINE,
6349 		 		x_return_status          => l_return_status);
6350 				l_cnt_lin_log := 1; -- sol_ord_er #16014165
6351 
6352          END IF;
6353          IF p_x_new_line_rec.item_type_code <> 'INCLUDED' THEN
6354            OE_delayed_requests_Pvt.log_request(
6355 				p_entity_code 			=> OE_GLOBALS.G_ENTITY_ALL,
6356 				p_entity_id         	=> p_x_new_line_rec.Header_Id,
6357 				p_requesting_entity_code => OE_GLOBALS.G_ENTITY_ALL,
6358 				p_requesting_entity_id   => p_x_new_line_rec.Header_Id,
6359 				p_request_unique_key1  	=> 'ORDER',
6360 		 		p_param1                 => p_x_new_line_rec.header_id,
6361                  		p_param2                 => 'ORDER',
6362 		 		p_request_type           => OE_GLOBALS.G_PRICE_ORDER,
6363 		 		x_return_status          => l_return_status);
6364 				l_cnt_hdr_log := 1; -- sol_ord_er #16014165
6365           END IF;
6366         ELSE
6367           IF l_debug_level  > 0 THEN
6368               oe_debug_pub.add(  'BATCH MODE' ) ;
6369           END IF;
6370 
6371           OE_delayed_requests_Pvt.log_request(
6372 				p_entity_code 			=> OE_GLOBALS.G_ENTITY_ALL,
6373 				p_entity_id         	=> p_x_new_line_rec.Header_Id,
6374 				p_requesting_entity_code => OE_GLOBALS.G_ENTITY_ALL,
6375 				p_requesting_entity_id   => p_x_new_line_rec.Header_Id,
6376 				p_request_unique_key1  	=> 'BATCH',
6377 		 		p_param1                 => p_x_new_line_rec.header_id,
6378                  		p_param2                 => 'BATCH',
6379 		 		p_request_type           => OE_GLOBALS.G_PRICE_ORDER,
6380 		 		x_return_status          => l_return_status);
6381 				l_cnt_hdr_log := 2; -- sol_ord_er #16014165
6382         END IF;
6383 
6384 	   If p_x_new_line_rec.booked_flag='Y' and p_x_new_line_rec.item_type_code <> 'INCLUDED' Then
6385            OE_delayed_requests_Pvt.log_request(
6386 				p_entity_code 		 => OE_GLOBALS.G_ENTITY_ALL,
6387 				p_entity_id         	 => p_x_new_line_rec.Header_Id,
6388 				p_requesting_entity_code => OE_GLOBALS.G_ENTITY_ALL,
6389 				p_requesting_entity_id   => p_x_new_line_rec.Header_Id,
6390 				p_request_unique_key1  	 => 'BOOK',
6391 		 		p_param1                 => p_x_new_line_rec.header_id,
6392                  		p_param2                 => 'BOOK',
6393 		 		p_request_type           => OE_GLOBALS.G_PRICE_ORDER,
6394 		 		x_return_status          => l_return_status);
6395 				l_cnt_hdr_log := 3; -- sol_ord_er #16014165
6396 	   End If;
6397 
6398      END IF;
6399 
6400 	/* rlanka: Fix for Bug 1729372
6401 
6402             For the new line that is created by Promotional modifier
6403             need to log a delayed request to PRICE_LINE again to apply
6404 	    freight charges.
6405 
6406          */
6407 
6408         IF l_debug_level  > 0 THEN
6409             oe_debug_pub.add(  'PRICE_FLAG = ' || P_PRICE_FLAG ) ;
6410             oe_debug_pub.add(  'G_PRICING_RECURSION = ' || OE_GLOBALS.G_PRICING_RECURSION ) ;
6411             oe_debug_pub.add(  'ORDERED QUANTITY = '|| TO_CHAR ( P_X_NEW_LINE_REC.ORDERED_QUANTITY ) ) ;
6412             oe_debug_pub.add(  'ORDERED QTY UOM = ' || P_X_NEW_LINE_REC.ORDER_QUANTITY_UOM ) ;
6413             oe_debug_pub.add(  'CALCULATE_PRICE_FLAG = '|| P_X_NEW_LINE_REC.CALCULATE_PRICE_FLAG ) ;
6414         END IF;
6415 
6416 
6417 	 if (p_price_flag = 'Y' and
6418             not p_no_price_flag and
6419             oe_globals.g_pricing_recursion = 'Y' and
6420             nvl(p_x_new_line_rec.ordered_quantity,0) <> 0 and
6421             p_x_new_line_rec.Ordered_Quantity <> fnd_api.g_miss_num and
6422             p_x_new_line_rec.order_quantity_uom is not null and
6423             p_x_new_line_rec.order_quantity_uom <> fnd_api.g_miss_char and
6424             p_x_new_line_rec.calculate_price_flag = 'R')
6425         then
6426 
6427            IF l_debug_level  > 0 THEN
6428                oe_debug_pub.add(  'NEW LINE CREATED BY PROMOTIONAL MODIFIER' ) ;
6429                 oe_debug_pub.add(  'RESETTING CALC. PRICE. FLAG TO P' ) ;
6430             END IF;
6431             p_x_new_line_rec.calculate_price_flag := 'P';
6432             IF l_debug_level  > 0 THEN
6433                 oe_debug_pub.add(  'LOGGING A REQUEST TO PRICE_LINE IN BATCH MODE' ) ;
6434             END IF;
6435             OE_delayed_requests_Pvt.log_request(
6436 				p_entity_code           =>OE_GLOBALS.G_ENTITY_ALL,
6437                                 p_entity_id             => p_x_new_line_rec.line_Id,
6438                                 p_requesting_entity_code => OE_GLOBALS.G_ENTITY_ALL,
6439                                 p_requesting_entity_id   => p_x_new_line_rec.line_Id,
6440                                 p_request_unique_key1   => 'BATCH',
6441                                 p_param1                 => p_x_new_line_rec.header_id,
6442                                 p_param2                 => 'BATCH',
6443                                 p_request_type           => OE_GLOBALS.G_PRICE_LINE,
6444                                 x_return_status          => l_return_status);
6445 				l_cnt_lin_log := 2; -- sol_ord_er #16014165
6446 
6447           if (p_x_new_line_rec.booked_flag = 'Y')
6448           then
6449              IF l_debug_level  > 0 THEN
6450                  oe_debug_pub.add(  'BOOKED ORDER -- LOG A REQUEST TO PRICE LINE' ) ;
6451              END IF;
6452              OE_delayed_requests_Pvt.log_request(
6453                                 p_entity_code           =>OE_GLOBALS.G_ENTITY_ALL,
6454                                 p_entity_id             => p_x_new_line_rec.line_Id,
6455                                 p_requesting_entity_code => OE_GLOBALS.G_ENTITY_ALL,
6456                                 p_requesting_entity_id   => p_x_new_line_rec.line_Id,
6457                                 p_request_unique_key1   => 'BOOK',
6458                                 p_param1                 => p_x_new_line_rec.header_id,
6459                                 p_param2                 => 'BOOK',
6460                                 p_request_type           => OE_GLOBALS.G_PRICE_LINE,
6461                                 x_return_status          => l_return_status);
6462 				l_cnt_lin_log := 3; -- sol_ord_er #16014165
6463           end if; -- if order is BOOKED
6464 
6465         end if; -- if new line created by Promotional modifier needs to be re-priced.
6466 
6467         -- end of fix for bug 1729372
6468 
6469 	If NOT OE_GLOBALS.Equal(p_x_new_line_rec.Shipped_Quantity,p_old_line_rec.Shipped_Quantity)
6470 	Then
6471            --btea
6472            IF p_x_new_line_rec.line_category_code <> 'RETURN' Then
6473               OE_Shipping_Integration_PVT.Check_Shipment_Line(
6474                  p_line_rec                => p_old_line_rec
6475               ,  p_shipped_quantity        => p_x_new_line_rec.Shipped_Quantity
6476               ,  x_result_out              => l_x_result_out
6477               );
6478 
6479               IF l_x_result_out = OE_GLOBALS.G_PARTIALLY_SHIPPED THEN
6480                -- This line will split, set the calculate_price_flag  to 'P' if 'Y'
6481                 IF (p_x_new_line_rec.calculate_price_flag = 'Y') THEN
6482                   p_x_new_line_rec.calculate_price_flag := 'P';
6483                 END IF;
6484 
6485 
6486               END IF;
6487 
6488            Elsif p_x_new_line_rec.operation = OE_GLOBALS.G_OPR_UPDATE
6489                  and p_x_new_line_rec.split_by = 'SYSTEM'
6490                  and p_x_new_line_rec.split_action_code = 'SPLIT'
6491                  and p_x_new_line_rec.calculate_price_flag = 'Y' Then
6492                  p_x_new_line_rec.calculate_price_flag :='P';
6493            End If;
6494 
6495            OE_delayed_requests_Pvt.log_request(
6496 				p_entity_code 		=> OE_GLOBALS.G_ENTITY_ALL,
6497 				p_entity_id         	=> p_x_new_line_rec.line_id,
6498 				p_requesting_entity_code => OE_GLOBALS.G_ENTITY_ALL,
6499 				p_requesting_entity_id   => p_x_new_line_rec.line_id,
6500 				p_request_unique_key1  	=> 'SHIP',
6501 		 		p_param1                 => p_x_new_line_rec.header_id,
6502                  		p_param2                 => 'SHIP',
6503 		 		p_request_type           => OE_GLOBALS.G_PRICE_LINE,
6504 		 		x_return_status          => l_return_status);
6505 	End If;
6506 	-- sol_ord_er #16014165
6507 	IF l_debug_level  > 0 THEN
6508                  oe_debug_pub.add(  'l_cnt_lin_log= '||l_cnt_lin_log
6509 				                    ||' l_cnt_hdr_log= '||l_cnt_hdr_log
6510 									||' Serv_Bill_Option Code='||p_x_new_line_rec.service_bill_option_code);
6511     END IF;
6512 	If l_cnt_lin_log >0 and p_x_new_line_rec.service_bill_option_code = 'FPOM' then
6513 		IF l_debug_level  > 0 THEN
6514 			oe_debug_pub.add('(1) Logging Line Level First Period Bill Amt Request, for line_id= '
6515 			                 ||p_x_new_line_rec.line_id ) ;
6516 		END IF;
6517 		oe_delayed_requests_pvt.log_request(
6518 							 p_entity_code            => OE_GLOBALS.G_ENTITY_LINE,
6519 							 p_entity_id              => p_x_new_line_rec.line_id,
6520 							 p_requesting_entity_code => OE_GLOBALS.G_ENTITY_LINE,
6521 							 p_requesting_entity_id   => p_x_new_line_rec.line_id,
6522 							 p_request_type           => OE_GLOBALS.G_SERVICE_FIRST_PERIOD_BILL,
6523 							 p_request_unique_key1 => 'LINE',
6524 							 p_param1                 => p_x_new_line_rec.line_id,
6525 							 x_return_status          => l_return_status);
6526 	End If;
6527 	If l_cnt_hdr_log >0 then
6528 	    IF l_debug_level  > 0 THEN
6529 			oe_debug_pub.add('(2) Logging Line Level First Period Bill Amt Request, for header_id= '
6530 			                 ||p_x_new_line_rec.header_id ) ;
6531 		END IF;
6532 	    oe_delayed_requests_pvt.log_request(
6533 								 p_entity_code            => OE_GLOBALS.G_ENTITY_ALL,
6534 								 p_entity_id              => p_x_new_line_rec.header_id,
6535 								 p_requesting_entity_code => OE_GLOBALS.G_ENTITY_ALL,
6536 								 p_requesting_entity_id   => p_x_new_line_rec.header_id,
6537 								 p_request_type           => OE_GLOBALS.G_SERVICE_FIRST_PERIOD_BILL,
6538 								 p_request_unique_key1 => 'ORDER',
6539 								 p_param1                 => p_x_new_line_rec.header_id,
6540 								 x_return_status          => l_return_status);
6541 	End If;
6542 	-- sol_ord_er #16014165 end
6543 
6544 End;
6545 
6546 
6547 /*---------------------------------------------------------------------*/
6548  --Will be called by delayed request to reset cache changed line tbl
6549 /*---------------------------------------------------------------------*/
6550 Procedure Delete_Changed_Lines_Tbl Is
6551 Begin
6552   G_CHANGED_LINE_TBL.delete;
6553   G_SEND_ALL_LINES_FOR_DSP := NULL;
6554   G_OPM_ITEM_CATCHWEIGHT_USED := NULL;
6555 End;
6556 
6557 
6558 /*----------------------------------------------------------------------*/
6559  --Process_Cancelled_Lines.  This is performance fix on cancel line
6560  --in which we either combine all events to call pricing engine once
6561  --or not calling at all depending on the output of QP_UTIL_PUB.Get_Order_Lines_Status
6562 /*----------------------------------------------------------------------*/
6563 
6564 Procedure Process_Cancelled_Lines(p_x_new_line_rec In Oe_Order_Pub.line_rec_type, p_ordered_quantity In Number) Is
6565 --bug7491829 added p_ordered_quantity
6566 
6567 l_order_status_rec QP_UTIL_PUB.ORDER_LINES_STATUS_REC_TYPE;
6568 l_return_status Varchar2(5);
6569 l_event_str Varchar2(25);
6570 --
6571 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
6572 --
6573 Begin
6574 
6575        --User trying to cancle line, different processing for cancelation due to performance
6576        --considerations
6577        IF l_debug_level  > 0 THEN
6578            oe_debug_pub.add(  ' ENTERING PROCESS_CANCELLED_LINES' ) ;
6579        END IF;
6580 
6581        ------------------------------------------------------
6582        --Special case, bypass regular pricing path
6583        --we log performant version of pricing delayed request
6584        ------------------------------------------------------
6585        OE_GLOBALS.G_PRICE_FLAG := 'N';
6586 
6587 
6588        -- bug 9728497 start
6589        -- modified below for p_x_new_line_rec.header_id and p_x_new_line_rec.line_id
6590        -- being passed on to call the overloaded function.
6591        -- QP_UTIL_PUB.Get_Order_Lines_Status('BATCH,BOOK',l_order_status_rec);
6592        QP_UTIL_PUB.Get_Order_Lines_Status(p_event_code => 'BATCH,BOOK',
6593                                         p_header_id => p_x_new_line_rec.header_id,
6594                                         p_line_id => p_x_new_line_rec.line_id,
6595                                         x_order_status_rec =>l_order_status_rec);
6596        -- bug 9728497 end
6597 
6598        ----------------------------------------------------------------------
6599        --User has totally cancelled a line, price changes pertaining to this
6600        --line has no effect since the quantity is 0.  Therefore, only pass
6601        --all the lines to pricing engine when all_lines_flag = 'Y'
6602        ----------------------------------------------------------------------
6603        IF l_debug_level  > 0 THEN
6604            oe_debug_pub.add(  ' ALL LINES FLAG RETURNED FROM QP_UTIL_PUB:'||L_ORDER_STATUS_REC.ALL_LINES_FLAG ) ;
6605            oe_debug_pub.add(  ' CHANGED LINES FLAG RETURNED FROM QP_UTIL_PUB:'||L_ORDER_STATUS_REC.CHANGED_LINES_FLAG ) ;
6606 	   oe_debug_pub.add(  ' SUMMARY LINE FLAG RETURNED FROM QP_UTIL_PUB:'||L_ORDER_STATUS_REC.SUMMARY_LINE_FLAG ) ;
6607        END IF;
6608 
6609 
6610 
6611        If p_x_new_line_rec.ordered_quantity = 0 Then
6612           IF l_debug_level  > 0 THEN
6613               oe_debug_pub.add(  ' USER HAS TOTALLY CANCELLED THE LINE' ) ;
6614           END IF;
6615 
6616           If p_x_new_line_rec.booked_flag = 'Y' Then
6617             l_event_str:= 'ORDER,BOOK';
6618           Else
6619             l_event_str:='ORDER';
6620           End If;
6621 
6622 	  --FP bug 3335024 included summary line flag condition below
6623           If l_order_status_rec.ALL_LINES_FLAG = 'Y'  or l_order_status_rec.summary_line_flag = 'Y' Then
6624              IF p_x_new_line_rec.item_type_code not in ('INCLUDED','CONFIG') THEN
6625                OE_delayed_requests_Pvt.log_request(
6626 				p_entity_code 		=> OE_GLOBALS.G_ENTITY_ALL,
6627 				p_entity_id         	=> p_x_new_line_rec.Header_Id,
6628 				p_requesting_entity_code => OE_GLOBALS.G_ENTITY_ALL,
6629 				p_requesting_entity_id   => p_x_new_line_rec.Header_Id,
6630 				p_request_unique_key1  	=> 'ORDER,BOOK',
6631 		 		p_param1                 => p_x_new_line_rec.header_id,
6632                  		p_param2                 => l_event_str,
6633 		 		p_request_type           => OE_GLOBALS.G_PRICE_ORDER,
6634 		 		x_return_status          => l_return_status);
6635 
6636             End If;
6637           End If;
6638           /* BUG 2013611 BEGIN */
6639 	  IF l_debug_level  > 0 THEN
6640 	      oe_debug_pub.add(  'LOG REVERSE_LIMITS DELAYED REQUEST FROM PROCESS_CANCELLED_LINES ' , 1 ) ;
6641 	  END IF;
6642           OE_delayed_requests_Pvt.log_request(
6643 	                        p_entity_code 		 => OE_GLOBALS.G_ENTITY_LINE,
6644 				p_entity_id              => p_x_new_line_rec.line_id,
6645 				p_requesting_entity_code => OE_GLOBALS.G_ENTITY_LINE,
6646 				p_requesting_entity_id   => p_x_new_line_rec.line_id,
6647 				p_request_unique_key1  	 => 'LINE',
6648 		 		p_param1                 => 'CANCEL',
6649 		 		p_param2                 => p_x_new_line_rec.price_request_code,
6650 		 		p_param3                 => NULL,
6651 		 		p_param4                 => NULL,
6652 		 		p_param5                 => NULL,
6653 		 		p_param6                 => NULL,
6654 		 		p_request_type           => OE_GLOBALS.G_REVERSE_LIMITS,
6655 		 		x_return_status          => l_return_status);
6656 	  IF l_debug_level  > 0 THEN
6657 	      oe_debug_pub.add(  'REVERSE_LIMITS DELAYED REQUEST HAS BEEN LOGGED' , 1 ) ;
6658 	  END IF;
6659           /* BUG 2013611 END */
6660        Else        --User partially cancel the line
6661           IF l_debug_level  > 0 THEN
6662               oe_debug_pub.add(  ' USER HAS PARTIALLY CANCELLED THE LINE' ) ;
6663           END IF;
6664 
6665 
6666           If p_x_new_line_rec.booked_flag = 'Y' Then
6667             -- l_event_str:= 'LINE,ORDER,BOOK';
6668             -- changed 'LINE,ORDER' to 'BATCH'.
6669             l_event_str:= 'BATCH,BOOK';
6670           Else
6671             -- l_event_str:='LINE,ORDER';
6672             l_event_str:='BATCH';
6673           End If;
6674 
6675           If l_order_status_rec.ALL_LINES_FLAG = 'Y' or
6676              l_order_status_rec.Changed_Lines_Flag = 'Y'
6677           Then
6678              --treat changed_lines as all_lines for now, will to
6679              --differential this 2 type in the future
6680             IF p_x_new_line_rec.item_type_code not in ('INCLUDED','CONFIG') THEN
6681                OE_delayed_requests_Pvt.log_request(
6682 				p_entity_code 		 => OE_GLOBALS.G_ENTITY_ALL,
6683 				p_entity_id         	 => p_x_new_line_rec.Header_Id,
6684 				p_requesting_entity_code => OE_GLOBALS.G_ENTITY_ALL,
6685 				p_requesting_entity_id   => p_x_new_line_rec.Header_Id,
6686 				p_request_unique_key1  	 => 'BATCH,BOOK',
6687 		 		p_param1                 => p_x_new_line_rec.header_id,
6688                  		p_param2                 => l_event_str,
6689 		 		p_request_type           => OE_GLOBALS.G_PRICE_ORDER,
6690 		 		x_return_status          => l_return_status);
6691 
6692              End If; --not in ('INCLUDED','CONFIG')
6693           End If; --ALL_LINES or Change_lines flag
6694 
6695          --bug7491829
6696 
6697           IF l_debug_level  > 0 THEN
6698               oe_debug_pub.add(  'LOG REVERSE_LIMITS DELAYED REQUEST FROM
6699               PROCESS_CANCELLED_LINES FOR PARTIAL CANCEL CASE' , 1 ) ;
6700           END IF;
6701 
6702           OE_delayed_requests_Pvt.log_request(
6703                               p_entity_code            => OE_GLOBALS.G_ENTITY_LINE,
6704                               p_entity_id              => p_x_new_line_rec.line_id,
6705                               p_requesting_entity_code => OE_GLOBALS.G_ENTITY_LINE,
6706                               p_requesting_entity_id   => p_x_new_line_rec.line_id,
6707                               p_request_unique_key1    => 'LINE',
6708                               p_param1                 => 'AMEND',
6709                               p_param2                 => p_x_new_line_rec.price_request_code,
6710                               p_param3                 => p_ordered_quantity,
6711                               p_param4                 => p_x_new_line_rec.ordered_quantity,
6712                               p_param5                 => NULL,
6713                               p_param6                 => NULL,
6714                               p_request_type           =>OE_GLOBALS.G_REVERSE_LIMITS,
6715                               x_return_status          => l_return_status);
6716 
6717           IF l_debug_level  > 0 THEN
6718               oe_debug_pub.add(  'REVERSE_LIMITS DELAYED REQUEST HAS BEEN LOGGED' , 1 ) ;
6719           END IF;
6720 
6721        --bug7491829
6722 
6723        End If;
6724 
6725  IF l_debug_level  > 0 THEN
6726      oe_debug_pub.add(  ' LEAVING PROCESS_CANCELLED_LINES' ) ;
6727  END IF;
6728 End;
6729 
6730 /*----------------------------------------------------------------------------*/
6731   --Register Changed lines in cache for performance
6732 /*----------------------------------------------------------------------------*/
6733 Procedure Register_Changed_Lines(p_line_id   in Number,
6734                                  p_header_id in Number,
6735                                  p_operation in Varchar2) Is
6736 l_return_status Varchar2(15);
6737 --
6738 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
6739 --
6740 Begin
6741   IF l_debug_level  > 0 THEN
6742       oe_debug_pub.add(  ' ENTERING OE_LINE_ADJ_UTIL.REGISTER_CHANGED_LINES' ) ;
6743       oe_debug_pub.add(  ' P_LINE_ID:'||P_LINE_ID||'+P_HEADER_ID:'||P_HEADER_ID ) ;
6744   END IF;
6745 
6746   -----------------------------------------------------------------------------------
6747   --For performance reason, we only need to log delay request to reset the cache once
6748   --per saving.
6749   --When G_CHANGED_LINE_TBL has records, we know that the delayed request for reseting
6750   --the cahce has been logged; therefore, I need not log it.
6751   ------------------------------------------------------------------------------------
6752   -- If G_CHANGED_LINE_TBL.Count = 0 Then -- Commented out for bug 12673852
6753     IF l_debug_level  > 0 THEN
6754         oe_debug_pub.add(  ' LOGGING DELAYED REQUEST TO RESET G_CHANGED_LINE_TBL' ) ;
6755     END IF;
6756     oe_delayed_requests_pvt.log_request(
6757 		p_entity_code            => OE_GLOBALS.G_ENTITY_ALL,
6758 		p_entity_id      	 => p_header_id,
6759 		p_requesting_entity_code => OE_GLOBALS.G_ENTITY_ALL,
6760 		p_requesting_entity_id   => p_header_id,
6761 		p_request_type   	 => OE_GLOBALS.G_DEL_CHG_LINES,
6762 		x_return_status  	 => l_return_status);
6763     IF l_debug_level  > 0 THEN
6764         oe_debug_pub.add(  ' RETURN STATUS FROM THE DELAYED REQUEST:'||L_RETURN_STATUS ) ;
6765     END IF;
6766   -- End If; -- Commented out for bug 12673852
6767 
6768   If p_operation In (OE_GLOBALS.G_OPR_CREATE,OE_GLOBALS.G_OPR_UPDATE) Then
6769       --bug 3020702 begin
6770       G_CHANGED_LINE_TBL(mod(p_line_id,G_BINARY_LIMIT)).line_id :=p_line_id;
6771       G_CHANGED_LINE_TBL(mod(p_line_id,G_BINARY_LIMIT)).header_id :=p_header_id;
6772       --bug 3020702 end
6773   Elsif p_operation = OE_GLOBALS.G_OPR_DELETE Then
6774     If G_CHANGED_LINE_TBL.exists(mod(p_line_id,G_BINARY_LIMIT)) Then
6775        G_CHANGED_LINE_TBL.delete(mod(p_line_id,G_BINARY_LIMIT));
6776     End If;
6777   End If;
6778 
6779   IF l_debug_level  > 0 THEN
6780       oe_debug_pub.add(  ' LEAVING OE_LINE_ADJ_UTIL.REGISTER_CHANGED_LINES' ) ;
6781   END IF;
6782 End;
6783 
6784 Procedure Get_Service_Lines(p_header_id   IN NUMBER,
6785                             x_line_id_tbl OUT NOCOPY OE_ORDER_ADJ_PVT.Index_TBL_TYPE) IS
6786 Cursor get_service_cur IS
6787 Select line_id,
6788        service_reference_line_id
6789 From   oe_order_lines_all
6790 Where  header_id = p_header_id
6791 And    service_reference_line_id IS NOT NULL;
6792 
6793 Begin
6794   For J in get_service_cur Loop
6795      x_line_id_tbl(MOD(J.service_reference_line_id,G_BINARY_LIMIT)):=J.line_id;                      -- Bug 8631297
6796   End Loop;
6797 End;
6798 
6799 /* Added the following procedure to fix the bug 2917690 */
6800 
6801 Procedure Change_adj_for_uom_change(p_x_line_rec    IN OUT NOCOPY  OE_Order_PUB.Line_Rec_Type
6802                                      ) Is
6803 l_return_status Varchar2(15);
6804 l_old_pricing_qty               NUMBER;
6805 l_new_pricing_qty               NUMBER;
6806 
6807 Begin
6808   Oe_Debug_Pub.add(' Entering OE_LINE_ADJ_UTIL.Change_adj_for_uom_change');
6809 
6810   IF  p_x_line_rec.Pricing_quantity is not null and
6811       p_x_line_rec.Pricing_quantity <> FND_API.G_MISS_NUM and
6812       p_x_line_rec.Pricing_quantity <> 0 THEN
6813 
6814          l_old_pricing_qty := p_x_line_rec.Pricing_quantity ;
6815          l_new_pricing_qty :=
6816                               OE_Order_Misc_Util.convert_uom(
6817                                         p_x_line_rec.inventory_item_id,
6818                                         p_x_line_rec.order_quantity_uom,
6819                                         p_x_line_rec.pricing_quantity_uom,
6820                                         p_x_line_rec.ordered_quantity
6821                                                 );
6822 
6823          -- Code changes for bug 9014929
6824          Oe_Debug_Pub.add('   l_old_pricing_qty = ' || l_old_pricing_qty);
6825          Oe_Debug_Pub.add('   l_new_pricing_qty = ' || l_new_pricing_qty);
6826          p_x_line_rec.Pricing_quantity := l_new_pricing_qty;
6827          Oe_Debug_Pub.add('   p_x_line_rec.Pricing_quantity = ' || p_x_line_rec.Pricing_quantity);
6828          -- End of code changes for bug 9014929
6829 
6830          update oe_price_adjustments
6831          set adjusted_amount = adjusted_amount * l_new_pricing_qty / l_old_pricing_qty
6832          where line_id = p_x_Line_rec.line_id
6833          and list_line_type_code in ('DIS','SUR')
6834          and applied_flag = 'Y'
6835          and   updated_flag = 'Y'
6836          and   arithmetic_operator in ('AMT' , '%' , 'NEWPRICE');
6837 
6838          update oe_price_adjustments
6839          set operand   = operand * l_new_pricing_qty / l_old_pricing_qty
6840          where line_id = p_x_Line_rec.line_id
6841          and list_line_type_code in ('DIS','SUR')
6842          and applied_flag = 'Y'
6843          and   updated_flag = 'Y'
6844          and   arithmetic_operator in ('AMT' , 'NEWPRICE');
6845   END IF;
6846 
6847   Oe_Debug_Pub.add(' Leaving OE_LINE_ADJ_UTIL.Change_adj_for_uom_change');
6848 End;
6849 
6850 /* End of the procedure added to fix the bug 2917690 */
6851 
6852 Function has_service_lines(p_header_id IN NUMBER) Return Boolean
6853 IS
6854 l_dummy NUMBER;
6855 Begin
6856   Select line_id
6857   INTO   l_dummy
6858   From   OE_ORDER_LINES_ALL
6859   Where  header_id = p_header_id
6860   AND    service_reference_line_id IS NOT NULL
6861   AND    rownum = 1;
6862 
6863   RETURN True;
6864 Exception
6865   When NO_DATA_FOUND Then
6866     Return False;
6867 End;
6868 
6869 Procedure Set_PRG_Cache(p_header_id IN NUMBER) AS
6870    Cursor prg_cur is
6871    select adj1.line_id line_id
6872    from oe_price_adjustments adj1,
6873         oe_price_adj_assocs  assoc,
6874         oe_price_adjustments adj2
6875    where adj1.price_adjustment_id = assoc.rltd_price_adj_id AND
6876          assoc.price_adjustment_id = adj2.price_adjustment_id AND
6877          adj2.list_line_type_code = 'PRG' AND
6878          adj2.header_id = p_header_id;
6879   Begin
6880      /*open prg_cur;
6881      fetch prg_cur BULK COLLECT INTO G_PRG_TBL;
6882      close prg_cur;*/
6883 
6884      FOR prg IN prg_cur LOOP
6885        G_PRG_TBL(MOD(prg.line_id,G_BINARY_LIMIT)):= prg.line_id;
6886      END LOOP;
6887   End;
6888 
6889 Procedure Reset_PRG_Cache As
6890    Begin
6891       G_PRG_TBL.DELETE;
6892    End;
6893 
6894 Function IS_PRG_LINE(p_line_id IN NUMBER) RETURN BOOLEAN AS
6895    Begin
6896       IF G_PRG_TBL.EXISTS(MOD(p_line_id,G_BINARY_LIMIT)) THEN
6897 	 Return TRUE;
6898       ELSE
6899 	 Return FALSE;
6900       END IF;
6901    End;
6902 
6903 END OE_Line_Adj_Util;