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.9.12010000.5 2009/01/07 10:19:07 aambasth 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 --
1271 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1272 --
1273 BEGIN
1274 
1275     --  Load out record
1276 
1277     --x_Line_Adj_rec := p_Line_Adj_rec;
1278 IF l_debug_level  > 0 THEN
1279     oe_debug_pub.add(  'ENTERING OE_LINE_ADJ_UTIL.APPLY ATTRIBUTE CHANGES' ) ;
1280 END IF;
1281     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.adjusted_amount,p_old_Line_Adj_rec.adjusted_amount)
1282     THEN
1283         NULL;
1284     END IF;
1285 
1286     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.adjusted_amount_per_pqty,p_old_Line_Adj_rec.adjusted_amount_per_pqty)
1287     THEN
1288         NULL;
1289     END IF;
1290 
1291     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.pricing_phase_id,p_old_Line_Adj_rec.pricing_phase_id)
1292     THEN
1293 	 		l_price_flag := TRUE;
1294     END IF;
1295 
1296     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.price_adjustment_id,p_old_Line_Adj_rec.price_adjustment_id)
1297     THEN
1298         NULL;
1299     END IF;
1300 
1301     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.creation_date,p_old_Line_Adj_rec.creation_date)
1302     THEN
1303         NULL;
1304     END IF;
1305 
1306     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.created_by,p_old_Line_Adj_rec.created_by)
1307     THEN
1308         NULL;
1309     END IF;
1310 
1311     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.last_update_date,p_old_Line_Adj_rec.last_update_date)
1312     THEN
1313         NULL;
1314     END IF;
1315 
1316     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.last_updated_by,p_old_Line_Adj_rec.last_updated_by)
1317     THEN
1318         NULL;
1319     END IF;
1320 
1321     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.last_update_login,p_old_Line_Adj_rec.last_update_login)
1322     THEN
1323         NULL;
1324     END IF;
1325 
1326     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.program_application_id,p_old_Line_Adj_rec.program_application_id)
1327     THEN
1328         NULL;
1329     END IF;
1330 
1331     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.program_id,p_old_Line_Adj_rec.program_id)
1332     THEN
1333         NULL;
1334     END IF;
1335 
1336     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.program_update_date,p_old_Line_Adj_rec.program_update_date)
1337     THEN
1338         NULL;
1339     END IF;
1340 
1341     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.request_id,p_old_Line_Adj_rec.request_id)
1342     THEN
1343         NULL;
1344     END IF;
1345 
1346     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.header_id,p_old_Line_Adj_rec.header_id)
1347     THEN
1348         NULL;
1349     END IF;
1350 
1351 
1352     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.discount_id,
1353 			    p_old_Line_Adj_rec.discount_id)
1354     THEN
1355 		Null;
1356     END IF;
1357 
1358     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.discount_line_id,
1359 			    p_old_Line_Adj_rec.discount_line_id)
1360     THEN
1361 		null;
1362     END IF;
1363 
1364     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.automatic_flag,p_old_Line_Adj_rec.automatic_flag)
1365     THEN
1366         NULL;
1367     END IF;
1368 
1369     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.percent,p_old_Line_Adj_rec.percent)
1370     THEN
1371         NULL;
1372     END IF;
1373 
1374     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.line_id,p_old_Line_Adj_rec.line_id)
1375     THEN
1376         NULL;
1377     END IF;
1378 
1379     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.context,p_old_Line_Adj_rec.context)
1380     THEN
1381         NULL;
1382     END IF;
1383 
1384     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.attribute1,p_old_Line_Adj_rec.attribute1)
1385     THEN
1386         NULL;
1387     END IF;
1388 
1389     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.attribute2,p_old_Line_Adj_rec.attribute2)
1390     THEN
1391         NULL;
1392     END IF;
1393 
1394     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.attribute3,p_old_Line_Adj_rec.attribute3)
1395     THEN
1396         NULL;
1397     END IF;
1398 
1399     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.attribute4,p_old_Line_Adj_rec.attribute4)
1400     THEN
1401         NULL;
1402     END IF;
1403 
1404     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.attribute5,p_old_Line_Adj_rec.attribute5)
1405     THEN
1406         NULL;
1407     END IF;
1408 
1409     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.attribute6,p_old_Line_Adj_rec.attribute6)
1410     THEN
1411         NULL;
1412     END IF;
1413 
1414     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.attribute7,p_old_Line_Adj_rec.attribute7)
1415     THEN
1416         NULL;
1417     END IF;
1418 
1419     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.attribute8,p_old_Line_Adj_rec.attribute8)
1420     THEN
1421         NULL;
1422     END IF;
1423 
1424     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.attribute9,p_old_Line_Adj_rec.attribute9)
1425     THEN
1426         NULL;
1427     END IF;
1428 
1429     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.attribute10,p_old_Line_Adj_rec.attribute10)
1430     THEN
1431         NULL;
1432     END IF;
1433 
1434     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.attribute11,p_old_Line_Adj_rec.attribute11)
1435     THEN
1436         NULL;
1437     END IF;
1438 
1439     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.attribute12,p_old_Line_Adj_rec.attribute12)
1440     THEN
1441         NULL;
1442     END IF;
1443 
1444     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.attribute13,p_old_Line_Adj_rec.attribute13)
1445     THEN
1446         NULL;
1447     END IF;
1448 
1449     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.attribute14,p_old_Line_Adj_rec.attribute14)
1450     THEN
1451         NULL;
1452     END IF;
1453 
1454     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.attribute15,p_old_Line_Adj_rec.attribute15)
1455     THEN
1456         NULL;
1457     END IF;
1458 
1459 	IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.list_header_id,
1460 				  p_old_Line_Adj_rec.list_header_id)
1461      THEN
1462 	  NULL;
1463 	END IF;
1464 
1465 	IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.list_line_id,
1466 			p_old_Line_Adj_rec.list_line_id)
1467      THEN
1468 	  NULL;
1469      END IF;
1470 
1471     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.list_line_type_code,
1472     p_old_Line_Adj_rec.list_line_type_code)
1473 	   THEN
1474 		 NULL;
1475 	END IF;
1476 
1477     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.modifier_mechanism_type_code,
1478     p_old_Line_Adj_rec.modifier_mechanism_type_code)
1479      THEN
1480 		 NULL;
1481 	END IF;
1482 
1483     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.update_allowed,
1484 		p_old_Line_Adj_rec.update_allowed)
1485     THEN
1486 		 NULL;
1487 	END IF;
1488 
1489     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.updated_flag,
1490 		p_old_Line_Adj_rec.updated_flag)
1491 	 THEN
1492 	 	l_price_flag := TRUE;
1493 	  IF p_x_line_Adj_rec.ESTIMATED_FLAG = 'Y' AND
1494 		p_x_line_Adj_rec.updated_flag = 'Y'
1495 	  THEN
1496 		 p_x_line_adj_rec.estimated_flag := 'N';
1497 	  END IF;
1498 	  IF p_x_line_Adj_rec.ESTIMATED_FLAG = 'N' AND
1499 		p_x_line_Adj_rec.updated_flag = 'N'
1500 	  THEN
1501 		 p_x_line_adj_rec.estimated_flag := 'Y';
1502 	  END IF;
1503 	END IF;
1504 
1505     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.applied_flag,
1506 		p_old_Line_Adj_rec.applied_flag)
1507     THEN
1508 	 	l_price_flag := TRUE;
1509                 --added by ksurendr
1510 		--bug 4060297
1511 		--Delayed request to compute margin
1512                 oe_header_Adj_util.log_request_for_margin(p_x_Line_Adj_rec.header_id);
1513     END IF;
1514 
1515     -- added by lkxu: populate the change reason when manual adjustment
1516     -- is applied by user.
1517     IF p_x_Line_Adj_rec.applied_flag = 'Y'
1518 	  AND p_x_Line_Adj_rec.automatic_flag = 'N'
1519 	  AND p_x_Line_Adj_rec.change_reason_code IS NULL THEN
1520          BEGIN
1521 	    SELECT lookup_code, meaning
1522 	    INTO   p_x_Line_Adj_rec.change_reason_code,
1523 		      p_x_Line_Adj_rec.change_reason_text
1524 	    FROM   oe_lookups
1525 	    WHERE  lookup_type = 'CHANGE_CODE'
1526 	    AND    lookup_code = 'MANUAL';
1527 
1528 	    EXCEPTION WHEN NO_DATA_FOUND THEN
1529 		 null;
1530          END;
1531     END IF;
1532 
1533    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.modified_from,
1534    p_old_Line_Adj_rec.modified_from)
1535    THEN
1536 	 NULL;
1537    END IF;
1538 
1539    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.modified_to,
1540 		p_old_Line_Adj_rec.modified_to)
1541    THEN
1542 	 NULL;
1543    END IF;
1544 
1545 
1546     IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.change_reason_code,
1547 		p_old_Line_Adj_rec.change_reason_code)
1548 	THEN
1549 	   NULL;
1550 	END IF;
1551 
1552    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.change_reason_text,
1553 		p_old_Line_Adj_rec.change_reason_text)
1554      THEN
1555 	 NULL;
1556 	END IF;
1557 
1558    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.operand,
1559 		p_old_Line_Adj_rec.operand)
1560      THEN
1561 	 	l_price_flag := TRUE;
1562                 l_calculate_commitment_flag := 'Y';
1563 
1564                 --bug 4060297
1565                 oe_header_Adj_util.log_request_for_margin(p_x_Line_Adj_rec.header_id);
1566 
1567         -- fixed bug 3271297, to log Verify Payment delayed request
1568         -- when freight charge changes.
1569         IF p_x_Line_Adj_rec.list_line_type_code='FREIGHT_CHARGE' THEN
1570                 l_verify_payment_flag := 'Y';
1571         END IF;
1572    END IF;
1573 
1574    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.operand_per_pqty,
1575 		p_old_Line_Adj_rec.operand_per_pqty)
1576      THEN
1577 	 	l_price_flag := TRUE;
1578 	END IF;
1579 
1580    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.arithmetic_operator,
1581 		p_old_Line_Adj_rec.arithmetic_operator)
1582      THEN
1583 	 	l_price_flag := TRUE;
1584    END IF;
1585 
1586    IF NOT OE_GLOBALS.Equal(p_x_line_Adj_rec.COST_ID, p_old_Line_Adj_rec.COST_ID)
1587    THEN
1588 	  NULL;
1589    END IF;
1590 
1591    IF NOT OE_GLOBALS.Equal(p_x_line_Adj_rec.TAX_CODE, p_old_Line_Adj_rec.TAX_CODE)
1592    THEN
1593 	  NULL;
1594    END IF;
1595 
1596    IF NOT OE_GLOBALS.Equal(p_x_line_Adj_rec.TAX_EXEMPT_FLAG, p_old_Line_Adj_rec.TAX_EXEMPT_FLAG)
1597    THEN
1598 	  NULL;
1599    END IF;
1600 
1601    IF NOT OE_GLOBALS.Equal(p_x_line_Adj_rec.TAX_EXEMPT_NUMBER, p_old_Line_Adj_rec.TAX_EXEMPT_NUMBER)
1602    THEN
1603 	  NULL;
1604    END IF;
1605 
1606    IF NOT OE_GLOBALS.Equal(p_x_line_Adj_rec.TAX_EXEMPT_REASON_CODE, p_old_Line_Adj_rec.TAX_EXEMPT_REASON_CODE)
1607    THEN
1608 	  NULL;
1609    END IF;
1610 
1611    IF NOT OE_GLOBALS.Equal(p_x_line_Adj_rec.PARENT_ADJUSTMENT_ID, p_old_Line_Adj_rec.PARENT_ADJUSTMENT_ID)
1612    THEN
1613 	  NULL;
1614    END IF;
1615 
1616    IF NOT OE_GLOBALS.Equal(p_x_line_Adj_rec.INVOICED_FLAG, p_old_Line_Adj_rec.INVOICED_FLAG)
1617    THEN
1618 	  NULL;
1619    END IF;
1620 
1621    IF NOT OE_GLOBALS.Equal(p_x_line_Adj_rec.ESTIMATED_FLAG, p_old_Line_Adj_rec.ESTIMATED_FLAG)
1622    THEN
1623 	  NULL;
1624    END IF;
1625 
1626    IF NOT OE_GLOBALS.Equal(p_x_line_Adj_rec.INC_IN_SALES_PERFORMANCE, p_old_Line_Adj_rec.INC_IN_SALES_PERFORMANCE)
1627    THEN
1628 	  NULL;
1629    END IF;
1630 
1631    IF NOT OE_GLOBALS.Equal(p_x_line_Adj_rec.SPLIT_ACTION_CODE, p_old_Line_Adj_rec.SPLIT_ACTION_CODE)
1632    THEN
1633 	  NULL;
1634    END IF;
1635 
1636    IF NOT OE_GLOBALS.Equal(p_x_line_Adj_rec.CHARGE_TYPE_CODE, p_old_Line_Adj_rec.CHARGE_TYPE_CODE)
1637    THEN
1638 	  NULL;
1639    END IF;
1640 
1641    IF NOT OE_GLOBALS.Equal(p_x_line_Adj_rec.CHARGE_SUBTYPE_CODE, p_old_Line_Adj_rec.CHARGE_SUBTYPE_CODE)
1642    THEN
1643 	  NULL;
1644    END IF;
1645 
1646    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.list_line_no, p_old_Line_Adj_rec.list_line_no)
1647    THEN
1648           NULL;
1649    END IF;
1650 
1651    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.source_system_code, p_old_Line_Adj_rec.source_system_code)
1652    THEN
1653           NULL;
1654    END IF;
1655 
1656    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.benefit_qty, p_old_Line_Adj_rec.benefit_qty)
1657    THEN
1658           NULL;
1659    END IF;
1660 
1661    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.benefit_uom_code, p_old_Line_Adj_rec.benefit_uom_code)
1662    THEN
1663           NULL;
1664    END IF;
1665 
1666    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.print_on_invoice_flag, p_old_Line_Adj_rec.print_on_invoice_flag)
1667    THEN
1668           NULL;
1669    END IF;
1670 
1671    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.expiration_date, p_old_Line_Adj_rec.expiration_date)
1672    THEN
1673           NULL;
1674    END IF;
1675 
1676    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.rebate_transaction_type_code, p_old_Line_Adj_rec.rebate_transaction_type_code)
1677    THEN
1678           NULL;
1679    END IF;
1680 
1681    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.rebate_transaction_reference, p_old_Line_Adj_rec.rebate_transaction_reference)
1682    THEN
1683           NULL;
1684    END IF;
1685 
1686    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.rebate_payment_system_code, p_old_Line_Adj_rec.rebate_payment_system_code)
1687    THEN
1688           NULL;
1689    END IF;
1690 
1691    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.redeemed_date, p_old_Line_Adj_rec.redeemed_date)
1692    THEN
1693           NULL;
1694    END IF;
1695 
1696    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.redeemed_flag, p_old_Line_Adj_rec.redeemed_flag)
1697    THEN
1698           NULL;
1699    END IF;
1700 
1701    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.accrual_flag, p_old_Line_Adj_rec.accrual_flag)
1702    THEN
1703           NULL;
1704    END IF;
1705 
1706    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.range_break_quantity, p_old_Line_Adj_rec.range_break_quantity)
1707    THEN
1708           NULL;
1709    END IF;
1710 
1711    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.accrual_conversion_rate, p_old_Line_Adj_rec.accrual_conversion_rate)
1712    THEN
1713           NULL;
1714    END IF;
1715 
1716    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.pricing_group_sequence, p_old_Line_Adj_rec.pricing_group_sequence)
1717    THEN
1718 	 		l_price_flag := TRUE;
1719    END IF;
1720 
1721    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.modifier_level_code, p_old_Line_Adj_rec.modifier_level_code)
1722    THEN
1723           NULL;
1724    END IF;
1725 
1726    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.price_break_type_code, p_old_Line_Adj_rec.price_break_type_code)
1727    THEN
1728           NULL;
1729    END IF;
1730 
1731    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.substitution_attribute, p_old_Line_Adj_rec.substitution_attribute)
1732    THEN
1733           NULL;
1734    END IF;
1735 
1736    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.proration_type_code, p_old_Line_Adj_rec.proration_type_code)
1737    THEN
1738           NULL;
1739    END IF;
1740 
1741    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.credit_or_charge_flag, p_old_Line_Adj_rec.credit_or_charge_flag)
1742    THEN
1743           NULL;
1744    END IF;
1745 
1746    IF NOT OE_GLOBALS.Equal(p_x_Line_Adj_rec.include_on_returns_flag, p_old_Line_Adj_rec.include_on_returns_flag)
1747    THEN
1748           NULL;
1749    END IF;
1750 
1751    IF NOT OE_GLOBALS.Equal(p_x_line_Adj_rec.INVOICED_AMOUNT, p_old_Line_Adj_rec.INVOICED_AMOUNT)
1752    THEN
1753 	  NULL;
1754    END IF;
1755 
1756        IF l_debug_level  > 0 THEN
1757            oe_debug_pub.add(  'RECURSION_MODE'||OE_GLOBALS.G_RECURSION_MODE||' PRICING:'||OE_GLOBALS.G_PRICING_RECURSION , 1 ) ;
1758            oe_debug_pub.add(  'HEADER_ID'||P_X_LINE_ADJ_REC.HEADER_ID , 1 ) ;
1759            oe_debug_pub.add(  'LINE_ID'||P_X_LINE_ADJ_REC.LINE_ID , 1 ) ;
1760        END IF;
1761        if (l_price_flag) then
1762          IF l_debug_level  > 0 THEN
1763              oe_debug_pub.add(  'PRICE FLAG:Y' , 1 ) ;
1764          END IF;
1765        else
1766          IF l_debug_level  > 0 THEN
1767              oe_debug_pub.add(  'PRICE FLAG:N' , 1 ) ;
1768          END IF;
1769        end if;
1770 
1771         -- bug 2378843: don't log request when g_pricing_recursion is set
1772     	IF l_price_flag and OE_Globals.G_RECURSION_MODE <> 'Y' AND
1773                              OE_GLOBALS.G_PRICING_RECURSION <> 'Y' AND
1774 	   p_x_line_adj_rec.list_line_type_code NOT IN ('TAX','COST')
1775 	Then
1776 
1777         IF (p_x_Line_adj_rec.line_id IS NOT NULL) THEN
1778 
1779 	 /* 1905650
1780 	    G_PRICE_ADJ request should be logged against LINE entity,
1781 	    not against LINE_ADJ entity
1782 	 */
1783          If OE_GLOBALS.G_UI_FLAG and nvl(p_x_Line_adj_rec.automatic_flag,'Y') = 'N' Then
1784             --we need to log different delayed request for manual adjustments.
1785             IF l_debug_level  > 0 THEN
1786                 oe_debug_pub.add(  ' UI FLAG IS TRUE , LOGGING UI DELAYED REQUEST FOR ADJ' ) ;
1787             END IF;
1788             oe_delayed_requests_pvt.log_request(
1789 	    p_entity_code                => OE_GLOBALS.G_ENTITY_LINE,
1790 	    p_entity_id                     => p_x_Line_adj_rec.Line_id,
1791 	    p_requesting_entity_code => OE_GLOBALS.G_ENTITY_LINE_ADJ,
1792 	    p_requesting_entity_id   => p_x_Line_adj_rec.Line_id,
1793 	    p_request_type           => OE_GLOBALS.G_PRICE_ADJ,
1794             p_param1                 => 'UI',
1795 	    x_return_status          => l_return_status);
1796          Else
1797 	        oe_delayed_requests_pvt.log_request(
1798 		p_entity_code    	     => OE_GLOBALS.G_ENTITY_LINE,
1799 		p_entity_id      		=> p_x_Line_adj_rec.Line_id,
1800 		p_requesting_entity_code => OE_GLOBALS.G_ENTITY_LINE_ADJ,
1801 		p_requesting_entity_id   => p_x_Line_adj_rec.Line_id,
1802 		p_request_type   		=> OE_GLOBALS.G_PRICE_ADJ,
1803 		x_return_status  		=> l_return_status);
1804          End If;
1805         ELSE
1806 	        oe_delayed_requests_pvt.log_request(
1807 		p_entity_code    	     => OE_GLOBALS.G_ENTITY_ALL,
1808 		p_entity_id      		=> p_x_Line_adj_rec.header_id,
1809 		p_requesting_entity_code => OE_GLOBALS.G_ENTITY_HEADER_ADJ,
1810 		p_requesting_entity_id   => p_x_Line_adj_rec.header_id,
1811 		p_request_type   		=> OE_GLOBALS.G_PRICE_ADJ,
1812 		x_return_status  		=> l_return_status);
1813         END IF;
1814 	  l_price_flag := FALSE;
1815   End If;
1816 
1817   IF l_calculate_commitment_flag = 'Y' THEN
1818     l_class := NULL;
1819     l_so_source_code := FND_PROFILE.VALUE('ONT_SOURCE_CODE');
1820     l_oe_installed_flag := 'I';
1821     BEGIN
1822       SELECT commitment_id
1823       INTO   l_commitment_id
1824       FROM   oe_order_lines
1825       WHERE  line_id = p_old_line_adj_rec.line_id;
1826 
1827     EXCEPTION
1828       WHEN NO_DATA_FOUND THEN
1829         NULL;
1830     END;
1831 
1832     IF l_commitment_id IS NOT NULL
1833        AND OE_Commitment_Pvt.Do_Commitment_Sequencing  THEN
1834       oe_globals.g_commitment_balance := ARP_BAL_UTIL.GET_COMMITMENT_BALANCE(
1835                  l_commitment_id
1836                 ,l_class
1837                 ,l_so_source_code
1838                 ,l_oe_installed_flag );
1839 
1840 	OE_Delayed_Requests_Pvt.Log_Request(
1841 	p_entity_code			=>	OE_GLOBALS.G_ENTITY_LINE,
1842 	p_entity_id			=>	p_x_line_adj_rec.line_id,
1843 	p_requesting_entity_code	=>	OE_GLOBALS.G_ENTITY_LINE,
1844 	p_requesting_entity_id  	=>	p_x_line_adj_rec.line_id,
1845 	p_request_type			=>	OE_GLOBALS.G_CALCULATE_COMMITMENT,
1846 	x_return_status			=>	l_return_status);
1847     END IF;
1848   END IF;
1849 
1850    IF (l_verify_payment_flag = 'Y') THEN
1851            --Start bug# 5961160
1852            -- Query the Order Header
1853            IF l_debug_level  > 0 THEN
1854               oe_debug_pub.add( 'OEXULADB: BEFORE QUERYING HEADER ID : '|| p_x_line_adj_rec.header_id ) ;
1855            END IF;
1856 
1857            OE_Header_UTIL.Query_Row
1858              (p_header_id               => p_x_line_adj_rec.header_id
1859              ,x_header_rec              => l_header_rec
1860               );
1861 
1862            IF l_debug_level  > 0
1863            THEN
1864               OE_DEBUG_PUB.ADD('after query header ');
1865               OE_DEBUG_PUB.ADD(' ');
1866               OE_DEBUG_PUB.ADD('================================================');
1867               OE_DEBUG_PUB.ADD('Header ID           = '|| l_header_rec.header_id );
1868               OE_DEBUG_PUB.ADD('order_category_code = '|| l_header_rec.order_category_code );
1869               OE_DEBUG_PUB.ADD('Booked flag         = '|| l_header_rec.booked_flag );
1870               OE_DEBUG_PUB.ADD('Order number        = '|| l_header_rec.order_number );
1871               OE_DEBUG_PUB.ADD('payment_term_id     = '|| l_header_rec.payment_term_id );
1872               OE_DEBUG_PUB.ADD('order_type_id       = '|| l_header_rec.order_type_id );
1873               OE_DEBUG_PUB.ADD(' ');
1874               OE_DEBUG_PUB.ADD('================================================');
1875            END IF;
1876 
1877            -- Call Which_Rule function to find out Which Rule to Apply
1878            IF l_debug_level  > 0 THEN
1879               oe_debug_pub.add( 'OEXULADB: BEFORE CALLING WHICH RULE ' ) ;
1880            END IF;
1881 
1882            l_calling_action := OE_Verify_Payment_PUB.Which_Rule(p_header_id => p_x_line_adj_rec.header_id);
1883 
1884            IF l_debug_level  > 0 THEN
1885               oe_debug_pub.add( 'OEXULADB: RULE TO BE USED IS : '|| l_calling_action ) ;
1886            END IF;
1887 
1888            IF l_debug_level  > 0 THEN
1889               oe_debug_pub.add( 'OEXULADB: BEFORE CHECKING IF THE RULE IS DEFINED OR NOT' ) ;
1890            END IF;
1891 
1892            l_rule_defined := OE_Verify_Payment_PUB.Check_Rule_Defined
1893                                 ( p_header_rec     => l_header_rec
1894                                 , p_calling_action => l_calling_action
1895                                 ) ;
1896 
1897            IF l_debug_level  > 0 THEN
1898               oe_debug_pub.add( 'OEXULADB: OUT OF RULE DEFINED : '|| l_rule_defined);
1899            END IF;
1900 
1901            IF l_rule_defined = 'Y' THEN
1902               l_credit_check_rule_id := NULL ;
1903 
1904               -- Check the Rule to Apply
1905               IF l_debug_level  > 0 THEN
1906                  oe_debug_pub.add( 'Before L_CREDIT_CHECK_RULE_ID => '|| l_credit_check_rule_id ) ;
1907               END IF;
1908 
1909               OE_CREDIT_CHECK_UTIL.Get_Credit_Check_Rule_ID
1910                ( p_calling_action        => l_calling_action
1911                , p_order_type_id         => l_header_rec.order_type_id
1912                , x_credit_rule_id        => l_credit_check_rule_id
1913                 );
1914 
1915               IF l_debug_level  > 0 THEN
1916                  oe_debug_pub.add( 'After L_CREDIT_CHECK_RULE_ID => '|| l_credit_check_rule_id ) ;
1917               END IF;
1918 
1919               OE_CREDIT_CHECK_UTIL.GET_credit_check_rule
1920                ( p_credit_check_rule_id   => l_credit_check_rule_id
1921                , x_credit_check_rules_rec => l_credit_check_rule_rec
1922                 );
1923 
1924               IF l_debug_level  > 0 THEN
1925                  oe_debug_pub.add( 'OEXULADB: INCL FREIGHT CHARGE FLAG : '|| l_credit_check_rule_rec.incl_freight_charges_flag);
1926               END IF;
1927 
1928               IF NVL(l_credit_check_rule_rec.incl_freight_charges_flag,'N') = 'Y' THEN
1929                  BEGIN
1930                    SELECT line_category_code
1931                    INTO   l_line_category_code
1932                    FROM   oe_order_lines_all
1933                    WHERE  line_id = p_x_line_adj_rec.line_id;
1934                  EXCEPTION WHEN NO_DATA_FOUND THEN
1935                    null;
1936                  END;
1937                 IF l_line_category_code <> 'RETURN' THEN
1938                     oe_debug_pub.ADD('OEXULADB: Logging delayed request for Verify Payment');
1939                     OE_delayed_requests_Pvt.log_request
1940                      (p_entity_code            => OE_GLOBALS.G_ENTITY_ALL,
1941                       p_entity_id              => p_x_line_adj_rec.header_id,
1942                       p_requesting_entity_code => OE_GLOBALS.G_ENTITY_LINE,
1943                       p_requesting_entity_id   => p_x_line_adj_rec.line_id,
1944                       p_request_type           => OE_GLOBALS.G_VERIFY_PAYMENT,
1945                       x_return_status          => l_return_status);
1946                  END IF;
1947               END IF;
1948            END IF;
1949            --End bug#5961160
1950      END IF;
1951 
1952   IF l_return_status <> FND_API.G_RET_STS_SUCCESS
1953   THEN
1954 	     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1955   END IF;
1956 IF l_debug_level  > 0 THEN
1957     oe_debug_pub.add(  'OE_LINE_ADJ_UTIL.LEAVING APPLY_ATTRIBUTE_CHANGES' ) ;
1958 END IF;
1959 END Apply_Attribute_Changes;
1960 
1961 --  Procedure Complete_Record
1962 
1963 PROCEDURE Complete_Record
1964 (   p_x_Line_Adj_rec                IN OUT NOCOPY OE_Order_PUB.Line_Adj_Rec_Type
1965 ,   p_old_Line_Adj_rec              IN  OE_Order_PUB.Line_Adj_Rec_Type
1966 )
1967 IS
1968 l_Line_Adj_rec                OE_Order_PUB.Line_Adj_Rec_Type := p_x_Line_Adj_rec;
1969 BEGIN
1970 
1971     IF l_Line_Adj_rec.adjusted_amount = FND_API.G_MISS_NUM THEN
1972         l_Line_Adj_rec.adjusted_amount := p_old_Line_Adj_rec.adjusted_amount;
1973     END IF;
1974 
1975     IF l_Line_Adj_rec.pricing_phase_id = FND_API.G_MISS_NUM THEN
1976         l_Line_Adj_rec.pricing_phase_id := p_old_Line_Adj_rec.pricing_phase_id;
1977     END IF;
1978 
1979 
1980 
1981     IF l_Line_Adj_rec.price_adjustment_id = FND_API.G_MISS_NUM THEN
1982         l_Line_Adj_rec.price_adjustment_id := p_old_Line_Adj_rec.price_adjustment_id;
1983     END IF;
1984 
1985     IF l_Line_Adj_rec.creation_date = FND_API.G_MISS_DATE THEN
1986         l_Line_Adj_rec.creation_date := p_old_Line_Adj_rec.creation_date;
1987     END IF;
1988 
1989     IF l_Line_Adj_rec.created_by = FND_API.G_MISS_NUM THEN
1990         l_Line_Adj_rec.created_by := p_old_Line_Adj_rec.created_by;
1991     END IF;
1992 
1993     IF l_Line_Adj_rec.last_update_date = FND_API.G_MISS_DATE THEN
1994         l_Line_Adj_rec.last_update_date := p_old_Line_Adj_rec.last_update_date;
1995     END IF;
1996 
1997     IF l_Line_Adj_rec.last_updated_by = FND_API.G_MISS_NUM THEN
1998         l_Line_Adj_rec.last_updated_by := p_old_Line_Adj_rec.last_updated_by;
1999     END IF;
2000 
2001     IF l_Line_Adj_rec.last_update_login = FND_API.G_MISS_NUM THEN
2002         l_Line_Adj_rec.last_update_login := p_old_Line_Adj_rec.last_update_login;
2003     END IF;
2004 
2005     IF l_Line_Adj_rec.program_application_id = FND_API.G_MISS_NUM THEN
2006         l_Line_Adj_rec.program_application_id := p_old_Line_Adj_rec.program_application_id;
2007     END IF;
2008 
2009     IF l_Line_Adj_rec.program_id = FND_API.G_MISS_NUM THEN
2010         l_Line_Adj_rec.program_id := p_old_Line_Adj_rec.program_id;
2011     END IF;
2012 
2013     IF l_Line_Adj_rec.program_update_date = FND_API.G_MISS_DATE THEN
2014         l_Line_Adj_rec.program_update_date := p_old_Line_Adj_rec.program_update_date;
2015     END IF;
2016 
2017     IF l_Line_Adj_rec.request_id = FND_API.G_MISS_NUM THEN
2018         l_Line_Adj_rec.request_id := p_old_Line_Adj_rec.request_id;
2019     END IF;
2020 
2021     IF l_Line_Adj_rec.header_id = FND_API.G_MISS_NUM THEN
2022         l_Line_Adj_rec.header_id := p_old_Line_Adj_rec.header_id;
2023     END IF;
2024 
2025     IF l_Line_Adj_rec.discount_id = FND_API.G_MISS_NUM THEN
2026         l_Line_Adj_rec.discount_id := p_old_Line_Adj_rec.discount_id;
2027     END IF;
2028 
2029     IF l_Line_Adj_rec.discount_line_id = FND_API.G_MISS_NUM THEN
2030         l_Line_Adj_rec.discount_line_id := p_old_Line_Adj_rec.discount_line_id;
2031     END IF;
2032 
2033     IF l_Line_Adj_rec.automatic_flag = FND_API.G_MISS_CHAR THEN
2034         l_Line_Adj_rec.automatic_flag := p_old_Line_Adj_rec.automatic_flag;
2035     END IF;
2036 
2037     IF l_Line_Adj_rec.percent = FND_API.G_MISS_NUM THEN
2038         l_Line_Adj_rec.percent := p_old_Line_Adj_rec.percent;
2039     END IF;
2040 
2041     IF l_Line_Adj_rec.line_id = FND_API.G_MISS_NUM THEN
2042         l_Line_Adj_rec.line_id := p_old_Line_Adj_rec.line_id;
2043     END IF;
2044 
2045     IF l_Line_Adj_rec.context = FND_API.G_MISS_CHAR THEN
2046         l_Line_Adj_rec.context := p_old_Line_Adj_rec.context;
2047     END IF;
2048 
2049     IF l_Line_Adj_rec.attribute1 = FND_API.G_MISS_CHAR THEN
2050         l_Line_Adj_rec.attribute1 := p_old_Line_Adj_rec.attribute1;
2051     END IF;
2052 
2053     IF l_Line_Adj_rec.attribute2 = FND_API.G_MISS_CHAR THEN
2054         l_Line_Adj_rec.attribute2 := p_old_Line_Adj_rec.attribute2;
2055     END IF;
2056 
2057     IF l_Line_Adj_rec.attribute3 = FND_API.G_MISS_CHAR THEN
2058         l_Line_Adj_rec.attribute3 := p_old_Line_Adj_rec.attribute3;
2059     END IF;
2060 
2061     IF l_Line_Adj_rec.attribute4 = FND_API.G_MISS_CHAR THEN
2062         l_Line_Adj_rec.attribute4 := p_old_Line_Adj_rec.attribute4;
2063     END IF;
2064 
2065     IF l_Line_Adj_rec.attribute5 = FND_API.G_MISS_CHAR THEN
2066         l_Line_Adj_rec.attribute5 := p_old_Line_Adj_rec.attribute5;
2067     END IF;
2068 
2069     IF l_Line_Adj_rec.attribute6 = FND_API.G_MISS_CHAR THEN
2070         l_Line_Adj_rec.attribute6 := p_old_Line_Adj_rec.attribute6;
2071     END IF;
2072 
2073     IF l_Line_Adj_rec.attribute7 = FND_API.G_MISS_CHAR THEN
2074         l_Line_Adj_rec.attribute7 := p_old_Line_Adj_rec.attribute7;
2075     END IF;
2076 
2077     IF l_Line_Adj_rec.attribute8 = FND_API.G_MISS_CHAR THEN
2078         l_Line_Adj_rec.attribute8 := p_old_Line_Adj_rec.attribute8;
2079     END IF;
2080 
2081     IF l_Line_Adj_rec.attribute9 = FND_API.G_MISS_CHAR THEN
2082         l_Line_Adj_rec.attribute9 := p_old_Line_Adj_rec.attribute9;
2083     END IF;
2084 
2085     IF l_Line_Adj_rec.attribute10 = FND_API.G_MISS_CHAR THEN
2086         l_Line_Adj_rec.attribute10 := p_old_Line_Adj_rec.attribute10;
2087     END IF;
2088 
2089     IF l_Line_Adj_rec.attribute11 = FND_API.G_MISS_CHAR THEN
2090         l_Line_Adj_rec.attribute11 := p_old_Line_Adj_rec.attribute11;
2091     END IF;
2092 
2093     IF l_Line_Adj_rec.attribute12 = FND_API.G_MISS_CHAR THEN
2094         l_Line_Adj_rec.attribute12 := p_old_Line_Adj_rec.attribute12;
2095     END IF;
2096 
2097     IF l_Line_Adj_rec.attribute13 = FND_API.G_MISS_CHAR THEN
2098         l_Line_Adj_rec.attribute13 := p_old_Line_Adj_rec.attribute13;
2099     END IF;
2100 
2101     IF l_Line_Adj_rec.attribute14 = FND_API.G_MISS_CHAR THEN
2102         l_Line_Adj_rec.attribute14 := p_old_Line_Adj_rec.attribute14;
2103     END IF;
2104 
2105     IF l_Line_Adj_rec.attribute15 = FND_API.G_MISS_CHAR THEN
2106         l_Line_Adj_rec.attribute15 := p_old_Line_Adj_rec.attribute15;
2107     END IF;
2108 
2109 -- new code
2110     IF l_Line_Adj_rec.list_header_id = FND_API.G_MISS_NUM THEN
2111 	  l_Line_Adj_rec.list_header_id := p_old_Line_Adj_rec.list_header_id;
2112 	END IF;
2113 
2114 	IF l_Line_Adj_rec.list_line_id = FND_API.G_MISS_NUM THEN
2115 	   l_Line_Adj_rec.list_line_id := p_old_Line_Adj_rec.list_line_id;
2116 	 END IF;
2117 
2118 	 IF l_Line_Adj_rec.modified_from = FND_API.G_MISS_CHAR THEN
2119 	    l_Line_Adj_rec.modified_from := p_old_Line_Adj_rec.modified_from;
2120 	  END IF;
2121 
2122 	  IF l_Line_Adj_rec.modified_to = FND_API.G_MISS_CHAR THEN
2123 		l_Line_Adj_rec.modified_to := p_old_Line_Adj_rec.modified_to;
2124 	   END IF;
2125 
2126     IF l_Line_Adj_rec.list_line_type_code = FND_API.G_MISS_CHAR THEN
2127 		l_Line_Adj_rec.list_line_type_code :=
2128 			p_old_Line_Adj_rec.list_line_type_code;
2129 	 END IF;
2130 
2131 	IF l_Line_Adj_rec.updated_flag = FND_API.G_MISS_CHAR THEN
2132 	   l_Line_Adj_rec.updated_flag := p_old_Line_Adj_rec.updated_flag;
2133 	  END IF;
2134 
2135 	 IF l_Line_Adj_rec.update_allowed = FND_API.G_MISS_CHAR THEN
2136 	    l_Line_Adj_rec.update_allowed := p_old_Line_Adj_rec.update_allowed;
2137 	   END IF;
2138 
2139 	  IF l_Line_Adj_rec.applied_flag = FND_API.G_MISS_CHAR THEN
2140 		l_Line_Adj_rec.applied_flag := p_old_Line_Adj_rec.applied_flag;
2141 	   END IF;
2142 
2143   IF l_Line_Adj_rec.modifier_mechanism_type_code = FND_API.G_MISS_CHAR THEN
2144 	 	l_Line_Adj_rec.modifier_mechanism_type_code :=
2145 	 		p_old_Line_Adj_rec.modifier_mechanism_type_code;
2146 	  END IF;
2147 
2148     IF l_Line_Adj_rec.change_reason_code = FND_API.G_MISS_CHAR THEN
2149 	  l_Line_Adj_rec.change_reason_code :=
2150 			p_old_Line_Adj_rec.change_reason_code;
2151 	 END IF;
2152 
2153 	IF l_Line_Adj_rec.change_reason_text = FND_API.G_MISS_CHAR THEN
2154 	   l_Line_Adj_rec.change_reason_text :=
2155 	   p_old_Line_Adj_rec.change_reason_text;
2156 	 END IF;
2157 
2158 	IF l_Line_Adj_rec.operand = FND_API.G_MISS_NUM THEN
2159 	   l_Line_Adj_rec.operand :=
2160 	   p_old_Line_Adj_rec.operand;
2161 	 END IF;
2162 
2163 	IF l_Line_Adj_rec.arithmetic_operator = FND_API.G_MISS_CHAR THEN
2164 	   l_Line_Adj_rec.arithmetic_operator :=
2165 	   p_old_Line_Adj_rec.arithmetic_operator;
2166 	 END IF;
2167 
2168 	IF l_Line_Adj_rec.cost_id = FND_API.G_MISS_NUM THEN
2169 	    l_Line_Adj_rec.cost_id :=  p_old_Line_Adj_rec.cost_id;
2170 	END IF;
2171 
2172 	IF l_Line_Adj_rec.tax_code = FND_API.G_MISS_CHAR THEN
2173 	    l_Line_Adj_rec.tax_code := p_old_Line_Adj_rec.tax_code;
2174 	END IF;
2175 
2176 	IF l_Line_Adj_rec.tax_exempt_flag = FND_API.G_MISS_CHAR THEN
2177 	    l_Line_Adj_rec.tax_exempt_flag :=
2178 	    p_old_Line_Adj_rec.tax_exempt_flag;
2179 	END IF;
2180 
2181 	IF l_Line_Adj_rec.tax_exempt_number = FND_API.G_MISS_CHAR THEN
2182 	    l_Line_Adj_rec.tax_exempt_number :=
2183 	    p_old_Line_Adj_rec.tax_exempt_number;
2184 	END IF;
2185 
2186 	IF l_Line_Adj_rec.tax_exempt_reason_code = FND_API.G_MISS_CHAR THEN
2187 	    l_Line_Adj_rec.tax_exempt_reason_code :=
2188 	    p_old_Line_Adj_rec.tax_exempt_reason_code;
2189 	END IF;
2190 
2191 	IF l_Line_Adj_rec.parent_adjustment_id = FND_API.G_MISS_NUM THEN
2192 	    l_Line_Adj_rec.parent_adjustment_id :=
2193 	    p_old_Line_Adj_rec.parent_adjustment_id;
2194 	END IF;
2195 
2196 	IF l_Line_Adj_rec.invoiced_flag = FND_API.G_MISS_CHAR THEN
2197 	    l_Line_Adj_rec.invoiced_flag :=
2198 	    p_old_Line_Adj_rec.invoiced_flag;
2199 	END IF;
2200 
2201 	IF l_Line_Adj_rec.estimated_flag = FND_API.G_MISS_CHAR THEN
2202 	    l_Line_Adj_rec.estimated_flag :=
2203 	    p_old_Line_Adj_rec.estimated_flag;
2204 	END IF;
2205 
2206 	IF l_Line_Adj_rec.inc_in_sales_performance = FND_API.G_MISS_CHAR THEN
2207 	    l_Line_Adj_rec.inc_in_sales_performance :=
2208 	    p_old_Line_Adj_rec.inc_in_sales_performance;
2209 	END IF;
2210 
2211 	IF l_Line_Adj_rec.split_action_code = FND_API.G_MISS_CHAR THEN
2212 	    l_Line_Adj_rec.split_action_code :=
2213 	    p_old_Line_Adj_rec.split_action_code;
2214 	END IF;
2215 
2216 	IF l_Line_Adj_rec.charge_type_code = FND_API.G_MISS_CHAR THEN
2217 	    l_Line_Adj_rec.charge_type_code :=
2218 	    p_old_Line_Adj_rec.charge_type_code;
2219 	END IF;
2220 
2221 	IF l_Line_Adj_rec.charge_subtype_code = FND_API.G_MISS_CHAR THEN
2222 	    l_Line_Adj_rec.charge_subtype_code :=
2223 	    p_old_Line_Adj_rec.charge_subtype_code;
2224 	END IF;
2225 
2226 	IF l_Line_Adj_rec.list_line_no = FND_API.G_MISS_CHAR THEN
2227 	    l_Line_Adj_rec.list_line_no :=
2228 	    p_old_Line_Adj_rec.list_line_no;
2229 	END IF;
2230 
2231 	IF l_Line_Adj_rec.source_system_code = FND_API.G_MISS_CHAR THEN
2232 	    l_Line_Adj_rec.source_system_code :=
2233 	    p_old_Line_Adj_rec.source_system_code;
2234 	END IF;
2235 
2236 	IF l_Line_Adj_rec.benefit_qty = FND_API.G_MISS_NUM THEN
2237 	    l_Line_Adj_rec.benefit_qty :=
2238 	    p_old_Line_Adj_rec.benefit_qty;
2239 	END IF;
2240 
2241 	IF l_Line_Adj_rec.benefit_uom_code = FND_API.G_MISS_CHAR THEN
2242 	    l_Line_Adj_rec.benefit_uom_code :=
2243 	    p_old_Line_Adj_rec.benefit_uom_code;
2244 	END IF;
2245 
2246 	IF l_Line_Adj_rec.print_on_invoice_flag = FND_API.G_MISS_CHAR THEN
2247 	    l_Line_Adj_rec.print_on_invoice_flag :=
2248 	    p_old_Line_Adj_rec.print_on_invoice_flag;
2249 	END IF;
2250 
2251 	IF l_Line_Adj_rec.expiration_date = FND_API.G_MISS_DATE THEN
2252 	    l_Line_Adj_rec.expiration_date :=
2253 	    p_old_Line_Adj_rec.expiration_date;
2254 	END IF;
2255 
2256 	IF l_Line_Adj_rec.rebate_transaction_type_code = FND_API.G_MISS_CHAR THEN
2257 	    l_Line_Adj_rec.rebate_transaction_type_code :=
2258 	    p_old_Line_Adj_rec.rebate_transaction_type_code;
2259 	END IF;
2260 
2261 	IF l_Line_Adj_rec.rebate_transaction_reference = FND_API.G_MISS_CHAR THEN
2262 	    l_Line_Adj_rec.rebate_transaction_reference :=
2263 	    p_old_Line_Adj_rec.rebate_transaction_reference;
2264 	END IF;
2265 
2266 	IF l_Line_Adj_rec.rebate_payment_system_code = FND_API.G_MISS_CHAR THEN
2267 	    l_Line_Adj_rec.rebate_payment_system_code :=
2268 	    p_old_Line_Adj_rec.rebate_payment_system_code;
2269 	END IF;
2270 
2271 	IF l_Line_Adj_rec.redeemed_date = FND_API.G_MISS_DATE THEN
2272 	    l_Line_Adj_rec.redeemed_date :=
2273 	    p_old_Line_Adj_rec.redeemed_date;
2274 	END IF;
2275 
2276 	IF l_Line_Adj_rec.redeemed_flag = FND_API.G_MISS_CHAR THEN
2277 	    l_Line_Adj_rec.redeemed_flag :=
2278 	    p_old_Line_Adj_rec.redeemed_flag;
2279 	END IF;
2280 
2281 	IF l_Line_Adj_rec.accrual_flag = FND_API.G_MISS_CHAR THEN
2282 	    l_Line_Adj_rec.accrual_flag :=
2283 	    p_old_Line_Adj_rec.accrual_flag;
2284 	END IF;
2285 
2286 	IF l_Line_Adj_rec.range_break_quantity = FND_API.G_MISS_NUM THEN
2287 	    l_Line_Adj_rec.range_break_quantity := p_old_Line_Adj_rec.range_break_quantity;
2288 	END IF;
2289 
2290 	IF l_Line_Adj_rec.accrual_conversion_rate = FND_API.G_MISS_NUM THEN
2291 	    l_Line_Adj_rec.accrual_conversion_rate := p_old_Line_Adj_rec.accrual_conversion_rate;
2292 	END IF;
2293 
2294 	IF l_Line_Adj_rec.pricing_group_sequence = FND_API.G_MISS_NUM THEN
2295 	    l_Line_Adj_rec.pricing_group_sequence := p_old_Line_Adj_rec.pricing_group_sequence;
2296 	END IF;
2297 
2298 	IF l_Line_Adj_rec.modifier_level_code = FND_API.G_MISS_CHAR THEN
2299 	    l_Line_Adj_rec.modifier_level_code := p_old_Line_Adj_rec.modifier_level_code;
2300 	END IF;
2301 
2302 	IF l_Line_Adj_rec.price_break_type_code = FND_API.G_MISS_CHAR THEN
2303 	    l_Line_Adj_rec.price_break_type_code := p_old_Line_Adj_rec.price_break_type_code;
2304 	END IF;
2305 
2306 	IF l_Line_Adj_rec.substitution_attribute = FND_API.G_MISS_CHAR THEN
2307 	    l_Line_Adj_rec.substitution_attribute := p_old_Line_Adj_rec.substitution_attribute;
2308 	END IF;
2309 
2310 	IF l_Line_Adj_rec.proration_type_code = FND_API.G_MISS_CHAR THEN
2311 	    l_Line_Adj_rec.proration_type_code := p_old_Line_Adj_rec.proration_type_code;
2312 	END IF;
2313 
2314 	IF l_Line_Adj_rec.credit_or_charge_flag = FND_API.G_MISS_CHAR THEN
2315 	    l_Line_Adj_rec.credit_or_charge_flag := p_old_Line_Adj_rec.credit_or_charge_flag;
2316 	END IF;
2317 
2318 	IF l_Line_Adj_rec.include_on_returns_flag = FND_API.G_MISS_CHAR THEN
2319 	    l_Line_Adj_rec.include_on_returns_flag := p_old_Line_Adj_rec.include_on_returns_flag;
2320 	END IF;
2321 
2322     IF l_Line_Adj_rec.ac_context = FND_API.G_MISS_CHAR THEN
2323         l_Line_Adj_rec.ac_context := p_old_Line_Adj_rec.ac_context;
2324     END IF;
2325 
2326     IF l_Line_Adj_rec.ac_attribute1 = FND_API.G_MISS_CHAR THEN
2327         l_Line_Adj_rec.ac_attribute1 := p_old_Line_Adj_rec.ac_attribute1;
2328     END IF;
2329 
2330     IF l_Line_Adj_rec.ac_attribute2 = FND_API.G_MISS_CHAR THEN
2331         l_Line_Adj_rec.ac_attribute2 := p_old_Line_Adj_rec.ac_attribute2;
2332     END IF;
2333 
2334     IF l_Line_Adj_rec.ac_attribute3 = FND_API.G_MISS_CHAR THEN
2335         l_Line_Adj_rec.ac_attribute3 := p_old_Line_Adj_rec.ac_attribute3;
2336     END IF;
2337 
2338     IF l_Line_Adj_rec.ac_attribute4 = FND_API.G_MISS_CHAR THEN
2339         l_Line_Adj_rec.ac_attribute4 := p_old_Line_Adj_rec.ac_attribute4;
2340     END IF;
2341 
2342     IF l_Line_Adj_rec.ac_attribute5 = FND_API.G_MISS_CHAR THEN
2343         l_Line_Adj_rec.ac_attribute5 := p_old_Line_Adj_rec.ac_attribute5;
2344     END IF;
2345 
2346     IF l_Line_Adj_rec.ac_attribute6 = FND_API.G_MISS_CHAR THEN
2347         l_Line_Adj_rec.ac_attribute6 := p_old_Line_Adj_rec.ac_attribute6;
2348     END IF;
2349 
2350     IF l_Line_Adj_rec.ac_attribute7 = FND_API.G_MISS_CHAR THEN
2351         l_Line_Adj_rec.ac_attribute7 := p_old_Line_Adj_rec.ac_attribute7;
2352     END IF;
2353 
2354     IF l_Line_Adj_rec.ac_attribute8 = FND_API.G_MISS_CHAR THEN
2355         l_Line_Adj_rec.ac_attribute8 := p_old_Line_Adj_rec.ac_attribute8;
2356     END IF;
2357 
2358     IF l_Line_Adj_rec.ac_attribute9 = FND_API.G_MISS_CHAR THEN
2359         l_Line_Adj_rec.ac_attribute9 := p_old_Line_Adj_rec.ac_attribute9;
2360     END IF;
2361 
2362     IF l_Line_Adj_rec.ac_attribute10 = FND_API.G_MISS_CHAR THEN
2363         l_Line_Adj_rec.ac_attribute10 := p_old_Line_Adj_rec.ac_attribute10;
2364     END IF;
2365 
2366     IF l_Line_Adj_rec.ac_attribute11 = FND_API.G_MISS_CHAR THEN
2367         l_Line_Adj_rec.ac_attribute11 := p_old_Line_Adj_rec.ac_attribute11;
2368     END IF;
2369 
2370     IF l_Line_Adj_rec.ac_attribute12 = FND_API.G_MISS_CHAR THEN
2371         l_Line_Adj_rec.ac_attribute12 := p_old_Line_Adj_rec.ac_attribute12;
2372     END IF;
2373 
2374     IF l_Line_Adj_rec.ac_attribute13 = FND_API.G_MISS_CHAR THEN
2375         l_Line_Adj_rec.ac_attribute13 := p_old_Line_Adj_rec.ac_attribute13;
2376     END IF;
2377 
2378     IF l_Line_Adj_rec.ac_attribute14 = FND_API.G_MISS_CHAR THEN
2379         l_Line_Adj_rec.ac_attribute14 := p_old_Line_Adj_rec.ac_attribute14;
2380     END IF;
2381 
2382     IF l_Line_Adj_rec.ac_attribute15 = FND_API.G_MISS_CHAR THEN
2383         l_Line_Adj_rec.ac_attribute15 := p_old_Line_Adj_rec.ac_attribute15;
2384     END IF;
2385 
2386      --uom begin
2387     IF l_Line_Adj_rec.operand_per_pqty = FND_API.G_MISS_NUM THEN
2388     --bug 3063549
2389     --l_Line_Adj_rec.operand_per_pqty := p_old_Line_Adj_rec.operand_per_pqty;
2390     l_Line_Adj_rec.operand_per_pqty := NULL;
2391     END IF;
2392 
2393     IF l_Line_Adj_rec.adjusted_amount_per_pqty = FND_API.G_MISS_NUM THEN
2394         l_Line_Adj_rec.adjusted_amount_per_pqty := p_old_Line_Adj_rec.adjusted_amount_per_pqty;
2395     END IF;
2396     --uom end
2397 
2398     IF l_Line_Adj_rec.invoiced_amount = FND_API.G_MISS_NUM THEN
2399 	l_Line_Adj_rec.invoiced_amount := p_old_Line_Adj_rec.invoiced_amount;
2400     END IF;
2401 
2402     -- eBTax Changes
2403     IF p_x_line_adj_rec.tax_rate_id = FND_API.G_MISS_NUM  THEN
2404         p_x_line_adj_rec.tax_rate_id := p_old_line_adj_rec.tax_rate_id;
2405     END IF;
2406     -- end eBTax changes
2407 
2408 
2409     -- RETURN l_Line_Adj_rec;
2410     p_x_Line_Adj_rec := l_Line_Adj_rec;
2411 
2412 END Complete_Record;
2413 
2414 --  Procedure Convert_Miss_To_Null
2415 
2416 PROCEDURE Convert_Miss_To_Null
2417 (   p_x_Line_Adj_rec                  IN OUT NOCOPY OE_Order_PUB.Line_Adj_Rec_Type
2418 )
2419 IS
2420 l_Line_Adj_rec                OE_Order_PUB.Line_Adj_Rec_Type := p_x_Line_Adj_rec;
2421 --
2422 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
2423 --
2424 BEGIN
2425 
2426     IF l_Line_Adj_rec.adjusted_amount = FND_API.G_MISS_NUM THEN
2427         l_Line_Adj_rec.adjusted_amount := NULL;
2428     END IF;
2429 
2430     IF l_Line_Adj_rec.pricing_phase_id = FND_API.G_MISS_NUM THEN
2431         l_Line_Adj_rec.pricing_phase_id := NULL;
2432     END IF;
2433 
2434     IF l_Line_Adj_rec.price_adjustment_id = FND_API.G_MISS_NUM THEN
2435         l_Line_Adj_rec.price_adjustment_id := NULL;
2436     END IF;
2437 
2438     IF l_Line_Adj_rec.creation_date = FND_API.G_MISS_DATE THEN
2439         l_Line_Adj_rec.creation_date := NULL;
2440     END IF;
2441 
2442     IF l_Line_Adj_rec.created_by = FND_API.G_MISS_NUM THEN
2443         l_Line_Adj_rec.created_by := NULL;
2444     END IF;
2445 
2446     IF l_Line_Adj_rec.last_update_date = FND_API.G_MISS_DATE THEN
2447         l_Line_Adj_rec.last_update_date := NULL;
2448     END IF;
2449 
2450     IF l_Line_Adj_rec.last_updated_by = FND_API.G_MISS_NUM THEN
2451         l_Line_Adj_rec.last_updated_by := NULL;
2452     END IF;
2453 
2454     IF l_Line_Adj_rec.last_update_login = FND_API.G_MISS_NUM THEN
2455         l_Line_Adj_rec.last_update_login := NULL;
2456     END IF;
2457 
2458     IF l_Line_Adj_rec.program_application_id = FND_API.G_MISS_NUM THEN
2459         l_Line_Adj_rec.program_application_id := NULL;
2460     END IF;
2461 
2462     IF l_Line_Adj_rec.program_id = FND_API.G_MISS_NUM THEN
2463         l_Line_Adj_rec.program_id := NULL;
2464     END IF;
2465 
2466     IF l_Line_Adj_rec.program_update_date = FND_API.G_MISS_DATE THEN
2467         l_Line_Adj_rec.program_update_date := NULL;
2468     END IF;
2469 
2470     IF l_Line_Adj_rec.request_id = FND_API.G_MISS_NUM THEN
2471         l_Line_Adj_rec.request_id := NULL;
2472     END IF;
2473 
2474     IF l_Line_Adj_rec.header_id = FND_API.G_MISS_NUM THEN
2475         l_Line_Adj_rec.header_id := NULL;
2476     END IF;
2477 
2478     IF l_Line_Adj_rec.discount_id = FND_API.G_MISS_NUM THEN
2479         l_Line_Adj_rec.discount_id := NULL;
2480     END IF;
2481 
2482     IF l_Line_Adj_rec.discount_line_id = FND_API.G_MISS_NUM THEN
2483         l_Line_Adj_rec.discount_line_id := NULL;
2484     END IF;
2485 
2486     IF l_Line_Adj_rec.automatic_flag = FND_API.G_MISS_CHAR THEN
2487         l_Line_Adj_rec.automatic_flag := NULL;
2488     END IF;
2489 
2490     IF l_Line_Adj_rec.percent = FND_API.G_MISS_NUM THEN
2491         l_Line_Adj_rec.percent := NULL;
2492     END IF;
2493 
2494     IF l_Line_Adj_rec.line_id = FND_API.G_MISS_NUM THEN
2495         l_Line_Adj_rec.line_id := NULL;
2496     END IF;
2497 
2498     IF l_Line_Adj_rec.context = FND_API.G_MISS_CHAR THEN
2499         l_Line_Adj_rec.context := NULL;
2500     END IF;
2501 
2502     IF l_Line_Adj_rec.attribute1 = FND_API.G_MISS_CHAR THEN
2503         l_Line_Adj_rec.attribute1 := NULL;
2504     END IF;
2505 
2506     IF l_Line_Adj_rec.attribute2 = FND_API.G_MISS_CHAR THEN
2507         l_Line_Adj_rec.attribute2 := NULL;
2508     END IF;
2509 
2510     IF l_Line_Adj_rec.attribute3 = FND_API.G_MISS_CHAR THEN
2511         l_Line_Adj_rec.attribute3 := NULL;
2512     END IF;
2513 
2514     IF l_Line_Adj_rec.attribute4 = FND_API.G_MISS_CHAR THEN
2515         l_Line_Adj_rec.attribute4 := NULL;
2516     END IF;
2517 
2518     IF l_Line_Adj_rec.attribute5 = FND_API.G_MISS_CHAR THEN
2519         l_Line_Adj_rec.attribute5 := NULL;
2520     END IF;
2521 
2522     IF l_Line_Adj_rec.attribute6 = FND_API.G_MISS_CHAR THEN
2523         l_Line_Adj_rec.attribute6 := NULL;
2524     END IF;
2525 
2526     IF l_Line_Adj_rec.attribute7 = FND_API.G_MISS_CHAR THEN
2527         l_Line_Adj_rec.attribute7 := NULL;
2528     END IF;
2529 
2530     IF l_Line_Adj_rec.attribute8 = FND_API.G_MISS_CHAR THEN
2531         l_Line_Adj_rec.attribute8 := NULL;
2532     END IF;
2533 
2534     IF l_Line_Adj_rec.attribute9 = FND_API.G_MISS_CHAR THEN
2535         l_Line_Adj_rec.attribute9 := NULL;
2536     END IF;
2537 
2538     IF l_Line_Adj_rec.attribute10 = FND_API.G_MISS_CHAR THEN
2539         l_Line_Adj_rec.attribute10 := NULL;
2540     END IF;
2541 
2542     IF l_Line_Adj_rec.attribute11 = FND_API.G_MISS_CHAR THEN
2543         l_Line_Adj_rec.attribute11 := NULL;
2544     END IF;
2545 
2546     IF l_Line_Adj_rec.attribute12 = FND_API.G_MISS_CHAR THEN
2547         l_Line_Adj_rec.attribute12 := NULL;
2548     END IF;
2549 
2550     IF l_Line_Adj_rec.attribute13 = FND_API.G_MISS_CHAR THEN
2551         l_Line_Adj_rec.attribute13 := NULL;
2552     END IF;
2553 
2554     IF l_Line_Adj_rec.attribute14 = FND_API.G_MISS_CHAR THEN
2555         l_Line_Adj_rec.attribute14 := NULL;
2556     END IF;
2557 
2558     IF l_Line_Adj_rec.attribute15 = FND_API.G_MISS_CHAR THEN
2559         l_Line_Adj_rec.attribute15 := NULL;
2560     END IF;
2561 
2562     IF l_Line_Adj_rec.list_header_id = FND_API.G_MISS_NUM THEN
2563 		 l_Line_Adj_rec.list_header_id := NULL;
2564     END IF;
2565 
2566 	IF l_Line_Adj_rec.list_line_id = FND_API.G_MISS_NUM THEN
2567 		   l_Line_Adj_rec.list_line_id := NULL;
2568 	END IF;
2569 
2570 	IF l_Line_Adj_rec.modified_from = FND_API.G_MISS_CHAR THEN
2571 		    l_Line_Adj_rec.modified_from := NULL;
2572 	END IF;
2573 	IF l_Line_Adj_rec.modified_to = FND_API.G_MISS_CHAR THEN
2574 		l_Line_Adj_rec.modified_to := NULL;
2575 	END IF;
2576 
2577     IF l_Line_Adj_rec.list_line_type_code = FND_API.G_MISS_CHAR THEN
2578 		  l_Line_Adj_rec.list_line_type_code := NULL;
2579     END IF;
2580 
2581     IF l_Line_Adj_rec.updated_flag = FND_API.G_MISS_CHAR THEN
2582 	   l_Line_Adj_rec.updated_flag := NULL;
2583     END IF;
2584 
2585 	IF l_Line_Adj_rec.update_allowed = FND_API.G_MISS_CHAR THEN
2586 	    l_Line_Adj_rec.update_allowed := NULL;
2587 	END IF;
2588 
2589      IF l_Line_Adj_rec.applied_flag = FND_API.G_MISS_CHAR THEN
2590 			l_Line_Adj_rec.applied_flag := NULL;
2591      END IF;
2592 
2593     IF l_Line_Adj_rec.modifier_mechanism_type_code = FND_API.G_MISS_CHAR THEN
2594 		  l_Line_Adj_rec.modifier_mechanism_type_code := NULL;
2595     END IF;
2596 
2597 	IF l_Line_Adj_rec.change_reason_code = FND_API.G_MISS_CHAR THEN
2598 	   l_Line_Adj_rec.change_reason_code := NULL;
2599 	END IF;
2600 
2601 	IF l_Line_Adj_rec.change_reason_text = FND_API.G_MISS_CHAR THEN
2602 	    l_Line_Adj_rec.change_reason_text := NULL ;
2603 	END IF;
2604 
2605 	IF l_Line_Adj_rec.arithmetic_operator = FND_API.G_MISS_CHAR THEN
2606 	    l_Line_Adj_rec.arithmetic_operator := NULL ;
2607 	END IF;
2608 
2609 	IF l_Line_Adj_rec.operand = FND_API.G_MISS_NUM THEN
2610 	    l_Line_Adj_rec.operand := NULL ;
2611 	END IF;
2612 
2613 	IF l_Line_Adj_rec.cost_id = FND_API.G_MISS_NUM THEN
2614 	    l_Line_Adj_rec.cost_id := NULL ;
2615 	END IF;
2616 
2617 	IF l_Line_Adj_rec.tax_code = FND_API.G_MISS_CHAR THEN
2618 	    l_Line_Adj_rec.tax_code := NULL ;
2619 	END IF;
2620 
2621 	IF l_Line_Adj_rec.tax_exempt_flag = FND_API.G_MISS_CHAR THEN
2622 	    l_Line_Adj_rec.tax_exempt_flag := NULL ;
2623 	END IF;
2624 
2625 	IF l_Line_Adj_rec.tax_exempt_number = FND_API.G_MISS_CHAR THEN
2626 	    l_Line_Adj_rec.tax_exempt_number := NULL ;
2627 	END IF;
2628 
2629 	IF l_Line_Adj_rec.tax_exempt_reason_code = FND_API.G_MISS_CHAR THEN
2630 	    l_Line_Adj_rec.tax_exempt_reason_code := NULL ;
2631 	END IF;
2632 
2633 	IF l_Line_Adj_rec.parent_adjustment_id = FND_API.G_MISS_NUM THEN
2634 	    l_Line_Adj_rec.parent_adjustment_id := NULL ;
2635 	END IF;
2636 
2637 	IF l_Line_Adj_rec.invoiced_flag = FND_API.G_MISS_CHAR THEN
2638 	    l_Line_Adj_rec.invoiced_flag := NULL ;
2639 	END IF;
2640 
2641 	IF l_Line_Adj_rec.estimated_flag = FND_API.G_MISS_CHAR THEN
2642 	    l_Line_Adj_rec.estimated_flag := NULL ;
2643 	END IF;
2644 
2645 	IF l_Line_Adj_rec.inc_in_sales_performance = FND_API.G_MISS_CHAR THEN
2646 	    l_Line_Adj_rec.inc_in_sales_performance := NULL ;
2647 	END IF;
2648 
2649 	IF l_Line_Adj_rec.split_action_code = FND_API.G_MISS_CHAR THEN
2650 	    l_Line_Adj_rec.split_action_code := NULL ;
2651 	END IF;
2652 
2653 	IF l_Line_Adj_rec.charge_type_code = FND_API.G_MISS_CHAR THEN
2654 	    l_Line_Adj_rec.charge_type_code := NULL ;
2655 	END IF;
2656 
2657 	IF l_Line_Adj_rec.charge_subtype_code = FND_API.G_MISS_CHAR THEN
2658 	    l_Line_Adj_rec.charge_subtype_code := NULL ;
2659 	END IF;
2660 
2661 	IF l_Line_Adj_rec.list_line_no = FND_API.G_MISS_CHAR THEN
2662 	    l_Line_Adj_rec.list_line_no := NULL ;
2663 	END IF;
2664 
2665 	IF l_Line_Adj_rec.source_system_code = FND_API.G_MISS_CHAR THEN
2666 	    l_Line_Adj_rec.source_system_code := NULL ;
2667 	END IF;
2668 
2669 	IF l_Line_Adj_rec.benefit_qty = FND_API.G_MISS_NUM THEN
2670 	    l_Line_Adj_rec.benefit_qty := NULL ;
2671 	END IF;
2672 
2673 	IF l_Line_Adj_rec.benefit_uom_code = FND_API.G_MISS_CHAR THEN
2674 	    l_Line_Adj_rec.benefit_uom_code := NULL ;
2675 	END IF;
2676 
2677 	IF l_Line_Adj_rec.print_on_invoice_flag = FND_API.G_MISS_CHAR THEN
2678 	    l_Line_Adj_rec.print_on_invoice_flag := NULL ;
2679 	END IF;
2680 
2681 	IF l_Line_Adj_rec.expiration_date = FND_API.G_MISS_DATE THEN
2682 	    l_Line_Adj_rec.expiration_date := NULL ;
2683 	END IF;
2684 
2685 	IF l_Line_Adj_rec.rebate_transaction_type_code = FND_API.G_MISS_CHAR THEN
2686 	    l_Line_Adj_rec.rebate_transaction_type_code := NULL ;
2687 	END IF;
2688 
2689 	IF l_Line_Adj_rec.rebate_transaction_reference = FND_API.G_MISS_CHAR THEN
2690 	    l_Line_Adj_rec.rebate_transaction_reference := NULL ;
2691 	END IF;
2692 
2693 	IF l_Line_Adj_rec.rebate_payment_system_code = FND_API.G_MISS_CHAR THEN
2694 	    l_Line_Adj_rec.rebate_payment_system_code := NULL ;
2695 	END IF;
2696 
2697 	IF l_Line_Adj_rec.redeemed_date = FND_API.G_MISS_DATE THEN
2698 	    l_Line_Adj_rec.redeemed_date := NULL ;
2699 	END IF;
2700 
2701 	IF l_Line_Adj_rec.redeemed_flag = FND_API.G_MISS_CHAR THEN
2702 	    l_Line_Adj_rec.redeemed_flag := NULL ;
2703 	END IF;
2704 
2705 	IF l_Line_Adj_rec.accrual_flag = FND_API.G_MISS_CHAR THEN
2706 	    l_Line_Adj_rec.accrual_flag := NULL ;
2707 	END IF;
2708 
2709 	IF l_Line_Adj_rec.range_break_quantity = FND_API.G_MISS_NUM THEN
2710 	    l_Line_Adj_rec.range_break_quantity := NULL ;
2711 	END IF;
2712 
2713 	IF l_Line_Adj_rec.accrual_conversion_rate = FND_API.G_MISS_NUM THEN
2714 	    l_Line_Adj_rec.accrual_conversion_rate := NULL ;
2715 	END IF;
2716 
2717 	IF l_Line_Adj_rec.pricing_group_sequence = FND_API.G_MISS_NUM THEN
2718 	    l_Line_Adj_rec.pricing_group_sequence := NULL ;
2719 	END IF;
2720 
2721 	IF l_Line_Adj_rec.modifier_level_code = FND_API.G_MISS_CHAR THEN
2722 	    l_Line_Adj_rec.modifier_level_code := NULL ;
2723 	END IF;
2724 
2725 	IF l_Line_Adj_rec.price_break_type_code = FND_API.G_MISS_CHAR THEN
2726 	    l_Line_Adj_rec.price_break_type_code := NULL ;
2727 	END IF;
2728 
2729 	IF l_Line_Adj_rec.substitution_attribute = FND_API.G_MISS_CHAR THEN
2730 	    l_Line_Adj_rec.substitution_attribute := NULL ;
2731 	END IF;
2732 
2733 	IF l_Line_Adj_rec.proration_type_code = FND_API.G_MISS_CHAR THEN
2734 	    l_Line_Adj_rec.proration_type_code := NULL ;
2735 	END IF;
2736 
2737 	IF l_Line_Adj_rec.credit_or_charge_flag = FND_API.G_MISS_CHAR THEN
2738 	    l_Line_Adj_rec.credit_or_charge_flag := NULL ;
2739 	END IF;
2740 
2741 	IF l_Line_Adj_rec.include_on_returns_flag = FND_API.G_MISS_CHAR THEN
2742 	    l_Line_Adj_rec.include_on_returns_flag := NULL ;
2743 	END IF;
2744 
2745     IF l_Line_Adj_rec.ac_context = FND_API.G_MISS_CHAR THEN
2746         l_Line_Adj_rec.ac_context := NULL;
2747     END IF;
2748 
2749     IF l_Line_Adj_rec.ac_attribute1 = FND_API.G_MISS_CHAR THEN
2750         l_Line_Adj_rec.ac_attribute1 := NULL;
2751     END IF;
2752 
2753     IF l_Line_Adj_rec.ac_attribute2 = FND_API.G_MISS_CHAR THEN
2754         l_Line_Adj_rec.ac_attribute2 := NULL;
2755     END IF;
2756 
2757     IF l_Line_Adj_rec.ac_attribute3 = FND_API.G_MISS_CHAR THEN
2758         l_Line_Adj_rec.ac_attribute3 := NULL;
2759     END IF;
2760 
2761     IF l_Line_Adj_rec.ac_attribute4 = FND_API.G_MISS_CHAR THEN
2762         l_Line_Adj_rec.ac_attribute4 := NULL;
2763     END IF;
2764 
2765     IF l_Line_Adj_rec.ac_attribute5 = FND_API.G_MISS_CHAR THEN
2766         l_Line_Adj_rec.ac_attribute5 := NULL;
2767     END IF;
2768 
2769     IF l_Line_Adj_rec.ac_attribute6 = FND_API.G_MISS_CHAR THEN
2770         l_Line_Adj_rec.ac_attribute6 := NULL;
2771     END IF;
2772 
2773     IF l_Line_Adj_rec.ac_attribute7 = FND_API.G_MISS_CHAR THEN
2774         l_Line_Adj_rec.ac_attribute7 := NULL;
2775     END IF;
2776 
2777     IF l_Line_Adj_rec.ac_attribute8 = FND_API.G_MISS_CHAR THEN
2778         l_Line_Adj_rec.ac_attribute8 := NULL;
2779     END IF;
2780 
2781     IF l_Line_Adj_rec.ac_attribute9 = FND_API.G_MISS_CHAR THEN
2782         l_Line_Adj_rec.ac_attribute9 := NULL;
2783     END IF;
2784 
2785     IF l_Line_Adj_rec.ac_attribute10 = FND_API.G_MISS_CHAR THEN
2786         l_Line_Adj_rec.ac_attribute10 := NULL;
2787     END IF;
2788 
2789     IF l_Line_Adj_rec.ac_attribute11 = FND_API.G_MISS_CHAR THEN
2790         l_Line_Adj_rec.ac_attribute11 := NULL;
2791     END IF;
2792 
2793     IF l_Line_Adj_rec.ac_attribute12 = FND_API.G_MISS_CHAR THEN
2794         l_Line_Adj_rec.ac_attribute12 := NULL;
2795     END IF;
2796 
2797     IF l_Line_Adj_rec.ac_attribute13 = FND_API.G_MISS_CHAR THEN
2798         l_Line_Adj_rec.ac_attribute13 := NULL;
2799     END IF;
2800 
2801     IF l_Line_Adj_rec.ac_attribute14 = FND_API.G_MISS_CHAR THEN
2802         l_Line_Adj_rec.ac_attribute14 := NULL;
2803     END IF;
2804 
2805     IF l_Line_Adj_rec.ac_attribute15 = FND_API.G_MISS_CHAR THEN
2806         l_Line_Adj_rec.ac_attribute15 := NULL;
2807     END IF;
2808 
2809     --uom begin
2810     IF l_Line_Adj_rec.operand_per_pqty = FND_API.G_MISS_NUM THEN
2811         l_Line_Adj_rec.operand_per_pqty := NULL;
2812     END IF;
2813 
2814     IF l_Line_Adj_rec.adjusted_amount_per_pqty = FND_API.G_MISS_NUM THEN
2815         l_Line_Adj_rec.adjusted_amount_per_pqty := NULL;
2816     END IF;
2817 
2818     --uom end
2819 
2820     IF l_Line_Adj_rec.invoiced_amount = FND_API.G_MISS_NUM THEN
2821 	    l_Line_Adj_rec.invoiced_amount := NULL ;
2822     END IF;
2823 
2824     -- eBTax Changes
2825     IF p_x_line_adj_rec.tax_rate_id = FND_API.G_MISS_NUM  THEN
2826         p_x_line_adj_rec.tax_rate_id := NULL;
2827     END IF;
2828 
2829 
2830     -- end eBTax changes
2831 
2832     IF l_debug_level  > 0 THEN
2833         oe_debug_pub.add(  'EXITING OE_LINE_ADJ_UTIL.CONVERT_MISS_TO_NULL' , 1 ) ;
2834     END IF;
2835 
2836     -- RETURN l_Line_Adj_rec;
2837     p_x_Line_Adj_rec := l_Line_Adj_rec;
2838 
2839 END Convert_Miss_To_Null;
2840 
2841 --  Procedure Update_Row
2842 
2843 PROCEDURE Update_Row
2844 (   p_Line_Adj_rec            IN OUT NOCOPY OE_Order_PUB.Line_Adj_Rec_Type
2845 )
2846 IS
2847 l_lock_control		NUMBER;
2848 l_index                 NUMBER;
2849 l_return_status         VARCHAR2(1);
2850 --
2851 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
2852 --
2853 BEGIN
2854      IF l_debug_level  > 0 THEN
2855          oe_debug_pub.add(  'ENTERING OE_LINE_ADJ_UTIL.UPDATE_ROW' , 1 ) ;
2856      END IF;
2857 
2858     -- increment lock_control by 1 whenever the record is updated
2859     SELECT lock_control
2860     INTO   l_lock_control
2861     FROM   OE_PRICE_ADJUSTMENTS
2862     WHERE  price_adjustment_id = p_Line_Adj_rec.price_adjustment_id;
2863 
2864     l_lock_control := l_lock_control + 1;
2865 
2866    --calling notification framework to update global picture
2867    --check code release level first. Notification framework is at Pack H level
2868    IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110508' THEN
2869         IF l_debug_level  > 0 THEN
2870             oe_debug_pub.add(  'JFC: LINE_PRICE_ADJ_ID=' || P_LINE_ADJ_REC.PRICE_ADJUSTMENT_ID ) ;
2871         END IF;
2872        OE_ORDER_UTIL.Update_Global_Picture(p_Upd_New_Rec_If_Exists => True,
2873                     p_Line_adj_rec =>p_line_adj_rec,
2874                     p_line_adj_id => p_line_adj_rec.price_adjustment_id,
2875                     x_index => l_index,
2876                     x_return_status => l_return_status);
2877          IF l_debug_level  > 0 THEN
2878              oe_debug_pub.add(  'UPDATE_GLOBAL RETURN STATUS FROM OE_LINE_ADJ_UTIL.UPDATE_ROW IS: ' || L_RETURN_STATUS ) ;
2879          END IF;
2880          IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
2881              IF l_debug_level  > 0 THEN
2882                  oe_debug_pub.add(  'EVENT NOTIFY - UNEXPECTED ERROR' ) ;
2883                  oe_debug_pub.add(  'EXITING OE_LINE_ADJ_UTIL.UPDATE_ROW' , 1 ) ;
2884              END IF;
2885 	     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2886          ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
2887              IF l_debug_level  > 0 THEN
2888                  oe_debug_pub.add(  'UPDATE_GLOBAL_PICTURE ERROR IN OE_LINE_ADJ_UTIL.UPDATE_ROW' ) ;
2889                 oe_debug_pub.add(  'EXITING OE_LINE_ADJ_UTIL.UPDATE_ROW' , 1 ) ;
2890             END IF;
2891 	    RAISE FND_API.G_EXC_ERROR;
2892           END IF;
2893     END IF; /* code_release_level*/
2894      -- notification framework end
2895 
2896     UPDATE  OE_PRICE_ADJUSTMENTS
2897     SET     PRICE_ADJUSTMENT_ID    = p_Line_Adj_rec.price_adjustment_id
2898     ,       CREATION_DATE          = p_Line_Adj_rec.creation_date
2899     ,       CREATED_BY             = p_Line_Adj_rec.created_by
2900     ,       LAST_UPDATE_DATE       = p_Line_Adj_rec.last_update_date
2901     ,       LAST_UPDATED_BY        = p_Line_Adj_rec.last_updated_by
2902     ,       LAST_UPDATE_LOGIN      = p_Line_Adj_rec.last_update_login
2903     ,       PROGRAM_APPLICATION_ID = p_Line_Adj_rec.program_application_id
2904     ,       PROGRAM_ID             = p_Line_Adj_rec.program_id
2905     ,       PROGRAM_UPDATE_DATE    = p_Line_Adj_rec.program_update_date
2906     ,       REQUEST_ID             = p_Line_Adj_rec.request_id
2907     ,       HEADER_ID              = p_Line_Adj_rec.header_id
2908     ,       DISCOUNT_ID            = p_Line_Adj_rec.discount_id
2909     ,       DISCOUNT_LINE_ID       = p_Line_Adj_rec.discount_line_id
2910     ,       AUTOMATIC_FLAG         = p_Line_Adj_rec.automatic_flag
2911     ,       PERCENT                = p_Line_Adj_rec.percent
2912     ,       LINE_ID                = p_Line_Adj_rec.line_id
2913     ,       CONTEXT                = p_Line_Adj_rec.context
2914     ,       ATTRIBUTE1             = p_Line_Adj_rec.attribute1
2915     ,       ATTRIBUTE2             = p_Line_Adj_rec.attribute2
2916     ,       ATTRIBUTE3             = p_Line_Adj_rec.attribute3
2917     ,       ATTRIBUTE4             = p_Line_Adj_rec.attribute4
2918     ,       ATTRIBUTE5             = p_Line_Adj_rec.attribute5
2919     ,       ATTRIBUTE6             = p_Line_Adj_rec.attribute6
2920     ,       ATTRIBUTE7             = p_Line_Adj_rec.attribute7
2921     ,       ATTRIBUTE8             = p_Line_Adj_rec.attribute8
2922     ,       ATTRIBUTE9             = p_Line_Adj_rec.attribute9
2923     ,       ATTRIBUTE10            = p_Line_Adj_rec.attribute10
2924     ,       ATTRIBUTE11            = p_Line_Adj_rec.attribute11
2925     ,       ATTRIBUTE12            = p_Line_Adj_rec.attribute12
2926     ,       ATTRIBUTE13            = p_Line_Adj_rec.attribute13
2927     ,       ATTRIBUTE14            = p_Line_Adj_rec.attribute14
2928     ,       ATTRIBUTE15            = p_Line_Adj_rec.attribute15
2929     ,       ORIG_SYS_DISCOUNT_REF  = p_Line_Adj_rec.orig_sys_discount_ref
2930     ,	  LIST_HEADER_ID  	     = p_Line_Adj_rec.list_header_id
2931     ,	  LIST_LINE_ID  	     = p_Line_Adj_rec.list_line_id
2932     ,	  LIST_LINE_TYPE_CODE  	    =  p_Line_Adj_rec.list_line_type_code
2933  , MODIFIER_MECHANISM_TYPE_CODE = p_Line_Adj_rec.modifier_mechanism_type_code
2934     ,	  MODIFIED_FROM   	     = p_Line_Adj_rec.modified_from
2935     ,	  MODIFIED_TO  	     = p_Line_Adj_rec.modified_to
2936     ,	  UPDATED_FLAG  	     = p_Line_Adj_rec.updated_flag
2937     ,	  UPDATE_ALLOWED  	     = p_Line_Adj_rec.update_allowed
2938     ,	  APPLIED_FLAG  	     = p_Line_Adj_rec.applied_flag
2939     ,	  CHANGE_REASON_CODE  	 =     p_Line_Adj_rec.change_reason_code
2940     ,	  CHANGE_REASON_TEXT  	  =    p_Line_Adj_rec.change_reason_text
2941     ,	  operand				=  p_Line_Adj_rec.operand
2942     ,	  Arithmetic_operator	=	p_Line_Adj_rec.arithmetic_operator
2943     ,	  COST_ID                = p_Line_Adj_rec.cost_id
2944     ,	  TAX_CODE               = p_Line_Adj_rec.tax_code
2945     ,	  TAX_EXEMPT_FLAG        = p_Line_Adj_rec.tax_exempt_flag
2946     ,	  TAX_EXEMPT_NUMBER      = p_Line_Adj_rec.tax_exempt_number
2947     ,	  TAX_EXEMPT_REASON_CODE = p_Line_Adj_rec.tax_exempt_reason_code
2948     ,	  PARENT_ADJUSTMENT_ID   = p_Line_Adj_rec.parent_adjustment_id
2949     ,	  INVOICED_FLAG          = p_Line_Adj_rec.invoiced_flag
2950     ,	  ESTIMATED_FLAG         = p_Line_Adj_rec.estimated_flag
2951     ,	  INC_IN_SALES_PERFORMANCE = p_Line_Adj_rec.inc_in_sales_performance
2952     ,	  SPLIT_ACTION_CODE      = p_Line_Adj_rec.split_action_code
2953     ,	  ADJUSTED_AMOUNT      = p_Line_Adj_rec.adjusted_amount
2954     ,	  PRICING_PHASE_ID      = p_Line_Adj_rec.pricing_phase_id
2955     ,	  CHARGE_TYPE_CODE      = p_Line_Adj_rec.charge_type_code
2956     ,	  CHARGE_SUBTYPE_CODE      = p_Line_Adj_rec.charge_subtype_code
2957     ,     LIST_LINE_NO          = p_Line_Adj_rec.list_line_no
2958     ,     SOURCE_SYSTEM_CODE     = p_Line_Adj_rec.source_system_code
2959     ,     BENEFIT_QTY           = p_Line_Adj_rec.benefit_qty
2960     ,     BENEFIT_UOM_CODE      = p_Line_Adj_rec.benefit_uom_code
2961     ,     PRINT_ON_INVOICE_FLAG = p_Line_Adj_rec.print_on_invoice_flag
2962     ,     EXPIRATION_DATE       = p_Line_Adj_rec.expiration_date
2963     ,     REBATE_TRANSACTION_TYPE_CODE  = p_Line_Adj_rec.rebate_transaction_type_code
2964     ,     REBATE_TRANSACTION_REFERENCE  = p_Line_Adj_rec.rebate_transaction_reference
2965     ,     REBATE_PAYMENT_SYSTEM_CODE    = p_Line_Adj_rec.rebate_payment_system_code
2966     ,     REDEEMED_DATE         = p_Line_Adj_rec.redeemed_date
2967     ,     REDEEMED_FLAG         = p_Line_Adj_rec.redeemed_flag
2968     ,     ACCRUAL_FLAG         = p_Line_Adj_rec.accrual_flag
2969     ,     range_break_quantity      = p_Line_Adj_rec.range_break_quantity
2970     ,     accrual_conversion_rate   = p_Line_Adj_rec.accrual_conversion_rate
2971     ,     pricing_group_sequence    = p_Line_Adj_rec.pricing_group_sequence
2972     ,     modifier_level_code       = p_Line_Adj_rec.modifier_level_code
2973     ,     price_break_type_code     = p_Line_Adj_rec.price_break_type_code
2974     ,     substitution_attribute    = p_Line_Adj_rec.substitution_attribute
2975     ,     proration_type_code       = p_Line_Adj_rec.proration_type_code
2976     ,       CREDIT_OR_CHARGE_FLAG   = p_Line_Adj_rec.credit_or_charge_flag
2977     ,       INCLUDE_ON_RETURNS_FLAG = p_Line_Adj_rec.include_on_returns_flag
2978     ,       AC_CONTEXT              = p_Line_Adj_rec.ac_context
2979     ,       AC_ATTRIBUTE1           = p_Line_Adj_rec.ac_attribute1
2980     ,       AC_ATTRIBUTE2           = p_Line_Adj_rec.ac_attribute2
2981     ,       AC_ATTRIBUTE3           = p_Line_Adj_rec.ac_attribute3
2982     ,       AC_ATTRIBUTE4           = p_Line_Adj_rec.ac_attribute4
2983     ,       AC_ATTRIBUTE5           = p_Line_Adj_rec.ac_attribute5
2984     ,       AC_ATTRIBUTE6           = p_Line_Adj_rec.ac_attribute6
2985     ,       AC_ATTRIBUTE7           = p_Line_Adj_rec.ac_attribute7
2986     ,       AC_ATTRIBUTE8           = p_Line_Adj_rec.ac_attribute8
2987     ,       AC_ATTRIBUTE9           = p_Line_Adj_rec.ac_attribute9
2988     ,       AC_ATTRIBUTE10          = p_Line_Adj_rec.ac_attribute10
2989     ,       AC_ATTRIBUTE11          = p_Line_Adj_rec.ac_attribute11
2990     ,       AC_ATTRIBUTE12          = p_Line_Adj_rec.ac_attribute12
2991     ,       AC_ATTRIBUTE13          = p_Line_Adj_rec.ac_attribute13
2992     ,       AC_ATTRIBUTE14          = p_Line_Adj_rec.ac_attribute14
2993     ,       AC_ATTRIBUTE15          = p_Line_Adj_rec.ac_attribute15
2994     ,	  LOCK_CONTROL			 = l_lock_control
2995      --uom begin
2996     ,       OPERAND_PER_PQTY        = p_line_adj_rec.operand_per_pqty
2997     ,       ADJUSTED_AMOUNT_PER_PQTY = p_line_adj_rec.adjusted_amount_per_pqty
2998     --uom end
2999     ,	  INVOICED_AMOUNT           = p_Line_Adj_rec.invoiced_amount
3000     -- eBTax changes
3001     ,     TAX_RATE_ID               = p_Line_Adj_rec.tax_rate_id
3002 
3003     WHERE   PRICE_ADJUSTMENT_ID    = p_Line_Adj_rec.price_adjustment_id
3004     ;
3005 
3006     p_Line_Adj_rec.lock_control := l_lock_control;
3007     IF l_debug_level  > 0 THEN
3008         oe_debug_pub.add(  'EXITING OE_LINE_ADJ_UTIL.UPDATE_ROW.' , 1 ) ;
3009     END IF;
3010 
3011 EXCEPTION
3012 
3013     WHEN OTHERS THEN
3014 
3015         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
3016         THEN
3017             OE_MSG_PUB.Add_Exc_Msg
3018             (   G_PKG_NAME
3019             ,   'Update_Row'
3020             );
3021         END IF;
3022        IF l_debug_level  > 0 THEN
3023            oe_debug_pub.add(  'EXCEPTION IN UPDATE_ROW'||SQLERRM , 2 ) ;
3024        END IF;
3025         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3026 
3027 END Update_Row;
3028 
3029 --To prevent unique key violation on price_adjustment_table next time
3030 Procedure Reset_Sequence Is
3031 h number;
3032 i number;
3033 k number;
3034 j number;
3035 l number;
3036 begin
3037   select max(price_adjustment_id)
3038   into j
3039   from  oe_price_adjustments;
3040 
3041   Select oe_price_adjustments_s.nextval
3042   Into h
3043   From dual;
3044 
3045   If j > h and j <> fnd_api.g_miss_num Then
3046     l:=j-h+10;
3047     for i in 1..l loop
3048       select oe_price_adjustments_s.nextval into k from dual;
3049     end loop;
3050   End If;
3051 
3052 end;
3053 
3054 --  Procedure Insert_Row
3055 
3056 PROCEDURE Insert_Row
3057 (   p_Line_Adj_rec            IN OUT NOCOPY  OE_Order_PUB.Line_Adj_Rec_Type
3058 )
3059 IS
3060 l_lock_control		NUMBER := 1;
3061 l_index                 NUMBER;
3062 l_return_status         VARCHAR2(1);
3063 --
3064 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
3065 --
3066 BEGIN
3067     IF l_debug_level  > 0 THEN
3068         oe_debug_pub.add(  'ENTERING OE_LINE_ADJ_UTIL.INSERT_ROW' , 1 ) ;
3069         oe_debug_pub.add(' list_line_id insert:'|| p_Line_Adj_rec.list_line_id||
3070                          ' ,operand insert:'||p_line_adj_rec.operand||
3071                          ' ,operand pqty insert:'||p_line_adj_rec.operand_per_pqty||
3072                          ' ,applied_flag insert:'||p_line_adj_rec.applied_flag||
3073                          ' ,list_line_type_code:'||p_line_adj_rec.list_line_type_code||
3074                          ' ,operator:'||p_line_adj_rec.arithmetic_operator);
3075     END IF;
3076 
3077     INSERT  INTO OE_PRICE_ADJUSTMENTS
3078     (       PRICE_ADJUSTMENT_ID
3079     ,       CREATION_DATE
3080     ,       CREATED_BY
3081     ,       LAST_UPDATE_DATE
3082     ,       LAST_UPDATED_BY
3083     ,       LAST_UPDATE_LOGIN
3084     ,       PROGRAM_APPLICATION_ID
3085     ,       PROGRAM_ID
3086     ,       PROGRAM_UPDATE_DATE
3087     ,       REQUEST_ID
3088     ,       HEADER_ID
3089     ,       DISCOUNT_ID
3090     ,       DISCOUNT_LINE_ID
3091     ,       AUTOMATIC_FLAG
3092     ,       PERCENT
3093     ,       LINE_ID
3094     ,       CONTEXT
3095     ,       ATTRIBUTE1
3096     ,       ATTRIBUTE2
3097     ,       ATTRIBUTE3
3098     ,       ATTRIBUTE4
3099     ,       ATTRIBUTE5
3100     ,       ATTRIBUTE6
3101     ,       ATTRIBUTE7
3102     ,       ATTRIBUTE8
3103     ,       ATTRIBUTE9
3104     ,       ATTRIBUTE10
3105     ,       ATTRIBUTE11
3106     ,       ATTRIBUTE12
3107     ,       ATTRIBUTE13
3108     ,       ATTRIBUTE14
3109     ,       ATTRIBUTE15
3110     ,       ORIG_SYS_DISCOUNT_REF
3111     ,	  LIST_HEADER_ID
3112     ,	  LIST_LINE_ID
3113     ,	  LIST_LINE_TYPE_CODE
3114     ,	  MODIFIER_MECHANISM_TYPE_CODE
3115     ,	  MODIFIED_FROM
3116     ,	  MODIFIED_TO
3117     ,	  UPDATED_FLAG
3118     ,	  UPDATE_ALLOWED
3119     ,	  APPLIED_FLAG
3120     ,	  CHANGE_REASON_CODE
3121     ,	  CHANGE_REASON_TEXT
3122     ,	  operand
3123     ,	  Arithmetic_operator
3124     ,	  COST_ID
3125     ,	  TAX_CODE
3126     ,	  TAX_EXEMPT_FLAG
3127     ,	  TAX_EXEMPT_NUMBER
3128     ,	  TAX_EXEMPT_REASON_CODE
3129     ,	  PARENT_ADJUSTMENT_ID
3130     ,	  INVOICED_FLAG
3131     ,	  ESTIMATED_FLAG
3132     ,	  INC_IN_SALES_PERFORMANCE
3133     ,	  SPLIT_ACTION_CODE
3134     ,	  ADJUSTED_AMOUNT
3135     ,	  PRICING_PHASE_ID
3136     ,	  CHARGE_TYPE_CODE
3137     ,	  CHARGE_SUBTYPE_CODE
3138     ,     list_line_no
3139     ,     source_system_code
3140     ,     benefit_qty
3141     ,     benefit_uom_code
3142     ,     print_on_invoice_flag
3143     ,     expiration_date
3144     ,     rebate_transaction_type_code
3145     ,     rebate_transaction_reference
3146     ,     rebate_payment_system_code
3147     ,     redeemed_date
3148     ,     redeemed_flag
3149     ,     accrual_flag
3150     ,     range_break_quantity
3151     ,     accrual_conversion_rate
3152     ,     pricing_group_sequence
3153     ,     modifier_level_code
3154     ,     price_break_type_code
3155     ,     substitution_attribute
3156     ,     proration_type_code
3157     ,       CREDIT_OR_CHARGE_FLAG
3158     ,       INCLUDE_ON_RETURNS_FLAG
3159     ,       AC_CONTEXT
3160     ,       AC_ATTRIBUTE1
3161     ,       AC_ATTRIBUTE2
3162     ,       AC_ATTRIBUTE3
3163     ,       AC_ATTRIBUTE4
3164     ,       AC_ATTRIBUTE5
3165     ,       AC_ATTRIBUTE6
3166     ,       AC_ATTRIBUTE7
3167     ,       AC_ATTRIBUTE8
3168     ,       AC_ATTRIBUTE9
3169     ,       AC_ATTRIBUTE10
3170     ,       AC_ATTRIBUTE11
3171     ,       AC_ATTRIBUTE12
3172     ,       AC_ATTRIBUTE13
3173     ,       AC_ATTRIBUTE14
3174     ,       AC_ATTRIBUTE15
3175     --uom begin
3176     ,       OPERAND_PER_PQTY
3177     ,       ADJUSTED_AMOUNT_PER_PQTY
3178     --uom end
3179     --RETRO{
3180     , retrobill_request_id
3181     --RETRO}
3182     ,	  INVOICED_AMOUNT
3183     ,	  LOCK_CONTROL
3184     -- eBTax Changes
3185     ,     TAX_RATE_ID
3186     )
3187     VALUES
3188     (       p_Line_Adj_rec.price_adjustment_id
3189     ,       p_Line_Adj_rec.creation_date
3190     ,       p_Line_Adj_rec.created_by
3191     ,       p_Line_Adj_rec.last_update_date
3192     ,       p_Line_Adj_rec.last_updated_by
3193     ,       p_Line_Adj_rec.last_update_login
3194     ,       p_Line_Adj_rec.program_application_id
3195     ,       p_Line_Adj_rec.program_id
3196     ,       p_Line_Adj_rec.program_update_date
3197     ,       p_Line_Adj_rec.request_id
3198     ,       p_Line_Adj_rec.header_id
3199     ,       p_Line_Adj_rec.discount_id
3200     ,       p_Line_Adj_rec.discount_line_id
3201     ,       p_Line_Adj_rec.automatic_flag
3202     ,       p_Line_Adj_rec.percent
3203     ,       p_Line_Adj_rec.line_id
3204     ,       p_Line_Adj_rec.context
3205     ,       p_Line_Adj_rec.attribute1
3206     ,       p_Line_Adj_rec.attribute2
3207     ,       p_Line_Adj_rec.attribute3
3208     ,       p_Line_Adj_rec.attribute4
3209     ,       p_Line_Adj_rec.attribute5
3210     ,       p_Line_Adj_rec.attribute6
3211     ,       p_Line_Adj_rec.attribute7
3212     ,       p_Line_Adj_rec.attribute8
3213     ,       p_Line_Adj_rec.attribute9
3214     ,       p_Line_Adj_rec.attribute10
3215     ,       p_Line_Adj_rec.attribute11
3216     ,       p_Line_Adj_rec.attribute12
3217     ,       p_Line_Adj_rec.attribute13
3218     ,       p_Line_Adj_rec.attribute14
3219     ,       p_Line_Adj_rec.attribute15
3220     ,       p_Line_Adj_rec.orig_sys_discount_ref
3221     ,	  p_Line_Adj_rec.LIST_HEADER_ID
3222     ,	  p_Line_Adj_rec.LIST_LINE_ID
3223     ,	  p_Line_Adj_rec.LIST_LINE_TYPE_CODE
3224     ,	  p_Line_Adj_rec.MODIFIER_MECHANISM_TYPE_CODE
3225     ,	  p_Line_Adj_rec.MODIFIED_FROM
3226     ,	  p_Line_Adj_rec.MODIFIED_TO
3227     ,	  p_Line_Adj_rec.UPDATED_FLAG
3228     ,	  p_Line_Adj_rec.UPDATE_ALLOWED
3229     ,	  p_Line_Adj_rec.APPLIED_FLAG
3230     ,	  p_Line_Adj_rec.CHANGE_REASON_CODE
3231     ,	  p_Line_Adj_rec.CHANGE_REASON_TEXT
3232     ,	  p_Line_Adj_rec.operand
3233     ,	  p_Line_Adj_rec.arithmetic_operator
3234     ,	  p_line_Adj_rec.COST_ID
3235     ,	  p_line_Adj_rec.TAX_CODE
3236     ,	  p_line_Adj_rec.TAX_EXEMPT_FLAG
3237     ,	  p_line_Adj_rec.TAX_EXEMPT_NUMBER
3238     ,	  p_line_Adj_rec.TAX_EXEMPT_REASON_CODE
3239     ,	  p_line_Adj_rec.PARENT_ADJUSTMENT_ID
3240     ,	  p_line_Adj_rec.INVOICED_FLAG
3241     ,	  p_line_Adj_rec.ESTIMATED_FLAG
3242     ,	  p_line_Adj_rec.INC_IN_SALES_PERFORMANCE
3243     ,	  p_line_Adj_rec.SPLIT_ACTION_CODE
3244     ,	  p_line_Adj_rec.ADJUSTED_AMOUNT
3245     ,	  p_line_Adj_rec.PRICING_PHASE_ID
3246     ,	  p_line_Adj_rec.CHARGE_TYPE_CODE
3247     ,	  p_line_Adj_rec.CHARGE_SUBTYPE_CODE
3248     ,       p_Line_Adj_rec.list_line_no
3249     ,       p_Line_Adj_rec.source_system_code
3250     ,       p_Line_Adj_rec.benefit_qty
3251     ,       p_Line_Adj_rec.benefit_uom_code
3252     ,       p_Line_Adj_rec.print_on_invoice_flag
3253     ,       p_Line_Adj_rec.expiration_date
3254     ,       p_Line_Adj_rec.rebate_transaction_type_code
3255     ,       p_Line_Adj_rec.rebate_transaction_reference
3256     ,       p_Line_Adj_rec.rebate_payment_system_code
3257     ,       p_Line_Adj_rec.redeemed_date
3258     ,       p_Line_Adj_rec.redeemed_flag
3259     ,       p_Line_Adj_rec.accrual_flag
3260     ,       p_Line_Adj_rec.range_break_quantity
3261     ,       p_Line_Adj_rec.accrual_conversion_rate
3262     ,       p_Line_Adj_rec.pricing_group_sequence
3263     ,       p_Line_Adj_rec.modifier_level_code
3264     ,       p_Line_Adj_rec.price_break_type_code
3265     ,       p_Line_Adj_rec.substitution_attribute
3266     ,       p_Line_Adj_rec.proration_type_code
3267     ,       p_Line_Adj_rec.credit_or_charge_flag
3268     ,       p_Line_Adj_rec.include_on_returns_flag
3269     ,       p_Line_Adj_rec.ac_context
3270     ,       p_Line_Adj_rec.ac_attribute1
3271     ,       p_Line_Adj_rec.ac_attribute2
3272     ,       p_Line_Adj_rec.ac_attribute3
3273     ,       p_Line_Adj_rec.ac_attribute4
3274     ,       p_Line_Adj_rec.ac_attribute5
3275     ,       p_Line_Adj_rec.ac_attribute6
3276     ,       p_Line_Adj_rec.ac_attribute7
3277     ,       p_Line_Adj_rec.ac_attribute8
3278     ,       p_Line_Adj_rec.ac_attribute9
3279     ,       p_Line_Adj_rec.ac_attribute10
3280     ,       p_Line_Adj_rec.ac_attribute11
3281     ,       p_Line_Adj_rec.ac_attribute12
3282     ,       p_Line_Adj_rec.ac_attribute13
3283     ,       p_Line_Adj_rec.ac_attribute14
3284     ,       p_Line_Adj_rec.ac_attribute15
3285     --uom begin
3286     ,       p_line_adj_rec.OPERAND_PER_PQTY
3287     ,       p_line_adj_rec.ADJUSTED_AMOUNT_PER_PQTY
3288     --uom end
3289     --RETRO{
3290     ,       p_line_adj_rec.retrobill_request_id
3291     --RETRO}
3292     ,	    p_line_Adj_rec.INVOICED_AMOUNT
3293     ,       l_lock_control
3294     -- eBTax changes
3295     ,      p_line_adj_rec.tax_rate_id
3296     );
3297 
3298     p_Line_Adj_rec.lock_control := l_lock_control;
3299 
3300    --calling notification framework to update_global picture
3301    --check code release level first. Notification framework is at Pack H level
3302    IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110508' THEN
3303       OE_ORDER_UTIL.Update_Global_Picture(p_Upd_New_Rec_If_Exists => True,
3304                     p_old_line_adj_rec => NULL,
3305                     p_line_adj_rec =>p_line_adj_rec,
3306                     p_line_adj_id => p_line_adj_rec.price_adjustment_id,
3307                     x_index => l_index,
3308                     x_return_status => l_return_status);
3309         IF l_debug_level  > 0 THEN
3310             oe_debug_pub.add(  'UPDATE_GLOBAL RETURN STATUS FROM OE_LINE_ADJ_UTIL.INSERT_RO IS: ' || L_RETURN_STATUS ) ;
3311            oe_debug_pub.add(  'RETURNED INDEX IS: ' || L_INDEX , 1 ) ;
3312        END IF;
3313 
3314        IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3315            IF l_debug_level  > 0 THEN
3316                oe_debug_pub.add(  'EVENT NOTIFY - UNEXPECTED ERROR' ) ;
3317                oe_debug_pub.add(  'EXITING OE_LINE_ADJ_UTIL.INSERT_ROW' , 1 ) ;
3318            END IF;
3319            RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3320         ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3321             IF l_debug_level  > 0 THEN
3322                 oe_debug_pub.add(  'UPDATE_GLOBAL_PICTURE ERROR IN OE_LINE_ADJ_UTIL.INSERT_ROW' ) ;
3323                 oe_debug_pub.add(  'EXITINGOE_LINE_ADJ_UTIL.INSERT_ROW' , 1 ) ;
3324             END IF;
3325 	    RAISE FND_API.G_EXC_ERROR;
3326         END IF;
3327       END IF; /*code_release_level*/
3328     -- notification framework end
3329 
3330     IF l_debug_level  > 0 THEN
3331         oe_debug_pub.add(  'EXITING OE_LINE_ADJ_UTIL.INSERT_ROW.' , 1 ) ;
3332     END IF;
3333 
3334 EXCEPTION
3335 
3336     WHEN DUP_VAL_ON_INDEX Then
3337       Reset_Sequence;
3338       IF l_debug_level  > 0 THEN
3339           oe_debug_pub.add(  G_PKG_NAME||':INSER_ROW:'||SQLERRM ) ;
3340       END IF;
3341         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
3342         THEN
3343             OE_MSG_PUB.Add_Exc_Msg
3344             (   G_PKG_NAME
3345             ,   'Insert_Row'
3346             );
3347         END IF;
3348 
3349         --FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME,'Insert_Row:'||SQLERRM);
3350 
3351         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3352 
3353     WHEN OTHERS THEN
3354         IF l_debug_level  > 0 THEN
3355             oe_debug_pub.add(  G_PKG_NAME||':INSER_ROW:'||SQLERRM ) ;
3356         END IF;
3357         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
3358         THEN
3359             OE_MSG_PUB.Add_Exc_Msg
3360             (   G_PKG_NAME
3361             ,   'Insert_Row'
3362             );
3363         END IF;
3364 
3365         --FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME,'Insert_Row:'||SQLERRM);
3366 
3367         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3368 
3369 END Insert_Row;
3370 
3371 --  Procedure Delete_Row
3372 
3373 PROCEDURE Delete_Row
3374 (   p_price_adjustment_id           IN  NUMBER :=
3375                                         FND_API.G_MISS_NUM
3376 ,   p_line_id                       IN  NUMBER :=
3377                                         FND_API.G_MISS_NUM
3378 )
3379 IS
3380 l_return_status		VARCHAR2(30);
3381 CURSOR price_adj IS
3382 	SELECT price_adjustment_id
3383 	FROM OE_PRICE_ADJUSTMENTS
3384 	WHERE   LINE_ID = p_line_id;
3385 
3386 -- added for notification framework
3387 l_new_line_adj_rec     OE_Order_PUB.Line_Adj_Rec_Type;
3388 l_index    NUMBER;
3389 
3390 --
3391 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
3392 --
3393 BEGIN
3394   IF l_debug_level  > 0 THEN
3395       oe_debug_pub.add(  'ENTERING OE_LINE_ADJ_UTIL.DELETE_ROW' ) ;
3396   END IF;
3397   IF p_line_id <> FND_API.G_MISS_NUM
3398   THEN
3399     IF l_debug_level  > 0 THEN
3400         oe_debug_pub.add(  ' P_LINE_ID <> G_MISS_NUM' ) ;
3401     END IF;
3402     FOR l_adj IN price_adj LOOP
3403 
3404    --added for notification framework
3405    --check code release level first. Notification framework is at Pack H level
3406       IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110508' THEN
3407            IF l_debug_level  > 0 THEN
3408                oe_debug_pub.add(  'JFC: IN DELETE ROW , PRICE_ADJUSTMENT_ID'||L_ADJ.PRICE_ADJUSTMENT_ID , 1 ) ;
3409            END IF;
3410       /* Set the operation on the record so that globals are updated as well */
3411         l_new_line_adj_rec.operation := OE_GLOBALS.G_OPR_DELETE;
3412         l_new_line_adj_rec.price_adjustment_id := l_adj.price_adjustment_id;
3413          OE_ORDER_UTIL.Update_Global_Picture(p_Upd_New_Rec_If_Exists => True,
3414                     p_line_adj_rec =>l_new_line_adj_rec,
3415                     p_line_adj_id => l_adj.price_adjustment_id,
3416                     x_index => l_index,
3417                     x_return_status => l_return_status);
3418             IF l_debug_level  > 0 THEN
3419                 oe_debug_pub.add(  'UPDATE_GLOBAL RETURN STATUS FROM OE_LINE_ADJ_UTIL.DELETE_ROW IS: ' || L_RETURN_STATUS ) ;
3420             END IF;
3421 
3422         IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3423            IF l_debug_level  > 0 THEN
3424                oe_debug_pub.add(  'EVENT NOTIFY - UNEXPECTED ERROR' ) ;
3425                oe_debug_pub.add(  'EXITING OE_LINE_ADJ_UTIL.DELETE_ROW' , 1 ) ;
3426            END IF;
3427 	   RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3428         ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3429             IF l_debug_level  > 0 THEN
3430                 oe_debug_pub.add(  'UPDATE_GLOBAL_PICTURE ERROR IN OE_LINE_ADJ_UTIL.DELETE_ROW' ) ;
3431                oe_debug_pub.add(  'EXITING OE_LINE_ADJ_UTIL.DELETE_ROW' , 1 ) ;
3432            END IF;
3433        	RAISE FND_API.G_EXC_ERROR;
3434        END IF;
3435      END IF; /*code_release_level*/
3436   -- end notification framework
3437 
3438       OE_Delayed_Requests_Pvt.Delete_Reqs_for_deleted_entity(
3439         p_entity_code  => OE_GLOBALS.G_ENTITY_LINE_ADJ,
3440         p_entity_id     => l_adj.price_adjustment_id,
3441         x_return_status => l_return_status
3442         );
3443 	  OE_Line_Price_Aattr_Util.delete_row(
3444 			p_price_adjustment_id=>l_adj.price_adjustment_id);
3445 
3446        -- fixed bug 1658300
3447 	  /***
3448 	  OE_Line_Adj_Assocs_Util.delete_row(
3449 			p_price_adjustment_id=>l_adj.price_adjustment_id);
3450 	  ***/
3451 
3452     END LOOP;
3453     DELETE  FROM OE_PRICE_ADJUSTMENTS
3454     WHERE   LINE_ID = p_line_id;
3455   ELSE
3456      IF l_debug_level  > 0 THEN
3457          oe_debug_pub.add(  ' P_LINE_ID = G_MISS_NUM' ) ;
3458      END IF;
3459 
3460     --added for notification framework
3461    --check code release level first. Notification framework is at Pack H level
3462      IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110508' THEN
3463          IF l_debug_level  > 0 THEN
3464              oe_debug_pub.add(  'JFC: IN DELETE ROW , LINE_ID IS G_MISS_NUM , PRICE_ADJUSTMENT_ID'||P_PRICE_ADJUSTMENT_ID , 1 ) ;
3465          END IF;
3466       /* Set the operation on the record so that globals are updated as well */
3467        l_new_line_adj_rec.operation := OE_GLOBALS.G_OPR_DELETE;
3468        l_new_line_adj_rec.price_adjustment_id := p_price_adjustment_id;
3469           OE_ORDER_UTIL.Update_Global_Picture(p_Upd_New_Rec_If_Exists => True,
3470                     p_line_adj_rec =>l_new_line_adj_rec,
3471                     p_line_adj_id => p_price_adjustment_id,
3472                     x_index => l_index,
3473                     x_return_status => l_return_status);
3474           IF l_debug_level  > 0 THEN
3475               oe_debug_pub.add(  'UPDATE_GLOBAL RETURN STATUS FROM OE_LINE_ADJ_UTIL.DELETE_ROW IS: ' || L_RETURN_STATUS ) ;
3476           END IF;
3477         IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3478           IF l_debug_level  > 0 THEN
3479               oe_debug_pub.add(  'EVENT NOTIFY - UNEXPECTED ERROR' ) ;
3480               oe_debug_pub.add(  'EXITING OE_LINE_ADJ_UTIL.DELETE_ROW' , 1 ) ;
3481           END IF;
3482 	  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3483         ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3484           IF l_debug_level  > 0 THEN
3485               oe_debug_pub.add(  'UPDATE_GLOBAL_PICTURE ERROR IN OE_LINE_ADJ_UTIL.DELETE_ROW' ) ;
3486               oe_debug_pub.add(  'EXITING OE_LINE_ADJ_UTIL.DELETE_ROW' , 1 ) ;
3487           END IF;
3488       	RAISE FND_API.G_EXC_ERROR;
3489        END IF;
3490      END IF;  /*code_release_level*/
3491   -- end notification framework
3492 
3493       OE_Delayed_Requests_Pvt.Delete_Reqs_for_deleted_entity
3494         (p_entity_code  => OE_GLOBALS.G_ENTITY_LINE_ADJ,
3495         p_entity_id     => p_price_adjustment_id,
3496         x_return_status => l_return_status
3497         );
3498 
3499 	  OE_Line_Price_Aattr_Util.delete_row(
3500 			p_price_adjustment_id=>p_price_adjustment_id);
3501 
3502        -- fixed bug 1658300
3503 	  /***
3504 	  OE_Line_Adj_Assocs_Util.delete_row(
3505 			p_price_adjustment_id=>p_price_adjustment_id);
3506        ***/
3507 
3508 --bug3528335 moving the following DELETE statement before deletion of the parent and checking for PBH.
3509     --bug3405372 deleting the child lines of PBH modifiers as well
3510     DELETE FROM OE_PRICE_ADJUSTMENTS
3511     WHERE PRICE_ADJUSTMENT_ID IN (SELECT RLTD_PRICE_ADJ_ID
3512 				  FROM OE_PRICE_ADJ_ASSOCS ASSOCS,
3513 				       OE_PRICE_ADJUSTMENTS PARENT
3514 				  WHERE ASSOCS.PRICE_ADJUSTMENT_ID=PARENT.PRICE_ADJUSTMENT_ID
3515 				  AND PARENT.PRICE_ADJUSTMENT_ID=p_price_adjustment_id
3516 				  AND PARENT.LIST_LINE_TYPE_CODE='PBH');
3517     IF l_debug_level > 0 THEN
3518        oe_debug_pub.add('pviprana: Deleted '|| SQL%ROWCOUNT || ' Child Lines');
3519     END IF;
3520     --bug3528335 end
3521 
3522 
3523 
3524     DELETE  FROM OE_PRICE_ADJUSTMENTS
3525     WHERE   PRICE_ADJUSTMENT_ID = p_price_adjustment_id;
3526 
3527   END IF;
3528 IF l_debug_level  > 0 THEN
3529     oe_debug_pub.add(  'LEAVING OE_LINE_ADJ_UTIL.DELETE_ROW' ) ;
3530 END IF;
3531 EXCEPTION
3532 
3533     WHEN OTHERS THEN
3534         IF l_debug_level  > 0 THEN
3535             oe_debug_pub.add(  G_PKG_NAME||':DELETE_ROW:'||SQLERRM ) ;
3536         END IF;
3537         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
3538         THEN
3539             OE_MSG_PUB.Add_Exc_Msg
3540             (   G_PKG_NAME
3541             ,   'Delete_Row'
3542             );
3543         END IF;
3544 
3545         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3546 
3547 END Delete_Row;
3548 
3549 --  Procedure Query_Row
3550 
3551 PROCEDURE Query_Row
3552 (   p_price_adjustment_id     IN  NUMBER
3553 ,   x_Line_Adj_Rec 			IN OUT NOCOPY OE_Order_PUB.Line_Adj_Rec_Type
3554 )
3555 IS
3556   l_Line_Adj_Tbl		OE_Order_PUB.Line_Adj_Tbl_Type;
3557 BEGIN
3558 
3559     Query_Rows
3560         (   p_price_adjustment_id        => p_price_adjustment_id
3561 	   ,   x_Line_Adj_Tbl			 => l_Line_Adj_Tbl
3562 	   );
3563     x_Line_Adj_Rec := l_Line_Adj_Tbl(1);
3564 
3565 END Query_Row;
3566 
3567 --  Procedure Query_Rows
3568 
3569 PROCEDURE Query_Rows
3570 (   p_price_adjustment_id           IN  NUMBER :=
3571                                         FND_API.G_MISS_NUM
3572 ,   p_line_id                       IN  NUMBER :=
3573                                         FND_API.G_MISS_NUM
3574 ,   p_Header_id                     IN  NUMBER :=
3575                                         FND_API.G_MISS_NUM
3576 ,   p_Line_Level_Header_id          IN  NUMBER :=
3577                                         FND_API.G_MISS_NUM
3578 ,   x_Line_Adj_Tbl 		           IN OUT NOCOPY OE_Order_PUB.Line_Adj_Tbl_Type
3579 )
3580 IS
3581 l_count			NUMBER;
3582 
3583 CURSOR l_Line_Adj_csr IS
3584     SELECT  ATTRIBUTE1
3585     ,       ATTRIBUTE10
3586     ,       ATTRIBUTE11
3587     ,       ATTRIBUTE12
3588     ,       ATTRIBUTE13
3589     ,       ATTRIBUTE14
3590     ,       ATTRIBUTE15
3591     ,       ATTRIBUTE2
3592     ,       ATTRIBUTE3
3593     ,       ATTRIBUTE4
3594     ,       ATTRIBUTE5
3595     ,       ATTRIBUTE6
3596     ,       ATTRIBUTE7
3597     ,       ATTRIBUTE8
3598     ,       ATTRIBUTE9
3599     ,       AUTOMATIC_FLAG
3600     ,       CONTEXT
3601     ,       CREATED_BY
3602     ,       CREATION_DATE
3603     ,       DISCOUNT_ID
3604     ,       DISCOUNT_LINE_ID
3605     ,       HEADER_ID
3606     ,       LAST_UPDATED_BY
3607     ,       LAST_UPDATE_DATE
3608     ,       LAST_UPDATE_LOGIN
3609     ,       LINE_ID
3610     ,       PERCENT
3611     ,       PRICE_ADJUSTMENT_ID
3612     ,       PROGRAM_APPLICATION_ID
3613     ,       PROGRAM_ID
3614     ,       PROGRAM_UPDATE_DATE
3615     ,       REQUEST_ID
3616     ,	  LIST_HEADER_ID
3617     ,	  LIST_LINE_ID
3618     ,	  LIST_LINE_TYPE_CODE
3619     ,	  MODIFIER_MECHANISM_TYPE_CODE
3620     ,	  MODIFIED_FROM
3621     ,	  MODIFIED_TO
3622     ,	  UPDATED_FLAG
3623     ,	  UPDATE_ALLOWED
3624     ,	  APPLIED_FLAG
3625     ,	  CHANGE_REASON_CODE
3626     ,	  CHANGE_REASON_TEXT
3627     ,	  operand
3628     ,	  Arithmetic_operator
3629     ,	  COST_ID
3630     ,	  TAX_CODE
3631     ,	  TAX_EXEMPT_FLAG
3632     ,	  TAX_EXEMPT_NUMBER
3633     ,	  TAX_EXEMPT_REASON_CODE
3634     ,	  PARENT_ADJUSTMENT_ID
3635     ,	  INVOICED_FLAG
3636     ,	  ESTIMATED_FLAG
3637     ,	  INC_IN_SALES_PERFORMANCE
3638     ,	  SPLIT_ACTION_CODE
3639     ,	  ADJUSTED_AMOUNT
3640     ,	  PRICING_PHASE_ID
3641     ,	  CHARGE_TYPE_CODE
3642     ,	  CHARGE_SUBTYPE_CODE
3643     ,     list_line_no
3644     ,     source_system_code
3645     ,     benefit_qty
3646     ,     benefit_uom_code
3647     ,     print_on_invoice_flag
3648     ,     expiration_date
3649     ,     rebate_transaction_type_code
3650     ,     rebate_transaction_reference
3651     ,     rebate_payment_system_code
3652     ,     redeemed_date
3653     ,     redeemed_flag
3654     ,     accrual_flag
3655     ,     range_break_quantity
3656     ,     accrual_conversion_rate
3657     ,     pricing_group_sequence
3658     ,     modifier_level_code
3659     ,     price_break_type_code
3660     ,     substitution_attribute
3661     ,     proration_type_code
3662     ,       credit_or_charge_flag
3663     ,       include_on_returns_flag
3664     ,       AC_ATTRIBUTE1
3665     ,       AC_ATTRIBUTE10
3666     ,       AC_ATTRIBUTE11
3667     ,       AC_ATTRIBUTE12
3668     ,       AC_ATTRIBUTE13
3669     ,       AC_ATTRIBUTE14
3670     ,       AC_ATTRIBUTE15
3671     ,       AC_ATTRIBUTE2
3672     ,       AC_ATTRIBUTE3
3673     ,       AC_ATTRIBUTE4
3674     ,       AC_ATTRIBUTE5
3675     ,       AC_ATTRIBUTE6
3676     ,       AC_ATTRIBUTE7
3677     ,       AC_ATTRIBUTE8
3678     ,       AC_ATTRIBUTE9
3679     ,       AC_CONTEXT
3680 --uom begin
3681     ,     OPERAND_PER_PQTY
3682     ,     ADJUSTED_AMOUNT_PER_PQTY
3683 --uom end
3684     ,	  INVOICED_AMOUNT
3685     ,	  orig_sys_discount_ref
3686     --RETRO{
3687     , retrobill_request_id
3688     --RETRO}
3689     ,	  LOCK_CONTROL
3690     -- eBTax changes
3691     ,     TAX_RATE_ID
3692     FROM  OE_PRICE_ADJUSTMENTS
3693     WHERE PRICE_ADJUSTMENT_ID = p_price_adjustment_id;
3694 
3695 CURSOR l_Line_Adj_csr2 IS
3696     SELECT  ATTRIBUTE1
3697     ,       ATTRIBUTE10
3698     ,       ATTRIBUTE11
3699     ,       ATTRIBUTE12
3700     ,       ATTRIBUTE13
3701     ,       ATTRIBUTE14
3702     ,       ATTRIBUTE15
3703     ,       ATTRIBUTE2
3704     ,       ATTRIBUTE3
3705     ,       ATTRIBUTE4
3706     ,       ATTRIBUTE5
3707     ,       ATTRIBUTE6
3708     ,       ATTRIBUTE7
3709     ,       ATTRIBUTE8
3710     ,       ATTRIBUTE9
3711     ,       AUTOMATIC_FLAG
3712     ,       CONTEXT
3713     ,       CREATED_BY
3714     ,       CREATION_DATE
3715     ,       DISCOUNT_ID
3716     ,       DISCOUNT_LINE_ID
3717     ,       HEADER_ID
3718     ,       LAST_UPDATED_BY
3719     ,       LAST_UPDATE_DATE
3720     ,       LAST_UPDATE_LOGIN
3721     ,       LINE_ID
3722     ,       PERCENT
3723     ,       PRICE_ADJUSTMENT_ID
3724     ,       PROGRAM_APPLICATION_ID
3725     ,       PROGRAM_ID
3726     ,       PROGRAM_UPDATE_DATE
3727     ,       REQUEST_ID
3728     ,	  LIST_HEADER_ID
3729     ,	  LIST_LINE_ID
3730     ,	  LIST_LINE_TYPE_CODE
3731     ,	  MODIFIER_MECHANISM_TYPE_CODE
3732     ,	  MODIFIED_FROM
3733     ,	  MODIFIED_TO
3734     ,	  UPDATED_FLAG
3735     ,	  UPDATE_ALLOWED
3736     ,	  APPLIED_FLAG
3737     ,	  CHANGE_REASON_CODE
3738     ,	  CHANGE_REASON_TEXT
3739     ,	  operand
3740     ,	  Arithmetic_operator
3741     ,	  COST_ID
3742     ,	  TAX_CODE
3743     ,	  TAX_EXEMPT_FLAG
3744     ,	  TAX_EXEMPT_NUMBER
3745     ,	  TAX_EXEMPT_REASON_CODE
3746     ,	  PARENT_ADJUSTMENT_ID
3747     ,	  INVOICED_FLAG
3748     ,	  ESTIMATED_FLAG
3749     ,	  INC_IN_SALES_PERFORMANCE
3750     ,	  SPLIT_ACTION_CODE
3751     ,	  ADJUSTED_AMOUNT
3752     ,	  PRICING_PHASE_ID
3753     ,	  CHARGE_TYPE_CODE
3754     ,	  CHARGE_SUBTYPE_CODE
3755     ,     list_line_no
3756     ,     source_system_code
3757     ,     benefit_qty
3758     ,     benefit_uom_code
3759     ,     print_on_invoice_flag
3760     ,     expiration_date
3761     ,     rebate_transaction_type_code
3762     ,     rebate_transaction_reference
3763     ,     rebate_payment_system_code
3764     ,     redeemed_date
3765     ,     redeemed_flag
3766     ,     accrual_flag
3767     ,     range_break_quantity
3768     ,     accrual_conversion_rate
3769     ,     pricing_group_sequence
3770     ,     modifier_level_code
3771     ,     price_break_type_code
3772     ,     substitution_attribute
3773     ,     proration_type_code
3774     ,       credit_or_charge_flag
3775     ,       include_on_returns_flag
3776     ,       AC_ATTRIBUTE1
3777     ,       AC_ATTRIBUTE10
3778     ,       AC_ATTRIBUTE11
3779     ,       AC_ATTRIBUTE12
3780     ,       AC_ATTRIBUTE13
3781     ,       AC_ATTRIBUTE14
3782     ,       AC_ATTRIBUTE15
3783     ,       AC_ATTRIBUTE2
3784     ,       AC_ATTRIBUTE3
3785     ,       AC_ATTRIBUTE4
3786     ,       AC_ATTRIBUTE5
3787     ,       AC_ATTRIBUTE6
3788     ,       AC_ATTRIBUTE7
3789     ,       AC_ATTRIBUTE8
3790     ,       AC_ATTRIBUTE9
3791     ,       AC_CONTEXT
3792 --uom begin
3793     ,     OPERAND_PER_PQTY
3794     ,     ADJUSTED_AMOUNT_PER_PQTY
3795 --uom end
3796     ,	  INVOICED_AMOUNT
3797     ,	  orig_sys_discount_ref
3798     --RETRO{
3799     , retrobill_request_id
3800     --RETRO}
3801     ,	  LOCK_CONTROL
3802   -- eBTax changes
3803     ,     TAX_RATE_ID
3804     FROM    OE_PRICE_ADJUSTMENTS
3805     WHERE line_id = p_line_id;
3806 
3807 CURSOR l_Line_Adj_csr3 IS
3808     SELECT  ATTRIBUTE1
3809     ,       ATTRIBUTE10
3810     ,       ATTRIBUTE11
3811     ,       ATTRIBUTE12
3812     ,       ATTRIBUTE13
3813     ,       ATTRIBUTE14
3814     ,       ATTRIBUTE15
3815     ,       ATTRIBUTE2
3816     ,       ATTRIBUTE3
3817     ,       ATTRIBUTE4
3818     ,       ATTRIBUTE5
3819     ,       ATTRIBUTE6
3820     ,       ATTRIBUTE7
3821     ,       ATTRIBUTE8
3822     ,       ATTRIBUTE9
3823     ,       AUTOMATIC_FLAG
3824     ,       CONTEXT
3825     ,       CREATED_BY
3826     ,       CREATION_DATE
3827     ,       DISCOUNT_ID
3828     ,       DISCOUNT_LINE_ID
3829     ,       HEADER_ID
3830     ,       LAST_UPDATED_BY
3831     ,       LAST_UPDATE_DATE
3832     ,       LAST_UPDATE_LOGIN
3833     ,       LINE_ID
3834     ,       PERCENT
3835     ,       PRICE_ADJUSTMENT_ID
3836     ,       PROGRAM_APPLICATION_ID
3837     ,       PROGRAM_ID
3838     ,       PROGRAM_UPDATE_DATE
3839     ,       REQUEST_ID
3840     ,	  LIST_HEADER_ID
3841     ,	  LIST_LINE_ID
3842     ,	  LIST_LINE_TYPE_CODE
3843     ,	  MODIFIER_MECHANISM_TYPE_CODE
3844     ,	  MODIFIED_FROM
3845     ,	  MODIFIED_TO
3846     ,	  UPDATED_FLAG
3847     ,	  UPDATE_ALLOWED
3848     ,	  APPLIED_FLAG
3849     ,	  CHANGE_REASON_CODE
3850     ,	  CHANGE_REASON_TEXT
3851     ,	  operand
3852     ,	  Arithmetic_operator
3853     ,	  COST_ID
3854     ,	  TAX_CODE
3855     ,	  TAX_EXEMPT_FLAG
3856     ,	  TAX_EXEMPT_NUMBER
3857     ,	  TAX_EXEMPT_REASON_CODE
3858     ,	  PARENT_ADJUSTMENT_ID
3859     ,	  INVOICED_FLAG
3860     ,	  ESTIMATED_FLAG
3861     ,	  INC_IN_SALES_PERFORMANCE
3862     ,	  SPLIT_ACTION_CODE
3863     ,	  ADJUSTED_AMOUNT
3864     ,	  PRICING_PHASE_ID
3865     ,	  CHARGE_TYPE_CODE
3866     ,	  CHARGE_SUBTYPE_CODE
3867     ,     list_line_no
3868     ,     source_system_code
3869     ,     benefit_qty
3870     ,     benefit_uom_code
3871     ,     print_on_invoice_flag
3872     ,     expiration_date
3873     ,     rebate_transaction_type_code
3874     ,     rebate_transaction_reference
3875     ,     rebate_payment_system_code
3876     ,     redeemed_date
3877     ,     redeemed_flag
3878     ,     accrual_flag
3879     ,     range_break_quantity
3880     ,     accrual_conversion_rate
3881     ,     pricing_group_sequence
3882     ,     modifier_level_code
3883     ,     price_break_type_code
3884     ,     substitution_attribute
3885     ,     proration_type_code
3886     ,       credit_or_charge_flag
3887     ,       include_on_returns_flag
3888     ,       AC_ATTRIBUTE1
3889     ,       AC_ATTRIBUTE10
3890     ,       AC_ATTRIBUTE11
3891     ,       AC_ATTRIBUTE12
3892     ,       AC_ATTRIBUTE13
3893     ,       AC_ATTRIBUTE14
3894     ,       AC_ATTRIBUTE15
3895     ,       AC_ATTRIBUTE2
3896     ,       AC_ATTRIBUTE3
3897     ,       AC_ATTRIBUTE4
3898     ,       AC_ATTRIBUTE5
3899     ,       AC_ATTRIBUTE6
3900     ,       AC_ATTRIBUTE7
3901     ,       AC_ATTRIBUTE8
3902     ,       AC_ATTRIBUTE9
3903     ,       AC_CONTEXT
3904 --uom begin
3905     ,     OPERAND_PER_PQTY
3906     ,     ADJUSTED_AMOUNT_PER_PQTY
3907 --uom end
3908     ,	  INVOICED_AMOUNT
3909     ,	  orig_sys_discount_ref
3910     --RETRO{
3911     , retrobill_request_id
3912     --RETRO}
3913     ,	  LOCK_CONTROL
3914         -- eBTax changes
3915     ,     TAX_RATE_ID
3916     FROM    OE_PRICE_ADJUSTMENTS
3917     WHERE header_id = p_header_id
3918     and   line_id is null;
3919 
3920 --Line-level adjustments based on header_id
3921 CURSOR l_Line_Adj_csr4 IS
3922     SELECT  ATTRIBUTE1
3923     ,       ATTRIBUTE10
3924     ,       ATTRIBUTE11
3925     ,       ATTRIBUTE12
3926     ,       ATTRIBUTE13
3927     ,       ATTRIBUTE14
3928     ,       ATTRIBUTE15
3929     ,       ATTRIBUTE2
3930     ,       ATTRIBUTE3
3931     ,       ATTRIBUTE4
3932     ,       ATTRIBUTE5
3933     ,       ATTRIBUTE6
3934     ,       ATTRIBUTE7
3935     ,       ATTRIBUTE8
3936     ,       ATTRIBUTE9
3937     ,       AUTOMATIC_FLAG
3938     ,       CONTEXT
3939     ,       CREATED_BY
3940     ,       CREATION_DATE
3941     ,       DISCOUNT_ID
3942     ,       DISCOUNT_LINE_ID
3943     ,       HEADER_ID
3944     ,       LAST_UPDATED_BY
3945     ,       LAST_UPDATE_DATE
3946     ,       LAST_UPDATE_LOGIN
3947     ,       LINE_ID
3948     ,       PERCENT
3949     ,       PRICE_ADJUSTMENT_ID
3950     ,       PROGRAM_APPLICATION_ID
3951     ,       PROGRAM_ID
3952     ,       PROGRAM_UPDATE_DATE
3953     ,       REQUEST_ID
3954     ,	  LIST_HEADER_ID
3955     ,	  LIST_LINE_ID
3956     ,	  LIST_LINE_TYPE_CODE
3957     ,	  MODIFIER_MECHANISM_TYPE_CODE
3958     ,	  MODIFIED_FROM
3959     ,	  MODIFIED_TO
3960     ,	  UPDATED_FLAG
3961     ,	  UPDATE_ALLOWED
3962     ,	  APPLIED_FLAG
3963     ,	  CHANGE_REASON_CODE
3964     ,	  CHANGE_REASON_TEXT
3965     ,	  operand
3966     ,	  Arithmetic_operator
3967     ,	  COST_ID
3968     ,	  TAX_CODE
3969     ,	  TAX_EXEMPT_FLAG
3970     ,	  TAX_EXEMPT_NUMBER
3971     ,	  TAX_EXEMPT_REASON_CODE
3972     ,	  PARENT_ADJUSTMENT_ID
3973     ,	  INVOICED_FLAG
3974     ,	  ESTIMATED_FLAG
3975     ,	  INC_IN_SALES_PERFORMANCE
3976     ,	  SPLIT_ACTION_CODE
3977     ,	  ADJUSTED_AMOUNT
3978     ,	  PRICING_PHASE_ID
3979     ,	  CHARGE_TYPE_CODE
3980     ,	  CHARGE_SUBTYPE_CODE
3981     ,     list_line_no
3982     ,     source_system_code
3983     ,     benefit_qty
3984     ,     benefit_uom_code
3985     ,     print_on_invoice_flag
3986     ,     expiration_date
3987     ,     rebate_transaction_type_code
3988     ,     rebate_transaction_reference
3989     ,     rebate_payment_system_code
3990     ,     redeemed_date
3991     ,     redeemed_flag
3992     ,     accrual_flag
3993     ,     range_break_quantity
3994     ,     accrual_conversion_rate
3995     ,     pricing_group_sequence
3996     ,     modifier_level_code
3997     ,     price_break_type_code
3998     ,     substitution_attribute
3999     ,     proration_type_code
4000     ,       credit_or_charge_flag
4001     ,       include_on_returns_flag
4002     ,       AC_ATTRIBUTE1
4003     ,       AC_ATTRIBUTE10
4004     ,       AC_ATTRIBUTE11
4005     ,       AC_ATTRIBUTE12
4006     ,       AC_ATTRIBUTE13
4007     ,       AC_ATTRIBUTE14
4008     ,       AC_ATTRIBUTE15
4009     ,       AC_ATTRIBUTE2
4010     ,       AC_ATTRIBUTE3
4011     ,       AC_ATTRIBUTE4
4012     ,       AC_ATTRIBUTE5
4013     ,       AC_ATTRIBUTE6
4014     ,       AC_ATTRIBUTE7
4015     ,       AC_ATTRIBUTE8
4016     ,       AC_ATTRIBUTE9
4017     ,       AC_CONTEXT
4018 --uom begin
4019     ,     OPERAND_PER_PQTY
4020     ,     ADJUSTED_AMOUNT_PER_PQTY
4021 --uom end
4022     ,	  INVOICED_AMOUNT
4023     ,	  orig_sys_discount_ref
4024     --RETRO{
4025     , retrobill_request_id
4026     --RETRO}
4027     ,	  LOCK_CONTROL
4028  -- eBTax changes
4029     ,     TAX_RATE_ID
4030     FROM    OE_PRICE_ADJUSTMENTS
4031     WHERE header_id = p_line_level_header_id
4032     and   line_id is not null;
4033 
4034     l_implicit_rec l_line_adj_csr%ROWTYPE;
4035     l_entity                        NUMBER;
4036 --
4037 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
4038 --
4039 BEGIN
4040 
4041     IF
4042     (p_price_adjustment_id IS NOT NULL
4043      AND
4044      p_price_adjustment_id <> FND_API.G_MISS_NUM)
4045     AND
4046     (p_line_id IS NOT NULL
4047      AND
4048      p_line_id <> FND_API.G_MISS_NUM)
4049     THEN
4050             IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4051             THEN
4052                 OE_MSG_PUB.Add_Exc_Msg
4053                 (   G_PKG_NAME
4054                 ,   'Query Rows'
4055                 ,   'Keys are mutually exclusive: price_adjustment_id = '|| p_price_adjustment_id || ', line_id = '|| p_line_id
4056                 );
4057             END IF;
4058 
4059         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4060 
4061     END IF;
4062 
4063     IF nvl(p_price_adjustment_id,-1) <> FND_API.G_MISS_NUM THEN
4064 	   l_entity := 1;
4065            OPEN l_line_adj_csr;
4066     ELSIF nvl(p_line_id,-1) <> FND_API.G_MISS_NUM THEN
4067 	   l_entity := 2;
4068            OPEN l_line_adj_csr2;
4069     ELSIF nvl(p_header_id,-1) <> FND_API.G_MISS_NUM THEN
4070 	   l_entity := 3;
4071            OPEN l_line_adj_csr3;
4072     ELSIF nvl(p_line_level_header_id,-1) <> FND_API.G_MISS_NUM THEN
4073 	   l_entity := 4;
4074            OPEN l_line_adj_csr4;
4075     END IF;
4076 
4077     l_count := 1;
4078 
4079     --  Loop over fetched records
4080     LOOP
4081 
4082         IF l_entity = 1 THEN
4083              FETCH l_line_adj_csr INTO l_implicit_rec;
4084              EXIT WHEN l_line_adj_csr%NOTFOUND;
4085         ELSIF l_entity = 2 THEN
4086              FETCH l_line_adj_csr2 INTO l_implicit_rec;
4087              EXIT WHEN l_line_adj_csr2%NOTFOUND;
4088         ELSIF l_entity = 3 THEN
4089              FETCH l_line_adj_csr3 INTO l_implicit_rec;
4090              EXIT WHEN l_line_adj_csr3%NOTFOUND;
4091 	--bug3392650 (the condition l_entity=3 was being checked twice)
4092         ELSIF l_entity = 4 THEN
4093              FETCH l_line_adj_csr4 INTO l_implicit_rec;
4094              EXIT WHEN l_line_adj_csr4%NOTFOUND;
4095         ELSE
4096           EXIT;
4097         END IF;
4098 
4099         x_Line_Adj_tbl(l_count).attribute1      := l_implicit_rec.ATTRIBUTE1;
4100         x_Line_Adj_tbl(l_count).attribute10     := l_implicit_rec.ATTRIBUTE10;
4101         x_Line_Adj_tbl(l_count).attribute11     := l_implicit_rec.ATTRIBUTE11;
4102         x_Line_Adj_tbl(l_count).attribute12     := l_implicit_rec.ATTRIBUTE12;
4103         x_Line_Adj_tbl(l_count).attribute13     := l_implicit_rec.ATTRIBUTE13;
4104         x_Line_Adj_tbl(l_count).attribute14     := l_implicit_rec.ATTRIBUTE14;
4105         x_Line_Adj_tbl(l_count).attribute15     := l_implicit_rec.ATTRIBUTE15;
4106         x_Line_Adj_tbl(l_count).attribute2      := l_implicit_rec.ATTRIBUTE2;
4107         x_Line_Adj_tbl(l_count).attribute3      := l_implicit_rec.ATTRIBUTE3;
4108         x_Line_Adj_tbl(l_count).attribute4      := l_implicit_rec.ATTRIBUTE4;
4109         x_Line_Adj_tbl(l_count).attribute5      := l_implicit_rec.ATTRIBUTE5;
4110         x_Line_Adj_tbl(l_count).attribute6      := l_implicit_rec.ATTRIBUTE6;
4111         x_Line_Adj_tbl(l_count).attribute7      := l_implicit_rec.ATTRIBUTE7;
4112         x_Line_Adj_tbl(l_count).attribute8      := l_implicit_rec.ATTRIBUTE8;
4113         x_Line_Adj_tbl(l_count).attribute9      := l_implicit_rec.ATTRIBUTE9;
4114         x_Line_Adj_tbl(l_count).automatic_flag  := l_implicit_rec.AUTOMATIC_FLAG;
4115         x_Line_Adj_tbl(l_count).context         := l_implicit_rec.CONTEXT;
4116         x_Line_Adj_tbl(l_count).created_by      := l_implicit_rec.CREATED_BY;
4117         x_Line_Adj_tbl(l_count).creation_date   := l_implicit_rec.CREATION_DATE;
4118         x_Line_Adj_tbl(l_count).discount_id     := l_implicit_rec.DISCOUNT_ID;
4119         x_Line_Adj_tbl(l_count).discount_line_id := l_implicit_rec.DISCOUNT_LINE_ID;
4120         x_Line_Adj_tbl(l_count).header_id       := l_implicit_rec.HEADER_ID;
4121         x_Line_Adj_tbl(l_count).last_updated_by := l_implicit_rec.LAST_UPDATED_BY;
4122         x_Line_Adj_tbl(l_count).last_update_date := l_implicit_rec.LAST_UPDATE_DATE;
4123         x_Line_Adj_tbl(l_count).last_update_login := l_implicit_rec.LAST_UPDATE_LOGIN;
4124         x_Line_Adj_tbl(l_count).line_id         := l_implicit_rec.LINE_ID;
4125         x_Line_Adj_tbl(l_count).percent         := l_implicit_rec.PERCENT;
4126         x_Line_Adj_tbl(l_count).price_adjustment_id := l_implicit_rec.PRICE_ADJUSTMENT_ID;
4127         x_Line_Adj_tbl(l_count).program_application_id := l_implicit_rec.PROGRAM_APPLICATION_ID;
4128         x_Line_Adj_tbl(l_count).program_id      := l_implicit_rec.PROGRAM_ID;
4129         x_Line_Adj_tbl(l_count).program_update_date := l_implicit_rec.PROGRAM_UPDATE_DATE;
4130         x_Line_Adj_tbl(l_count).request_id      := l_implicit_rec.REQUEST_ID;
4131         x_Line_Adj_tbl(l_count).list_header_id      := l_implicit_rec.list_header_id;
4132         x_Line_Adj_tbl(l_count).list_line_id      := l_implicit_rec.list_line_id;
4133         x_Line_Adj_tbl(l_count).list_line_type_code      := l_implicit_rec.list_line_type_code;
4134         x_Line_Adj_tbl(l_count).modifier_mechanism_type_code := l_implicit_rec.modifier_mechanism_type_code;
4135       x_Line_Adj_tbl(l_count).modified_from      := l_implicit_rec.modified_from;
4136       x_Line_Adj_tbl(l_count).modified_to      := l_implicit_rec.modified_to;
4137       x_Line_Adj_tbl(l_count).updated_flag      := l_implicit_rec.updated_flag;
4138       x_Line_Adj_tbl(l_count).update_allowed    := l_implicit_rec.update_allowed;
4139       x_Line_Adj_tbl(l_count).applied_flag      := l_implicit_rec.applied_flag;
4140       x_Line_Adj_tbl(l_count).change_reason_code := l_implicit_rec.change_reason_code;
4141       x_Line_Adj_tbl(l_count).change_reason_text := l_implicit_rec.change_reason_text;
4142       x_Line_Adj_tbl(l_count).operand := l_implicit_rec.operand;
4143       x_Line_Adj_tbl(l_count).arithmetic_operator := l_implicit_rec.arithmetic_operator;
4144         x_Line_Adj_tbl(l_count).adjusted_amount := l_implicit_rec.adjusted_amount;
4145         x_Line_Adj_tbl(l_count).pricing_phase_id := l_implicit_rec.pricing_phase_id;
4146         x_Line_Adj_tbl(l_count).cost_id := l_implicit_rec.cost_id;
4147         x_Line_Adj_tbl(l_count).tax_code := l_implicit_rec.tax_code;
4148         x_Line_Adj_tbl(l_count).tax_exempt_flag := l_implicit_rec.tax_exempt_flag;
4149         x_Line_Adj_tbl(l_count).tax_exempt_number := l_implicit_rec.tax_exempt_number;
4150         x_Line_Adj_tbl(l_count).tax_exempt_reason_code := l_implicit_rec.tax_exempt_reason_code;
4151         x_Line_Adj_tbl(l_count).parent_adjustment_id := l_implicit_rec.parent_adjustment_id;
4152         x_Line_Adj_tbl(l_count).invoiced_flag := l_implicit_rec.invoiced_flag;
4153         x_Line_Adj_tbl(l_count).estimated_flag := l_implicit_rec.estimated_flag;
4154         x_Line_Adj_tbl(l_count).inc_in_sales_performance := l_implicit_rec.inc_in_sales_performance;
4155         x_Line_Adj_tbl(l_count).split_action_code := l_implicit_rec.split_action_code;
4156         x_Line_Adj_tbl(l_count).charge_type_code := l_implicit_rec.charge_type_code;
4157         x_Line_Adj_tbl(l_count).charge_subtype_code := l_implicit_rec.charge_subtype_code;
4158         x_Line_Adj_tbl(l_count).list_line_no := l_implicit_rec.list_line_no;
4159         x_Line_Adj_tbl(l_count).source_system_code := l_implicit_rec.source_system_code;
4160         x_Line_Adj_tbl(l_count).benefit_qty := l_implicit_rec.benefit_qty;
4161         x_Line_Adj_tbl(l_count).benefit_uom_code := l_implicit_rec.benefit_uom_code;
4162         x_Line_Adj_tbl(l_count).print_on_invoice_flag := l_implicit_rec.print_on_invoice_flag;
4163         x_Line_Adj_tbl(l_count).expiration_date := l_implicit_rec.expiration_date;
4164         x_Line_Adj_tbl(l_count).rebate_transaction_type_code := l_implicit_rec.rebate_transaction_type_code;
4165         x_Line_Adj_tbl(l_count).rebate_transaction_reference := l_implicit_rec.rebate_transaction_reference;
4166         x_Line_Adj_tbl(l_count).rebate_payment_system_code := l_implicit_rec.rebate_payment_system_code;
4167         x_Line_Adj_tbl(l_count).redeemed_date := l_implicit_rec.redeemed_date;
4168         x_Line_Adj_tbl(l_count).redeemed_flag := l_implicit_rec.redeemed_flag;
4169         x_Line_Adj_tbl(l_count).accrual_flag := l_implicit_rec.accrual_flag;
4170      x_Line_Adj_tbl(l_count).range_break_quantity := l_implicit_rec.range_break_quantity;
4171      x_Line_Adj_tbl(l_count).accrual_conversion_rate := l_implicit_rec.accrual_conversion_rate;
4172      x_Line_Adj_tbl(l_count).pricing_group_sequence := l_implicit_rec.pricing_group_sequence;
4173      x_Line_Adj_tbl(l_count).modifier_level_code := l_implicit_rec.modifier_level_code;
4174      x_Line_Adj_tbl(l_count).price_break_type_code := l_implicit_rec.price_break_type_code;
4175      x_Line_Adj_tbl(l_count).substitution_attribute := l_implicit_rec.substitution_attribute;
4176      x_Line_Adj_tbl(l_count).proration_type_code := l_implicit_rec.proration_type_code;
4177      x_Line_Adj_tbl(l_count).credit_or_charge_flag := l_implicit_rec.credit_or_charge_flag;
4178      x_Line_Adj_tbl(l_count).include_on_returns_flag := l_implicit_rec.include_on_returns_flag;
4179         x_Line_Adj_tbl(l_count).ac_attribute1    := l_implicit_rec.AC_ATTRIBUTE1;
4180         x_Line_Adj_tbl(l_count).ac_attribute10   := l_implicit_rec.AC_ATTRIBUTE10;
4181         x_Line_Adj_tbl(l_count).ac_attribute11   := l_implicit_rec.AC_ATTRIBUTE11;
4182         x_Line_Adj_tbl(l_count).ac_attribute12   := l_implicit_rec.AC_ATTRIBUTE12;
4183         x_Line_Adj_tbl(l_count).ac_attribute13   := l_implicit_rec.AC_ATTRIBUTE13;
4184         x_Line_Adj_tbl(l_count).ac_attribute14   := l_implicit_rec.AC_ATTRIBUTE14;
4185         x_Line_Adj_tbl(l_count).ac_attribute15   := l_implicit_rec.AC_ATTRIBUTE15;
4186         x_Line_Adj_tbl(l_count).ac_attribute2    := l_implicit_rec.AC_ATTRIBUTE2;
4187         x_Line_Adj_tbl(l_count).ac_attribute3    := l_implicit_rec.AC_ATTRIBUTE3;
4188         x_Line_Adj_tbl(l_count).ac_attribute4    := l_implicit_rec.AC_ATTRIBUTE4;
4189         x_Line_Adj_tbl(l_count).ac_attribute5    := l_implicit_rec.AC_ATTRIBUTE5;
4190         x_Line_Adj_tbl(l_count).ac_attribute6    := l_implicit_rec.AC_ATTRIBUTE6;
4191         x_Line_Adj_tbl(l_count).ac_attribute7    := l_implicit_rec.AC_ATTRIBUTE7;
4192         x_Line_Adj_tbl(l_count).ac_attribute8    := l_implicit_rec.AC_ATTRIBUTE8;
4193         x_Line_Adj_tbl(l_count).ac_attribute9    := l_implicit_rec.AC_ATTRIBUTE9;
4194         x_Line_Adj_tbl(l_count).ac_context       := l_implicit_rec.AC_CONTEXT;
4195 --uom begin
4196        x_Line_Adj_tbl(l_count).operand_per_pqty := l_implicit_rec.operand_per_pqty;
4197        x_Line_Adj_tbl(l_count).adjusted_amount_per_pqty := l_implicit_rec.adjusted_amount_per_pqty;
4198 --uom end
4199        x_Line_Adj_tbl(l_count).invoiced_amount    := l_implicit_rec.invoiced_amount;
4200        x_Line_Adj_tbl(l_count).orig_sys_discount_ref := l_implicit_rec.orig_sys_discount_ref;
4201         x_Line_Adj_tbl(l_count).lock_control      := l_implicit_rec.LOCK_CONTROL;
4202  -- eBTax Changes
4203         x_Line_Adj_tbl(l_count).tax_rate_id      := l_implicit_rec.tax_Rate_id;
4204 
4205         -- set values for non-DB fields
4206         x_Line_Adj_tbl(l_count).db_flag          := FND_API.G_TRUE;
4207         x_Line_Adj_tbl(l_count).operation        := FND_API.G_MISS_CHAR;
4208         x_Line_Adj_tbl(l_count).return_status    := FND_API.G_MISS_CHAR;
4209 
4210      -- bug 2209746   begin
4211      if (l_entity = 2) then
4212          if  nvl(l_implicit_rec.adjusted_amount,0) <> 0 then
4213 x_line_Adj_tbl(l_count).group_value := abs(l_implicit_rec.operand/l_implicit_rec.adjusted_amount);
4214        end if;
4215      end if;
4216      --bug 2209746    end
4217      --RT{
4218         x_Line_Adj_tbl(l_count).retrobill_request_id:=l_implicit_rec.retrobill_request_id;
4219      --RT}
4220 	   l_count := l_count + 1;
4221 
4222     END LOOP;
4223 
4224     IF l_entity = 1 THEN
4225         CLOSE l_line_adj_csr;
4226     ELSIF l_entity = 2 THEN
4227         CLOSE l_line_adj_csr2;
4228     ELSIF l_entity = 3 THEN
4229         CLOSE l_line_adj_csr3;
4230     ELSIF l_entity = 4 THEN
4231         CLOSE l_line_adj_csr4;
4232     END IF;
4233 
4234     --  PK sent and no rows found
4235 
4236     IF
4237     (p_price_adjustment_id IS NOT NULL
4238      AND
4239      p_price_adjustment_id <> FND_API.G_MISS_NUM)
4240     AND
4241     (x_Line_Adj_tbl.COUNT = 0)
4242     THEN
4243         RAISE NO_DATA_FOUND;
4244     END IF;
4245 
4246 
4247     --  Return fetched table
4248 
4249 EXCEPTION
4250 
4251     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4252         IF l_debug_level  > 0 THEN
4253             oe_debug_pub.add(  G_PKG_NAME||':QUERY_ROW:'||SQLERRM ) ;
4254         END IF;
4255         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4256 
4257     WHEN OTHERS THEN
4258         IF l_debug_level  > 0 THEN
4259             oe_debug_pub.add(  G_PKG_NAME||':QUERY_ROW:'||SQLERRM ) ;
4260         END IF;
4261         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4262         THEN
4263             OE_MSG_PUB.Add_Exc_Msg
4264             (   G_PKG_NAME
4265             ,   'Query_Rows'
4266             );
4267         END IF;
4268 
4269         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4270 
4271 END Query_Rows;
4272 
4273 --  Procedure       lock_Row
4274 
4275 PROCEDURE Lock_Row
4276 ( x_return_status OUT NOCOPY VARCHAR2
4277 
4278 ,   p_x_Line_Adj_rec                IN OUT NOCOPY OE_Order_PUB.Line_Adj_Rec_Type
4279 --                                      := OE_Order_PUB.G_MISS_LINE_ADJ_REC
4280 ,   p_price_adjustment_id           IN  NUMBER
4281                                         := FND_API.G_MISS_NUM
4282 -- ,   x_Line_Adj_rec                  OUT OE_Order_PUB.Line_Adj_Rec_Type
4283 )
4284 IS
4285 l_price_adjustment_id         NUMBER;
4286 l_Line_Adj_rec                OE_Order_PUB.Line_Adj_Rec_Type;
4287 l_lock_control				NUMBER;
4288 
4289 --
4290 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
4291 --
4292 BEGIN
4293 
4294    IF l_debug_level  > 0 THEN
4295        oe_debug_pub.add(  'ENTERING OE_LINE_ADJ_UTIL.LOCK_ROW' , 1 ) ;
4296    END IF;
4297 
4298     SAVEPOINT Lock_Row;
4299 
4300     l_lock_control := NULL;
4301 
4302     -- Retrieve the primary key.
4303     IF p_price_adjustment_id <> FND_API.G_MISS_NUM THEN
4304         l_price_adjustment_id := p_price_adjustment_id;
4305     ELSE
4306         l_price_adjustment_id := p_x_line_adj_rec.price_adjustment_id;
4307 	   l_lock_control := p_x_Line_Adj_rec.lock_control;
4308     END IF;
4309 
4310 
4311     -- added for performance change
4312     SELECT price_adjustment_id
4313     INTO   l_price_adjustment_id
4314     FROM   oe_price_adjustments
4315     WHERE  price_adjustment_id = l_price_adjustment_id
4316     FOR UPDATE NOWAIT;
4317 
4318     IF l_debug_level  > 0 THEN
4319         oe_debug_pub.add(  'SELECTING FOR UPDATE.' , 1 ) ;
4320     END IF;
4321 
4322     OE_Line_Adj_Util.Query_Row
4323     (p_price_adjustment_id	=> l_price_adjustment_id
4324     ,x_Line_Adj_rec 		=> p_x_Line_Adj_rec
4325     );
4326     -- If lock_control is not passed(is null or missing), then return the locked record.
4327 
4328 
4329     IF l_lock_control is null OR
4330        l_lock_control = FND_API.G_MISS_NUM
4331     THEN
4332 
4333         --  Set return status
4334         x_return_status                := FND_API.G_RET_STS_SUCCESS;
4335         p_x_line_adj_rec.return_status     := FND_API.G_RET_STS_SUCCESS;
4336 
4337         -- return for lock by ID.
4338 	RETURN;
4339 
4340     END IF;
4341 
4342     --  Row locked. If the whole record is passed, then
4343     --  Compare lock_control.
4344 
4345     IF l_debug_level  > 0 THEN
4346         oe_debug_pub.add(  'COMPARE ' , 1 ) ;
4347     END IF;
4348 
4349     IF      OE_GLOBALS.Equal(p_x_line_adj_rec.lock_control,
4350                              l_lock_control)
4351     THEN
4352 
4353         --  Row has not changed. Set out parameter.
4354 
4355         IF l_debug_level  > 0 THEN
4356             oe_debug_pub.add(  'LOCKED ROW' , 1 ) ;
4357         END IF;
4358 
4359         --  Set return status
4360 
4361         x_return_status                := FND_API.G_RET_STS_SUCCESS;
4362         p_x_line_adj_rec.return_status       := FND_API.G_RET_STS_SUCCESS;
4363 
4364     ELSE
4365 
4366         --  Row has changed by another user.
4367         IF l_debug_level  > 0 THEN
4368             oe_debug_pub.add(  'ROW CHANGED BY OTHER USER' , 1 ) ;
4369         END IF;
4370 
4371         x_return_status                := FND_API.G_RET_STS_ERROR;
4372         p_x_line_adj_rec.return_status       := FND_API.G_RET_STS_ERROR;
4373 
4374         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
4375         THEN
4376 
4377             -- Release the lock
4378             ROLLBACK TO Lock_Row;
4379 
4380             fnd_message.set_name('ONT','OE_LOCK_ROW_CHANGED');
4381             OE_MSG_PUB.Add;
4382 
4383         END IF;
4384 
4385     END IF;
4386 
4387 EXCEPTION
4388 
4389     WHEN NO_DATA_FOUND THEN
4390 
4391         x_return_status                := FND_API.G_RET_STS_ERROR;
4392         p_x_Line_Adj_rec.return_status   := FND_API.G_RET_STS_ERROR;
4393 
4394         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
4395         THEN
4396 
4397             FND_MESSAGE.SET_NAME('ONT','OE_LOCK_ROW_DELETED');
4398             FND_MSG_PUB.Add;
4399 
4400         END IF;
4401     WHEN APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION THEN
4402 
4403         x_return_status                := FND_API.G_RET_STS_ERROR;
4404         p_x_Line_Adj_rec.return_status   := FND_API.G_RET_STS_ERROR;
4405 
4406         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
4407         THEN
4408 
4409             FND_MESSAGE.SET_NAME('ONT','OE_LOCK_ROW_ALREADY_LOCKED');
4410             FND_MSG_PUB.Add;
4411 
4412         END IF;
4413     WHEN OTHERS THEN
4414 
4415         x_return_status                := FND_API.G_RET_STS_UNEXP_ERROR;
4416         p_x_Line_Adj_rec.return_status   := FND_API.G_RET_STS_UNEXP_ERROR;
4417 
4418         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4419         THEN
4420             OE_MSG_PUB.Add_Exc_Msg
4421             (   G_PKG_NAME
4422             ,   'Lock_Row'
4423             );
4424         END IF;
4425 
4426 END Lock_Row;
4427 
4428 --  Procedure       lock_Rows
4429 
4430 PROCEDURE Lock_Rows
4431 (   p_price_adjustment_id          IN  NUMBER
4432                                        := FND_API.G_MISS_NUM
4433 ,   p_line_id           			IN  NUMBER
4434                                        := FND_API.G_MISS_NUM
4435 ,   x_Line_Adj_tbl                  OUT NOCOPY OE_Order_PUB.Line_Adj_Tbl_Type
4436 , x_return_status OUT NOCOPY VARCHAR2
4437 
4438 )
4439 IS
4440 
4441   CURSOR lock_adj_lines(p_line_id IN NUMBER) IS
4442   SELECT price_adjustment_id
4443   FROM   oe_price_adjustments
4444   WHERE  line_id = p_line_id
4445   FOR UPDATE NOWAIT;
4446 
4447   l_price_adjustment_id         NUMBER;
4448   l_Line_Adj_tbl                OE_Order_PUB.Line_Adj_Tbl_Type;
4449   l_lock_control			  NUMBER;
4450 
4451 --
4452 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
4453 --
4454 BEGIN
4455 
4456   IF l_debug_level  > 0 THEN
4457       oe_debug_pub.add(  'ENTERING OE_LINE_ADJ_UTIL.LOCK_ROWS.' , 1 ) ;
4458   END IF;
4459 
4460   IF (p_price_adjustment_id IS NOT NULL AND
4461 	 p_price_adjustment_id <> FND_API.G_MISS_NUM) AND
4462      (p_line_id IS NOT NULL AND
4463 	 p_line_id <> FND_API.G_MISS_NUM)
4464   THEN
4465     IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
4466 	 OE_MSG_PUB.Add_Exc_Msg
4467 	 (  G_PKG_NAME
4468 	 ,  'Lock_Rows'
4469 	 ,  'Keys are mutually exclusive: price_adjustment_id = ' ||
4470 	    p_price_adjustment_id || ', line_id = ' || p_line_id );
4471     END IF;
4472 
4473     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4474   END IF;
4475 
4476   IF p_price_adjustment_id <> FND_API.G_MISS_NUM THEN
4477 
4478     SELECT price_adjustment_id
4479     INTO   l_price_adjustment_id
4480     FROM   oe_price_adjustments
4481     WHERE  price_adjustment_id = p_price_adjustment_id
4482     FOR UPDATE NOWAIT;
4483   END IF;
4484 
4485   -- null line_id shouldn't be passed in unnecessarily if
4486   -- price_adjustment_id is passed in already.
4487   BEGIN
4488     IF p_line_id <> FND_API.G_MISS_NUM THEN
4489 	 SAVEPOINT LOCK_ROWS;
4490 	 OPEN lock_adj_lines(p_line_id);
4491 
4492 	 LOOP
4493 	   FETCH lock_adj_lines INTO l_price_adjustment_id;
4494 	   EXIT WHEN lock_adj_lines%NOTFOUND;
4495       END LOOP;
4496       CLOSE lock_adj_lines;
4497     END IF;
4498   EXCEPTION
4499     WHEN OTHERS THEN
4500 	 ROLLBACK TO LOCK_ROWS;
4501 
4502 	 IF lock_adj_lines%ISOPEN THEN
4503         CLOSE lock_adj_lines;
4504       END IF;
4505 
4506 	 RAISE;
4507   END;
4508 
4509   OE_Line_Adj_Util.Query_Rows
4510   ( p_price_adjustment_id	=> p_price_adjustment_id
4511   , p_line_id				=> p_line_id
4512   , x_Line_Adj_tbl			=> x_Line_Adj_tbl
4513   );
4514 
4515   x_return_status := FND_API.G_RET_STS_SUCCESS;
4516 
4517   EXCEPTION
4518     WHEN NO_DATA_FOUND THEN
4519       x_return_status                := FND_API.G_RET_STS_ERROR;
4520       IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
4521       THEN
4522         fnd_message.set_name('ONT','OE_LOCK_ROW_DELETED');
4523         OE_MSG_PUB.Add;
4524       END IF;
4525 
4526      WHEN APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION THEN
4527        x_return_status                := FND_API.G_RET_STS_ERROR;
4528        IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_ERROR)
4529        THEN
4530          fnd_message.set_name('ONT','OE_LOCK_ROW_ALREADY_LOCKED');
4531          OE_MSG_PUB.Add;
4532        END IF;
4533 
4534      WHEN OTHERS THEN
4535         x_return_status                := FND_API.G_RET_STS_UNEXP_ERROR;
4536        IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4537        THEN
4538          OE_MSG_PUB.Add_Exc_Msg
4539          (   G_PKG_NAME
4540           ,   'Lock_Row'
4541          );
4542        END IF;
4543 
4544    IF l_debug_level  > 0 THEN
4545        oe_debug_pub.add(  'EXITING OE_LINE_ADJ_UTIL.LOCK_ROWS.' , 1 ) ;
4546    END IF;
4547 
4548 END Lock_Rows;
4549 
4550 PROCEDURE Log_Adj_Requests
4551 ( x_return_status OUT NOCOPY VARCHAR2
4552 
4553 , p_adj_rec		IN	OE_order_pub.Line_Adj_Rec_Type
4554 , p_old_adj_rec		IN	OE_order_pub.Line_Adj_Rec_Type
4555 , p_delete_flag		IN	BOOLEAN DEFAULT FALSE
4556   ) IS
4557 BEGIN
4558 
4559    x_return_status := FND_API.G_RET_STS_SUCCESS;
4560 
4561    -- if the adjustment_id changed or the percent changed
4562    -- or discount or discount_line has changed
4563 
4564     IF (  (p_adj_rec.price_adjustment_id <> p_old_adj_rec.price_adjustment_id
4565 	   OR
4566 	   p_old_adj_rec.price_adjustment_id IS NULL)
4567 	OR
4568 	  (p_adj_rec.operand <> p_old_adj_rec.operand
4569 	   OR
4570 	   p_old_adj_rec.operand IS NULL)
4571 	OR
4572 	  (p_adj_rec.list_line_id <> p_old_adj_rec.list_line_id
4573 	   OR
4574 	   p_old_adj_rec.list_line_id IS NULL)
4575 	OR
4576 	  (p_adj_rec.list_header_id <> p_old_adj_rec.list_header_id
4577 	   OR
4578 	   p_old_adj_rec.list_header_id IS NULL)
4579 	OR
4580 	  p_delete_flag)
4581       THEN
4582 
4583 	  /*
4584        oe_delayed_requests_pvt.log_request(p_entity_code	=> OE_GLOBALS.G_ENTITY_LINE_ADJ,
4585 		   p_entity_id		=> p_adj_rec.line_id,
4586 		   p_requesting_entity_code        => OE_GLOBALS.G_ENTITY_LINE_ADJ,
4587                    p_requesting_entity_id          => p_adj_rec.price_adjustment_id,
4588 		   p_request_type	=> OE_GLOBALS.G_PRICE_ADJ,
4589 		   x_return_status	=> x_return_status);
4590 		   */
4591 		   null;
4592 
4593     END IF;
4594 
4595 END Log_Adj_Requests;
4596 
4597 --  Function Get_Values
4598 
4599 FUNCTION Get_Values
4600 (   p_Line_Adj_rec                  IN  OE_Order_PUB.Line_Adj_Rec_Type
4601 ,   p_old_Line_Adj_rec              IN  OE_Order_PUB.Line_Adj_Rec_Type :=
4602                                         OE_Order_PUB.G_MISS_LINE_ADJ_REC
4603 ) RETURN OE_Order_PUB.Line_Adj_Val_Rec_Type
4604 IS
4605 l_Line_Adj_val_rec            OE_Order_PUB.Line_Adj_Val_Rec_Type;
4606 BEGIN
4607 
4608     IF (p_Line_Adj_rec.discount_id IS NULL OR
4609         p_Line_Adj_rec.discount_id <> FND_API.G_MISS_NUM) AND
4610         NOT OE_GLOBALS.Equal(p_Line_Adj_rec.discount_id,
4611         p_old_Line_Adj_rec.discount_id)
4612     THEN
4613         l_Line_Adj_val_rec.discount := OE_Id_To_Value.Discount
4614         (   p_discount_id                 => p_Line_Adj_rec.discount_id
4615         );
4616     END IF;
4617 
4618     RETURN l_Line_Adj_val_rec;
4619 
4620 END Get_Values;
4621 
4622 --  Procedure Get_Ids
4623 
4624 PROCEDURE Get_Ids
4625 (   p_x_Line_Adj_rec                IN OUT NOCOPY OE_Order_PUB.Line_Adj_Rec_Type
4626 ,   p_Line_Adj_val_rec              IN  OE_Order_PUB.Line_Adj_Val_Rec_Type
4627 )
4628 IS
4629 l_Line_Adj_rec                OE_Order_PUB.Line_Adj_Rec_Type;
4630 BEGIN
4631 
4632     --  initialize  return_status.
4633 
4634     l_Line_Adj_rec.return_status := FND_API.G_RET_STS_SUCCESS;
4635 
4636     --  initialize l_Line_Adj_rec.
4637 
4638     l_Line_Adj_rec := p_x_Line_Adj_rec;
4639 
4640     IF  p_Line_Adj_val_rec.discount <> FND_API.G_MISS_CHAR
4641     THEN
4642 
4643         IF p_x_Line_Adj_rec.discount_id <> FND_API.G_MISS_NUM THEN
4644 
4645             l_Line_Adj_rec.discount_id := p_x_Line_Adj_rec.discount_id;
4646 
4647             IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_SUCCESS)
4648             THEN
4649 
4650                 FND_MESSAGE.SET_NAME('ONT','OE_BOTH_VAL_AND_ID_EXIST');
4651                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','discount');
4652                 FND_MSG_PUB.Add;
4653 
4654             END IF;
4655 
4656         ELSE
4657 
4658             l_Line_Adj_rec.discount_id := OE_Value_To_Id.discount
4659             (   p_discount                    => p_Line_Adj_val_rec.discount
4660             );
4661 
4662             IF l_Line_Adj_rec.discount_id = FND_API.G_MISS_NUM THEN
4663                 l_Line_Adj_rec.return_status := FND_API.G_RET_STS_ERROR;
4664             END IF;
4665 
4666         END IF;
4667 
4668     END IF;
4669 
4670 
4671     -- RETURN l_Line_Adj_rec;
4672     p_x_Line_Adj_rec := l_Line_Adj_rec;
4673 
4674 END Get_Ids;
4675 
4676 -- This function converts a Header adj record to a Line Adjustment record
4677 Function Convert_Hdr_Adj_To_Line_Adj
4678 ( p_header_adj_rec IN OE_Order_PUB.Header_adj_rec_type)
4679 RETURN OE_Order_PUB.Line_Adj_Rec_Type
4680 IS
4681 l_line_adj_rec OE_Order_PUB.Line_Adj_Rec_Type;
4682 BEGIN
4683 
4684         l_line_adj_rec.attribute1        := p_header_adj_rec.attribute1;
4685         l_line_adj_rec.attribute10       := p_header_adj_rec.attribute10;
4686         l_line_adj_rec.attribute11       := p_header_adj_rec.attribute11;
4687         l_line_adj_rec.attribute12       := p_header_adj_rec.attribute12;
4688         l_line_adj_rec.attribute13       := p_header_adj_rec.attribute13;
4689         l_line_adj_rec.attribute14       := p_header_adj_rec.attribute14;
4690         l_line_adj_rec.attribute15       := p_header_adj_rec.attribute15;
4691         l_line_adj_rec.attribute2        := p_header_adj_rec.attribute2;
4692         l_line_adj_rec.attribute3        := p_header_adj_rec.attribute3;
4693         l_line_adj_rec.attribute4        := p_header_adj_rec.attribute4;
4694         l_line_adj_rec.attribute5        := p_header_adj_rec.attribute5;
4695         l_line_adj_rec.attribute6        := p_header_adj_rec.attribute6;
4696         l_line_adj_rec.attribute7        := p_header_adj_rec.attribute7;
4697         l_line_adj_rec.attribute8        := p_header_adj_rec.attribute8;
4698         l_line_adj_rec.attribute9        := p_header_adj_rec.attribute9;
4699         l_line_adj_rec.automatic_flag    :=p_header_adj_rec.automatic_flag;
4700         l_line_adj_rec.context         := p_header_adj_rec.context;
4701         l_line_adj_rec.created_by        := p_header_adj_rec.created_by;
4702         l_line_adj_rec.creation_date     := p_header_adj_rec.creation_date;
4703         l_line_adj_rec.discount_id       := p_header_adj_rec.discount_id;
4704         l_line_adj_rec.discount_line_id:=p_header_adj_rec.discount_line_id;
4705         l_line_adj_rec.header_id         := p_header_adj_rec.header_id;
4706         l_line_adj_rec.last_updated_by := p_header_adj_rec.last_updated_by;
4707         l_line_adj_rec.last_update_date:= p_header_adj_rec.last_update_date;
4708         l_line_adj_rec.last_update_login:= p_header_adj_rec.last_update_login;
4709         l_line_adj_rec.line_id         := p_header_adj_rec.line_id;
4710         l_line_adj_rec.percent         := p_header_adj_rec.percent;
4711         l_line_adj_rec.price_adjustment_id        := p_header_adj_rec.price_adjustment_id;
4712         l_line_adj_rec.program_application_id := p_header_adj_rec.program_application_id;
4713         l_line_adj_rec.program_id               := p_header_adj_rec.program_id;
4714         l_line_adj_rec.program_update_date        := p_header_adj_rec.program_update_date;
4715         l_line_adj_rec.request_id               := p_header_adj_rec.request_id;
4716         l_line_adj_rec.return_status            := p_header_adj_rec.return_status;
4717         l_line_adj_rec.db_flag                := p_header_adj_rec.db_flag;
4718         l_line_adj_rec.operation                := p_header_adj_rec.operation;
4719     l_line_adj_rec.list_header_id	:= p_header_adj_rec.list_header_id;
4720     l_line_adj_rec.list_line_id	:= p_header_adj_rec.list_line_id;
4721     l_line_adj_rec.list_line_type_code	:= p_header_adj_rec.list_line_type_code;
4722     l_line_adj_rec.modifier_mechanism_type_code	:= p_header_adj_rec.modifier_mechanism_type_code;
4723     l_line_adj_rec.modified_from	:= p_header_adj_rec.modified_from;
4724     l_line_adj_rec.modified_to	:= p_header_adj_rec.modified_to;
4725     l_line_adj_rec.updated_flag	:= p_header_adj_rec.updated_flag;
4726     l_line_adj_rec.update_allowed	:= p_header_adj_rec.update_allowed;
4727     l_line_adj_rec.applied_flag	:= p_header_adj_rec.applied_flag;
4728     l_line_adj_rec.change_reason_code	:= p_header_adj_rec.change_reason_code;
4729     l_line_adj_rec.change_reason_text	:= p_header_adj_rec.change_reason_text;
4730     l_line_adj_rec.operand	:= p_header_adj_rec.operand;
4731     l_line_adj_rec.operand_per_pqty	:= p_header_adj_rec.operand_per_pqty;
4732     l_line_adj_rec.arithmetic_operator	:= p_header_adj_rec.arithmetic_operator;
4733     l_line_adj_rec.adjusted_amount	:= p_header_adj_rec.adjusted_amount;
4734     l_line_adj_rec.adjusted_amount_per_pqty	:= p_header_adj_rec.adjusted_amount_per_pqty;
4735     l_line_adj_rec.pricing_phase_id	:= p_header_adj_rec.pricing_phase_id;
4736     l_line_adj_rec.cost_id     := p_header_adj_rec.cost_id;
4737 	l_line_adj_rec.tax_code    := p_header_adj_rec.tax_code;
4738 	l_line_adj_rec.tax_exempt_flag := p_header_adj_rec.tax_exempt_flag;
4739 	l_line_adj_rec.tax_exempt_number := p_header_adj_rec.tax_exempt_number;
4740 	l_line_adj_rec.tax_exempt_reason_code := p_header_adj_rec.tax_exempt_reason_code;
4741 	l_line_adj_rec.parent_adjustment_id := p_header_adj_rec.parent_adjustment_id;
4742 	l_line_adj_rec.invoiced_flag := p_header_adj_rec.invoiced_flag;
4743 	l_line_adj_rec.estimated_flag := p_header_adj_rec.estimated_flag;
4744 	l_line_adj_rec.inc_in_sales_performance := p_header_adj_rec.inc_in_sales_performance;
4745 	l_line_adj_rec.split_action_code := p_header_adj_rec.split_action_code;
4746 	l_line_adj_rec.charge_type_code := p_header_adj_rec.charge_type_code;
4747 	l_line_adj_rec.charge_subtype_code := p_header_adj_rec.charge_subtype_code;
4748 
4749 	l_line_adj_rec.adjusted_amount := p_header_adj_rec.adjusted_amount;
4750 	l_line_adj_rec.pricing_phase_id := p_header_adj_rec.pricing_phase_id;
4751 	l_line_adj_rec.list_line_no := p_header_adj_rec.list_line_no;
4752 	l_line_adj_rec.source_system_code := p_header_adj_rec.source_system_code;
4753 	l_line_adj_rec.benefit_qty := p_header_adj_rec.benefit_qty;
4754 	l_line_adj_rec.benefit_uom_code := p_header_adj_rec.benefit_uom_code;
4755 	l_line_adj_rec.print_on_invoice_flag := p_header_adj_rec.print_on_invoice_flag;
4756 	l_line_adj_rec.expiration_date := p_header_adj_rec.expiration_date;
4757 	l_line_adj_rec.rebate_transaction_type_code := p_header_adj_rec.rebate_transaction_type_code;
4758 	l_line_adj_rec.rebate_transaction_reference := p_header_adj_rec.rebate_transaction_reference;
4759 	l_line_adj_rec.rebate_payment_system_code := p_header_adj_rec.rebate_payment_system_code;
4760 	l_line_adj_rec.redeemed_date := p_header_adj_rec.redeemed_date;
4761 	l_line_adj_rec.redeemed_flag := p_header_adj_rec.redeemed_flag;
4762 	l_line_adj_rec.accrual_flag := p_header_adj_rec.accrual_flag;
4763 	l_line_adj_rec.range_break_quantity := p_header_adj_rec.range_break_quantity;
4764 	l_line_adj_rec.accrual_conversion_rate := p_header_adj_rec.accrual_conversion_rate;
4765 	l_line_adj_rec.pricing_group_sequence := p_header_adj_rec.pricing_group_sequence;
4766 	l_line_adj_rec.modifier_level_code := p_header_adj_rec.modifier_level_code;
4767 	l_line_adj_rec.price_break_type_code := p_header_adj_rec.price_break_type_code;
4768 	l_line_adj_rec.substitution_attribute := p_header_adj_rec.substitution_attribute;
4769 	l_line_adj_rec.proration_type_code := p_header_adj_rec.proration_type_code;
4770 	l_line_adj_rec.credit_or_charge_flag := p_header_adj_rec.credit_or_charge_flag;
4771 	l_line_adj_rec.include_on_returns_flag := p_header_adj_rec.include_on_returns_flag;
4772         l_line_adj_rec.ac_attribute1        := p_header_adj_rec.ac_attribute1;
4773         l_line_adj_rec.ac_attribute10       := p_header_adj_rec.ac_attribute10;
4774         l_line_adj_rec.ac_attribute11       := p_header_adj_rec.ac_attribute11;
4775         l_line_adj_rec.ac_attribute12       := p_header_adj_rec.ac_attribute12;
4776         l_line_adj_rec.ac_attribute13       := p_header_adj_rec.ac_attribute13;
4777         l_line_adj_rec.ac_attribute14       := p_header_adj_rec.ac_attribute14;
4778         l_line_adj_rec.ac_attribute15       := p_header_adj_rec.ac_attribute15;
4779         l_line_adj_rec.ac_attribute2        := p_header_adj_rec.ac_attribute2;
4780         l_line_adj_rec.ac_attribute3        := p_header_adj_rec.ac_attribute3;
4781         l_line_adj_rec.ac_attribute4        := p_header_adj_rec.ac_attribute4;
4782         l_line_adj_rec.ac_attribute5        := p_header_adj_rec.ac_attribute5;
4783         l_line_adj_rec.ac_attribute6        := p_header_adj_rec.ac_attribute6;
4784         l_line_adj_rec.ac_attribute7        := p_header_adj_rec.ac_attribute7;
4785         l_line_adj_rec.ac_attribute8        := p_header_adj_rec.ac_attribute8;
4786         l_line_adj_rec.ac_attribute9        := p_header_adj_rec.ac_attribute9;
4787         l_line_adj_rec.ac_context           := p_header_adj_rec.ac_context;
4788         l_line_adj_rec.invoiced_amount      := p_header_adj_rec.invoiced_amount;
4789 
4790       RETURN l_line_adj_rec;
4791 
4792 END Convert_Hdr_Adj_To_Line_Adj;
4793 
4794 Procedure Append_Adjustment_Attribs(
4795 				px_Line_Adj_Att_Tbl    in out nocopy OE_Order_Pub.line_adj_att_tbl_Type
4796 				,p_price_adjustment_id	number
4797 				,p_adj_index			pls_integer
4798 				)
4799 is
4800 l_Line_Adj_Att_Tbl    	OE_Order_Pub.line_adj_att_tbl_Type;
4801 i					pls_integer;
4802 begin
4803 
4804 		Oe_Line_Price_Aattr_util.Query_Rows(
4805 						p_price_adjustment_id => p_price_adjustment_id
4806 						, x_Line_Adj_Att_Tbl  => l_Line_Adj_Att_Tbl
4807 						);
4808 
4809 		i:= L_Line_Adj_Att_Tbl.First;
4810 		While i is not null loop
4811 
4812 			L_Line_Adj_Att_Tbl(i).operation := OE_GLOBALS.G_OPR_CREATE;
4813 			L_Line_Adj_Att_Tbl(i).price_adjustment_id := fnd_api.g_miss_num;
4814 			L_Line_Adj_Att_Tbl(i).adj_index := p_adj_index;
4815 			L_Line_Adj_Att_Tbl(i).price_adj_attrib_id := fnd_api.g_miss_num;
4816 
4817 			px_Line_Adj_Att_Tbl(px_Line_Adj_Att_Tbl.count+1) := L_Line_Adj_Att_Tbl(i);
4818 
4819 	  	i:= L_Line_Adj_Att_Tbl.Next(i);
4820 
4821 		end loop;
4822 
4823 end Append_Adjustment_Attribs;
4824 
4825 Procedure Prorate_Lumpsum (
4826 px_line_adj_rec  IN OUT NOCOPY OE_Order_Pub.Line_AdJ_Rec_Type
4827 ,  p_to_line_id     IN NUMBER
4828 , x_copy_from_line_adj_rec OUT NOCOPY OE_Order_Pub.Line_Adj_Rec_Type
4829 
4830 )
4831 IS
4832 l_ordered_quantity              NUMBER;
4833 l_sign                          NUMBER;
4834 l_pricing_quantity              NUMBER;
4835 --
4836 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
4837 --
4838 Begin
4839   IF l_debug_level  > 0 THEN
4840       oe_debug_pub.add(  'ENTERING PROCEDURE PRORATE_LUMPSUM' ) ;
4841   END IF;
4842 
4843   If px_line_adj_rec.operand = 0 or px_line_adj_rec.operand is null Then
4844     IF l_debug_level  > 0 THEN
4845         oe_debug_pub.add(  ' NOTHING TO PRORATE , OPERAND IS 0' ) ;
4846     END IF;
4847     x_copy_from_line_adj_rec.operation := OE_GLOBALS.G_OPR_NONE;
4848     Return;
4849   End If;
4850 
4851   IF (px_line_adj_rec.list_line_type_code='DIS') THEN
4852     l_sign := -1;
4853   ELSE
4854     l_sign := 1;
4855   END IF;
4856 
4857    -- First correct the copy_from line adj record
4858    SELECT ordered_quantity,pricing_quantity
4859      INTO l_ordered_quantity,
4860           l_pricing_quantity
4861      FROM oe_order_lines_all
4862     WHERE  line_id = px_line_adj_rec.line_id;
4863 
4864    If (round(abs(px_line_adj_rec.operand) -
4865              abs(l_ordered_quantity * px_line_adj_rec.adjusted_amount/ px_line_adj_rec.operand),20))
4866      <> 0
4867    THEN
4868       IF l_debug_level  > 0 THEN
4869           oe_debug_pub.add(  'OPERAND'||PX_LINE_ADJ_REC.OPERAND ||'<>'||L_ORDERED_QUANTITY||'*'||PX_LINE_ADJ_REC.ADJUSTED_AMOUNT ) ;
4870       END IF;
4871 
4872      x_copy_from_line_adj_rec := px_line_adj_rec;
4873      x_copy_from_line_adj_rec.operation := oe_globals.g_opr_update;
4874      x_copy_from_line_adj_rec.operand := l_ordered_quantity
4875            * x_copy_from_line_adj_rec.adjusted_amount * l_sign;
4876 
4877 
4878      x_copy_from_line_adj_rec.operand_per_pqty := l_pricing_quantity
4879            *x_copy_from_line_adj_rec.adjusted_amount_per_pqty*l_sign;
4880 
4881      x_copy_from_line_adj_rec.operand_per_pqty:=nvl(x_copy_from_line_adj_rec.operand_per_pqty,
4882                                                    x_copy_from_line_adj_rec.operand);
4883 
4884      IF l_debug_level  > 0 THEN
4885          oe_debug_pub.add(  ' PRORATED ADJUSTED_AMOUNT_PER_PQTY:'||X_COPY_FROM_LINE_ADJ_REC.ADJUSTED_AMOUNT_PER_PQTY ) ;
4886          oe_debug_pub.add(  ' PRORATED ADJUSTED_AMOUNT:'||X_COPY_FROM_LINE_ADJ_REC.ADJUSTED_AMOUNT ) ;
4887      END IF;
4888 
4889   ELSE
4890      x_copy_from_line_adj_rec.operation := OE_GLOBALS.G_OPR_NONE;
4891   END IF;
4892 
4893    -- Then correct the copy_to line adj record
4894    SELECT ordered_quantity
4895      INTO l_ordered_quantity
4896      FROM oe_order_lines_all
4897     WHERE  line_id = p_to_line_id;
4898 
4899   IF (round(abs(px_line_adj_rec.operand) -
4900              abs(l_ordered_quantity * px_line_adj_rec.adjusted_amount/ px_line_adj_rec.operand),20))
4901      <> 0
4902 
4903    THEN
4904 
4905      px_line_adj_rec.operand := l_ordered_quantity
4906                                 * px_line_adj_rec.adjusted_amount
4907                                 * l_sign;
4908 
4909      px_line_adj_rec.operand_per_pqty := NULL;
4910 
4911   END IF;
4912 
4913  IF l_debug_level  > 0 THEN
4914      oe_debug_pub.add(  'LEAVING PROCEDURE PRORATE_LUMPSUM' ) ;
4915  END IF;
4916   EXCEPTION
4917 
4918     WHEN OTHERS THEN
4919 
4920         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4921         THEN
4922             OE_MSG_PUB.Add_Exc_Msg
4923             (   G_PKG_NAME
4924             ,   'Update_Row'
4925             );
4926         END IF;
4927        IF l_debug_level  > 0 THEN
4928            oe_debug_pub.add(  'EXCEPTION IN PRORATE_LUMPSUM'||SQLERRM , 2 ) ;
4929        END IF;
4930         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4931 
4932 End Prorate_Lumpsum;
4933 
4934 Procedure Append_Adjustment_Lines(
4935 				p_header_id 			Number default null,
4936 				p_line_id 			Number default null,
4937 				p_to_line_id 			Number default null,
4938 				p_to_header_id 		        Number default null,
4939 				p_operation			varchar2,
4940 				p_line_category_code	        varchar2,
4941                                 p_split_by                      varchar2 default null,
4942 				px_Line_Adj_Att_Tbl    in out nocopy OE_Order_Pub.line_adj_att_tbl_Type,
4943 				px_Line_Adj_Tbl in out nocopy OE_Order_Pub.Line_Adj_Tbl_Type,
4944                                 px_line_adj_assoc_tbl in out nocopy  OE_Order_PUB.Line_Adj_Assoc_tbl_type,
4945                                 --RT{
4946                                 p_mode                          varchar2 default null,
4947                                 p_retrobill_request_id in Varchar2 default null,
4948                                 p_key_line_id in Number default null
4949                                 --RT}
4950                                 )
4951 is
4952 l_Line_Adj_Tbl			OE_Order_Pub.Line_Adj_Tbl_Type;
4953 i					pls_integer;
4954 l_has_pbh                       VARCHAR2(1):='N';
4955 l_pbh_tbl                       Pbh_Tbl_Type;
4956 cnt                             Pls_Integer:=0;
4957 l_copy_from_line_adj_rec        OE_Order_pub.Line_Adj_Rec_Type;
4958 --
4959 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
4960 --
4961 l_from_line_category            VARCHAR2(100);
4962 --RT{
4963 l_ulp NUMBER;
4964 cursor get_ulp(p_line_id IN NUMBER) IS
4965 SELECT UNIT_LIST_PRICE
4966 FROM   OE_ORDER_LINES_ALL
4967 WHERE  LINE_ID = p_line_id;
4968 l_sign PLS_INTEGER:=1;
4969 l_line_id NUMBER;
4970 l_header_id NUMBER;
4971 l_has_retrobilled_before Varchar2(1):='N';
4972 --RT}
4973 l_charges_for_backorders     VARCHAR2(1):=NVL(FND_PROFILE.VALUE('ONT_CHARGES_FOR_BACKORDERS'),'N');
4974 begin
4975 
4976 	IF l_debug_level  > 0 THEN
4977 	    oe_debug_pub.add(  'ENTERING OE_LINE_ADJ_UTIL.APPEND_ADJUSTMENT_LINES' , 1 ) ;
4978             oe_debug_pub.add(' operation:'|| p_operation);
4979 	END IF;
4980 
4981 
4982     -- Manish Changes
4983    if p_line_id is not null then
4984 
4985       IF OE_CODE_CONTROL.Get_Code_Release_Level >= '110510' and
4986          p_operation <> OE_GLOBALS.G_OPR_DELETE  THEN
4987           --RT{
4988            --we need to retrieve the latest adjustments if it is a retrobilled line
4989            --call retrobill api to get the retrobill line id, if none l_line_id will
4990            --set to the same value as p_line_id
4991 
4992           Oe_Retrobill_Pvt.Get_Last_Retro_LinID(p_line_id=>p_line_id,
4993                                                 x_line_id=>l_line_id);
4994 
4995           if nvl(p_line_id,-1) <> nvl(l_line_id,-1) then
4996            --Old id and new id difference, line has been retrobilled multiple times
4997            --new id is actullay a retrobill line, not a regular line.
4998            --we just need to copy adjustment with retrobill_request_id is not null
4999            --from this retrobill line over.
5000            l_has_retrobilled_before:='Y';
5001           end if;
5002 
5003           --RT}
5004           OE_Version_History_Util.Query_Rows
5005             (  p_line_id => l_line_id
5006              , p_version_number => OE_ORDER_COPY_UTIL.G_LN_VER_NUMBER
5007              , p_phase_change_flag => OE_ORDER_COPY_UTIL.G_LN_PHASE_CHANGE_FLAG
5008 			 , x_Line_Adj_Tbl => l_Line_Adj_Tbl);
5009 
5010           If l_debug_level > 0 Then
5011            oe_debug_pub.add(' input line id to retro api:'||p_line_id||' output line id:'|| l_line_id);
5012            oe_debug_pub.add(' l_line_adj_tbl.count from versioning:'|| l_Line_Adj_Tbl.count);
5013           End If;
5014 
5015       ELSE
5016               oe_debug_pub.add('pre 11510, using old query row');
5017 	      OE_Line_Adj_Util.Query_Rows(p_Line_Id => p_line_id
5018 					        , x_Line_Adj_Tbl => l_Line_Adj_Tbl);
5019       END IF;
5020 
5021    else
5022 	--	l_Line_Adj_Tbl := OE_Line_Adj_Util.Query_Rows(p_header_Id => p_header_id);
5023       IF OE_CODE_CONTROL.Get_Code_Release_Level >= '110510' and
5024          p_operation <> OE_GLOBALS.G_OPR_DELETE  THEN
5025            --RT{
5026            Oe_Retrobill_Pvt.Get_Last_Retro_HdrID(p_header_id=>p_header_id,
5027                                            x_header_id=>l_header_id);
5028           if nvl(p_header_id,-1) <> nvl(l_header_id,-1) then
5029            l_has_retrobilled_before:='Y';
5030           end if;
5031            --RT}
5032 
5033           OE_Version_History_Util.Query_Rows
5034             (  p_header_id => l_header_id
5035              , p_version_number => OE_ORDER_COPY_UTIL.G_LN_VER_NUMBER
5036              , p_phase_change_flag => OE_ORDER_COPY_UTIL.G_LN_PHASE_CHANGE_FLAG
5037 			 , x_Line_Adj_Tbl => l_Line_Adj_Tbl);
5038 
5039           If l_debug_level > 0 Then
5040            oe_debug_pub.add(' input Header id to retro api:'||p_header_id||' output Header id:'|| l_header_id);
5041            oe_debug_pub.add(' l_line_adj_tbl.count from versioning:'|| l_Line_Adj_Tbl.count);
5042           End If;
5043 
5044       ELSE
5045 	      OE_Line_Adj_Util.Query_Rows(p_header_Id => p_header_id
5046 						   , x_Line_Adj_Tbl => l_Line_Adj_Tbl);
5047       END IF;
5048 	End If;
5049 
5050 	i:= l_Line_Adj_Tbl.First;
5051 	While i is not Null Loop
5052 
5053 
5054 	If p_operation = OE_GLOBALS.G_OPR_DELETE then
5055 
5056 	  l_Line_Adj_Tbl(i).operation := p_operation;
5057 	  px_line_adj_tbl(px_line_adj_tbl.count+1) := L_Line_Adj_Tbl(i);
5058 
5059 	Else
5060 
5061 	  /* Modified IF condition to process only Line Level Freight Charges for Bug # 1559906 */
5062           -- bug 1937110, added type 'IUE'.
5063           oe_debug_pub.add('Retro:list line type code:'||l_Line_Adj_Tbl(i).list_line_type_code);
5064 
5065           --RT{
5066           IF NOT(nvl(p_mode,'xx-') = 'RETROBILL' and l_Line_Adj_Tbl(i).list_line_type_code = 'FREIGHT_CHARGE') AND
5067              NOT (l_has_retrobilled_before = 'Y' and l_line_adj_tbl(i).retrobill_request_id IS NULL)
5068           THEN
5069           --skip processing, freigh charge is not supported for retrobilling
5070           --skip processing if we copy adjustment from a retrobill order and retrobill request id is null
5071           --we just want to copy over where retrobill request id is not null if it is a retrobill line
5072           --RT}
5073 	  If (l_Line_Adj_Tbl(i).list_line_type_code in ('DIS','SUR', 'PBH', 'IUE'))
5074 	  or (l_Line_Adj_Tbl(i).list_line_type_code = 'FREIGHT_CHARGE' and l_Line_Adj_Tbl(i).line_id is not null) then
5075                 If l_line_adj_tbl(i).list_line_type_code = 'PBH' Then
5076                    l_has_pbh := 'Y';
5077                    --l_pbh_tbl store the index that has pbh adj line
5078                    cnt := cnt + 1;
5079                     l_pbh_tbl(cnt):=px_line_adj_tbl.count+1;
5080                 End If;
5081                 -- FP bug3337324
5082                  -- changed for the bug 3479388
5083 		If l_Line_Adj_Tbl(i).list_line_type_code ='FREIGHT_CHARGE' and
5084 			(p_line_category_code = 'RETURN' and
5085 			(NVL(l_Line_Adj_Tbl(i).include_on_returns_flag,'N') <> 'Y' OR
5086 			 NVL(l_Line_Adj_Tbl(i).applied_flag,'N') = 'N' )) OR
5087                          (p_split_by = 'SYSTEM' and l_charges_for_backorders = 'N' and
5088                           l_line_adj_tbl(i).arithmetic_operator = 'LUMPSUM') then
5089                          oe_debug_pub.add('No Charges are Copied');
5090 			Null;
5091 		Else
5092 
5093                   -- prorate lumpsum
5094                   IF (l_line_adj_tbl(i).modifier_level_code='LINE'
5095                   and l_line_adj_tbl(i).arithmetic_operator = 'LUMPSUM')
5096                   THEN
5097                                           IF l_debug_level  > 0 THEN
5098                                               oe_debug_pub.add(  ' P_HEADER_ID:'||P_HEADER_ID|| 'P_TO_HEADER_ID:'||P_TO_HEADER_ID ) ;
5099                            oe_debug_pub.add(  ' P_SPLIT_BY:'||P_SPLIT_BY ) ;
5100                        END IF;
5101                        --BTEA
5102                        --Only when split we need to do this.
5103                        --during split we will have same to_ and from_ header_id
5104                        --and split_by column is not null
5105                        If p_to_header_id = p_header_id
5106                           AND p_split_by is Not NULL
5107                        Then
5108                          -- added for the bug 3479388
5109 			IF NOT (p_split_by = 'SYSTEM' and l_charges_for_backorders = 'Y'
5110 			      and l_Line_Adj_Tbl(i).list_line_type_code = 'FREIGHT_CHARGE') THEN -- 7363214
5111                          Prorate_Lumpsum(l_line_adj_tbl(i),
5112                                          p_to_line_id,
5113                                          l_copy_from_line_adj_rec);
5114 
5115                          IF l_copy_from_line_adj_rec.operation
5116                            = OE_GLOBALS.G_OPR_UPDATE THEN
5117                              IF l_debug_level  > 0 THEN
5118                                  oe_debug_pub.add(  ' UPDATING OPERAND FOR LINE ID:'||L_COPY_FROM_LINE_ADJ_REC.LINE_ID ) ;
5119                              END IF;
5120                            px_line_adj_tbl(px_line_adj_tbl.count+1)
5121                              := l_copy_from_line_adj_rec;
5122                          END IF;
5123                          END IF;
5124                         End If;
5125                   End If;
5126 
5127 			Append_Adjustment_Attribs(
5128 				px_Line_Adj_Att_Tbl    	=> px_Line_Adj_Att_Tbl
5129 				,p_price_adjustment_id	=> l_Line_Adj_Tbl(i).price_adjustment_id
5130 				,p_adj_index			=> px_line_adj_tbl.count+1
5131 				);
5132 
5133 	  		l_Line_Adj_Tbl(i).operation := p_operation;
5134 
5135 			-- lkxu, fix bug 1623316
5136                -- don't populate line_id field if it is a HEADER level adjustment
5137 
5138                    --removed if condn.
5139                         l_Line_Adj_Tbl(i).line_id := p_to_line_id;
5140 
5141                /* Fixing Bug 2075878  */
5142              IF l_line_adj_tbl(i).modifier_level_code = 'ORDER' THEN
5143                 l_Line_Adj_Tbl(i).modifier_level_code := 'LINE';
5144                 --RT{
5145                 IF l_Line_Adj_Tbl(i).arithmetic_operator = '%' THEN
5146                   open  get_ulp(p_key_line_id);
5147                   fetch get_ulp INTO l_ulp;
5148                   close get_ulp;
5149 		  oe_debug_pub.add('pviprana: l_ulp :' || l_ulp);
5150 		  --bug3392650 ( Changed the condition l_Line_Adj_Tbl(i).adjusted_amount < 0)
5151                   IF (l_Line_Adj_Tbl(i).list_line_type_code = 'DIS') THEN
5152                    l_sign := -1;
5153                   ELSE
5154                    l_sign := 1;
5155                   END IF;
5156 		  --bug3392650 Calculating adjusted amount only if l_ulp is not null
5157 		  oe_debug_pub.add('pviprana: adjusted amt'||l_Line_Adj_Tbl(i).adjusted_amount);
5158 		  IF(l_ulp IS NOT NULL ) THEN
5159                      l_Line_Adj_Tbl(i).adjusted_amount:= (l_Line_Adj_Tbl(i).operand/100) * l_ulp *l_sign;
5160 		  END IF;
5161                   oe_debug_pub.add('Converting Order level to line, unit list price:'|| l_ulp);
5162                   oe_debug_pub.add('Adjusted amount:'||l_Line_Adj_Tbl(i).adjusted_amount);
5163                 END IF;
5164                 --RT}
5165              END IF;
5166 
5167 	  		-- l_Line_Adj_Tbl(i).line_id := p_to_line_id;
5168 	  		l_Line_Adj_Tbl(i).Header_id := p_to_Header_id;
5169 	  		l_Line_Adj_Tbl(i).invoiced_flag := 'N';
5170 			l_Line_Adj_Tbl(i).invoiced_amount := null; --bug 5241848
5171 --	  		l_Line_Adj_Tbl(i).price_adjustment_id := fnd_api.g_miss_num;
5172 
5173 			-- Check for refndable charges on return lines. If the charge is
5174 			-- refundable then it should be created as a credit.
5175 
5176 	-- Commented for 7683779 Start
5177 	/*
5178 	--Added for bug 7328969 Start
5179       		select line_category_code into l_from_line_category
5180       		from oe_order_lines_all
5181       		where line_id = p_line_id ;
5182 
5183       		oe_debug_pub.add('p_line_category_code :'||p_line_category_code);
5184       		oe_debug_pub.add('l_from_line_category :'||l_from_line_category);
5185       		oe_debug_pub.add('l_Line_Adj_Tbl(i).credit_or_charge_flag :'||l_Line_Adj_Tbl(i).credit_or_charge_flag);
5186 
5187 	--Added for bug 7328969 End
5188 	*/
5189 	-- Commented for 7683779 End
5190 
5191 			If l_Line_Adj_Tbl(i).list_line_type_code ='FREIGHT_CHARGE'
5192 			THEN
5193 			--Added for bug 7683779 Start
5194 			    select line_category_code into l_from_line_category
5195 			    from oe_order_lines_all
5196 			    where line_id = p_line_id ;
5197 
5198 			    IF l_debug_level  > 0 THEN
5199 			        oe_debug_pub.add('p_line_category_code :'||p_line_category_code);
5200 			        oe_debug_pub.add('l_from_line_category :'||l_from_line_category);
5201 			        oe_debug_pub.add('l_Line_Adj_Tbl(i).credit_or_charge_flag :'||l_Line_Adj_Tbl(i).credit_or_charge_flag);
5202 			    END IF;
5203 
5204 	                --Added for bug 7683779 End
5205 
5206 		--Modified for bug 7328969 Start
5207 		--IF p_line_category_code = 'RETURN' THEN
5208 		IF (p_line_category_code = 'RETURN' AND l_from_line_category= 'ORDER' ) OR
5209 		( l_from_line_category = 'RETURN' and  p_line_category_code = 'ORDER') THEN
5210 
5211 		--Modified for bug 7328969 End
5212 
5213                        If l_Line_Adj_Tbl(i).credit_or_charge_flag = 'C' THEN
5214                            l_Line_Adj_Tbl(i).credit_or_charge_flag := 'D';
5215                        ELSE
5216                            l_Line_Adj_Tbl(i).credit_or_charge_flag := 'C';
5217                        END IF;
5218 
5219                        oe_debug_pub.add('l_Line_Adj_Tbl(i).credit_or_charge_flag :'||l_Line_Adj_Tbl(i).credit_or_charge_flag);
5220 
5221                        l_Line_Adj_Tbl(i).updated_flag := 'Y';
5222                        l_Line_Adj_Tbl(i).change_reason_code := 'MISC';
5223                        l_Line_Adj_Tbl(i).change_reason_text := 'Reversing Credit';
5224                    ELSE
5225 /* commented out nocopy the following 3 lines to fix the bug 2594720
5226 
5227 
5228                        l_Line_Adj_Tbl(i).updated_flag := 'N';
5229                        l_Line_Adj_Tbl(i).change_reason_code := NULL;
5230                        l_Line_Adj_Tbl(i).change_reason_text := NULL;
5231    */
5232                        NULL;
5233 
5234 /* Added the following code to fix the bug 2888990 */
5235                  --Commented for bug 7328969 Start
5236                        /*select line_category_code into l_from_line_category
5237                        from oe_order_lines_all
5238                        where line_id = p_line_id ;*/
5239                  --Commented for bug 7328969 End
5240 
5241                        if l_from_line_category = 'RETURN' and  p_line_category_code = 'ORDER' THEN
5242                          If l_Line_Adj_Tbl(i).credit_or_charge_flag = 'C' THEN
5243                           l_Line_Adj_Tbl(i).credit_or_charge_flag := 'D';
5244                          ELSE
5245                           l_Line_Adj_Tbl(i).credit_or_charge_flag := 'C';
5246                          END IF;
5247 
5248                          l_Line_Adj_Tbl(i).updated_flag := 'Y';
5249                          l_Line_Adj_Tbl(i).change_reason_code := 'MISC';
5250                          l_Line_Adj_Tbl(i).change_reason_text := 'Reversing Credit';
5251                        end if;
5252 /* End of code for the bug 2888990 */
5253 
5254 
5255 			    END IF;
5256 			END IF;
5257 
5258 	  		px_line_adj_tbl(px_line_adj_tbl.count+1) := L_Line_Adj_Tbl(i);
5259 
5260 		end if; -- For Freight charges
5261 
5262 	  End If; -- Copy only certain list line types
5263          --RT{
5264          END IF;  --check Retrobill and freight
5265          --RT}
5266 	End if; -- operation=g_opr_delete
5267 
5268 	  i:= l_Line_Adj_Tbl.Next(i);
5269 
5270 	end loop;
5271 
5272          If l_has_pbh = 'Y' Then
5273                    Append_Association(p_line_adj_tbl        => px_line_adj_tbl,
5274                                       px_line_adj_assoc_tbl => px_line_adj_assoc_tbl,
5275                                       p_pbh_tbl             => l_pbh_tbl);
5276          End If;
5277 
5278   IF (p_operation = OE_GLOBALS.G_OPR_CREATE) and l_Line_Adj_Tbl.count > 0 THEN
5279   I:=px_line_adj_tbl.first;
5280   while I is not null loop
5281    IF (px_line_adj_tbl(i).operation = OE_GLOBALS.G_OPR_CREATE) THEN
5282   px_line_adj_tbl(i).price_adjustment_id:=fnd_api.g_miss_num;
5283      --RT{
5284        oe_debug_pub.add('operand:'||px_line_adj_tbl(i).operand);
5285        oe_debug_pub.add('operand per pqty:'||px_line_adj_tbl(i).operand_per_pqty);
5286        oe_debug_pub.add('Retro:p_mode:'||p_mode);
5287      IF nvl(p_mode,'NULLMODE') = 'RETROBILL' THEN
5288         IF px_line_adj_tbl(i).retrobill_request_id IS NOT NULL
5289           and px_line_adj_tbl(i).applied_flag = 'N' THEN
5290           --applied flag needs to remain 'Y'. Becomes 'N' only after
5291           --the pricing engine call
5292           px_line_adj_tbl(i).applied_flag := 'Y';
5293         END IF;
5294 
5295         --replace with new retrobill request id.
5296         px_line_adj_tbl(i).retrobill_request_id:= p_retrobill_request_id;
5297 
5298         --px_line_adj_tbl(i).applied_flag:='N';
5299         oe_debug_pub.add('RETRO:ADJ:Copied list line id:'|| px_line_adj_tbl(i).list_line_id);
5300         oe_debug_pub.add('RETRO:ADJ:Operand:'|| px_line_adj_tbl(i).operand);
5301         oe_debug_pub.add('RETRO:ADJ:Operand pqty:'||px_line_adj_tbl(i).operand_per_pqty);
5302      END IF;
5303      --RT}
5304    END IF;
5305   I:=px_line_adj_tbl.next(I);
5306   end loop;
5307   END IF;
5308 
5309 	IF l_debug_level  > 0 THEN
5310 	    oe_debug_pub.add(  'EXITING OE_LINE_ADJ_UTIL.APPEND_ADJUSTMENT_LINES' , 1 ) ;
5311 	END IF;
5312 
5313 end Append_Adjustment_Lines;
5314 
5315 Procedure copy_adjustment_lines(
5316 	p_from_line_id			number
5317 	,p_to_line_id			number
5318 	,p_from_Header_id		number
5319 	,p_to_Header_id		number
5320 	,p_line_category_code	varchar2
5321 	,p_split_by		varchar2 default null
5322 	,p_booked_flag		varchar2 default null
5323         ,p_mode                 varchar2 default null
5324 --RT{
5325         ,p_retrobill_request_id Number   default null
5326 --RT}
5327         ,x_return_status out nocopy varchar2
5328 
5329 	)
5330 is
5331 l_Header_Adj_tbl 	oe_order_pub.Header_adj_tbl_type;
5332 l_Line_Adj_tbl 	oe_order_pub.Line_adj_tbl_type;
5333 l_control_rec				Oe_Globals.Control_rec_type;
5334 l_Line_Adj_Att_tbl            OE_Order_PUB.Line_Adj_Att_tbl_type;
5335 l_Line_Adj_Assoc_tbl          OE_Order_PUB.Line_Adj_Assoc_tbl_type;
5336 -- l_x_header_rec                OE_Order_PUB.Header_Rec_Type;
5337 l_header_rec                OE_Order_PUB.Header_Rec_Type;
5338 l_x_Header_Adj_tbl            OE_Order_PUB.Header_Adj_Tbl_Type;
5339 l_x_Header_Scredit_tbl        OE_Order_PUB.Header_Scredit_Tbl_Type;
5340 l_x_line_tbl                  OE_Order_PUB.Line_Tbl_Type;
5341 l_line_tbl                    OE_Order_PUB.Line_Tbl_Type;
5342 l_x_Line_Adj_tbl              OE_Order_PUB.Line_Adj_Tbl_Type;
5343 l_x_Line_Scredit_tbl          OE_Order_PUB.Line_Scredit_Tbl_Type;
5344 l_x_action_request_tbl        OE_Order_PUB.request_tbl_type;
5345 l_x_lot_serial_tbl            OE_Order_PUB.lot_serial_tbl_type;
5346 l_x_Header_price_Att_tbl      OE_Order_PUB.Header_price_Att_tbl_type;
5347 l_x_Header_Adj_Att_tbl        OE_Order_PUB.Header_Adj_Att_tbl_type;
5348 l_x_Header_Adj_Assoc_tbl      OE_Order_PUB.Header_Adj_Assoc_tbl_type;
5349 l_x_Line_price_Att_tbl        OE_Order_PUB.Line_price_Att_tbl_type;
5350 l_x_Line_Adj_Att_tbl          OE_Order_PUB.Line_Adj_Att_tbl_type;
5351 l_x_Line_Adj_Assoc_tbl        OE_Order_PUB.Line_Adj_Assoc_tbl_type;
5352 l_x_msg_count                   number;
5353 l_x_msg_data                    Varchar2(2000);
5354 i						pls_integer;
5355 --serla begin
5356 l_x_Header_Payment_tbl        OE_Order_PUB.Header_Payment_Tbl_Type;
5357 l_x_Line_Payment_tbl          OE_Order_PUB.Line_Payment_Tbl_Type;
5358 --serla end
5359 --
5360 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
5361 --
5362 begin
5363 	IF l_debug_level  > 0 THEN
5364 	    oe_debug_pub.add(  'ENTERING OE_LINE_ADJ_UTIL.COPY_ADJUSTMENT_LINES' , 1 ) ;
5365             oe_debug_pub.add(  'SPLIT BY:'||P_SPLIT_BY ) ;
5366         END IF;
5367 	-- Set the existing rows to delete
5368 	Append_Adjustment_Lines(
5369 				p_line_id 	 => p_to_line_id
5370 				,p_operation	 => OE_GLOBALS.G_OPR_DELETE
5371 				,p_line_category_code	 => p_line_category_code
5372 				,px_Line_Adj_Att_Tbl => l_Line_Adj_Att_Tbl
5373                                 ,px_Line_Adj_Tbl => l_Line_Adj_tbl
5374                                 ,px_line_adj_assoc_tbl => l_line_adj_assoc_tbl);
5375 
5376 	Append_Adjustment_Lines(p_header_id => p_from_header_id
5377 				,p_line_id 	 => p_from_line_id
5378 				,p_to_line_id 	 => p_to_line_id
5379 				,p_to_Header_id => p_to_Header_id
5380 				,p_line_category_code	 => p_line_category_code
5381 				,p_operation	 => OE_GLOBALS.G_OPR_CREATE
5382                                 ,p_split_by      => p_split_by
5383 				,px_Line_Adj_Att_Tbl => l_Line_Adj_Att_Tbl
5384  			        ,px_Line_Adj_Tbl => l_Line_Adj_tbl
5385                                 ,px_line_adj_assoc_tbl => l_line_adj_assoc_tbl
5386                              --RT{
5387                                 ,p_mode =>p_mode
5388                                 ,p_retrobill_request_id=>p_retrobill_request_id);
5389                              --RT});
5390     --RT{
5391     IF nvl(p_mode,'xx-') = 'RETROBILL' THEN
5392       OE_ORDER_COPY_UTIL.G_ORDER_LEVEL_COPY :=0;
5393     END IF;
5394     --RT}
5395     -- Append Header level adjustments only if the order is different
5396 /* Modified the following if condition to fix the bug 2170086 */
5397         oe_debug_pub.add('pviprana: p_from_header_id'||p_from_header_id);
5398 	oe_debug_pub.add('pviprana: p_to_header_id'||p_to_header_id);
5399 	oe_debug_pub.add('pviprana: p_from_line_id'||p_from_line_id);
5400 	oe_debug_pub.add('pviprana: p_to_line_id'||p_to_line_id);
5401 	If p_from_Header_id <> p_to_Header_id and
5402        OE_ORDER_COPY_UTIL.G_ORDER_LEVEL_COPY = 0 then
5403 	    --bug3392650 passing an extra parameter p_key_line_id if the mode is 'RETROBILL' so that l_ulp is obtained properly in
5404             --append_adjustment_lines when the order level modifier is being converted to line level.
5405 	      IF nvl(p_mode,'xx-') = 'RETROBILL' THEN
5406 		Append_Adjustment_Lines(
5407 				p_Header_id 	 => p_from_Header_id
5408 				,p_to_line_id 	 => p_to_line_id
5409 				,p_to_Header_id => p_to_Header_id
5410 				,p_line_category_code	 => p_line_category_code
5411 				,p_operation	 => OE_GLOBALS.G_OPR_CREATE
5412 				,px_Line_Adj_Att_Tbl => l_Line_Adj_Att_Tbl
5413  			        ,px_Line_Adj_Tbl => l_Line_Adj_tbl
5414                                 ,px_line_adj_assoc_tbl => l_line_adj_assoc_tbl
5415                                  --RT{
5416 				,p_key_line_id => p_from_line_id
5417                                 ,p_mode =>p_mode
5418                                 ,p_retrobill_request_id=>p_retrobill_request_id
5419                                  --RT}
5420                                  );
5421 		ELSE
5422 		   Append_Adjustment_Lines(
5423 				p_Header_id 	 => p_from_Header_id
5424 				,p_to_line_id 	 => p_to_line_id
5425 				,p_to_Header_id => p_to_Header_id
5426 				,p_line_category_code	 => p_line_category_code
5427 				,p_operation	 => OE_GLOBALS.G_OPR_CREATE
5428 				,px_Line_Adj_Att_Tbl => l_Line_Adj_Att_Tbl
5429  			        ,px_Line_Adj_Tbl => l_Line_Adj_tbl
5430                                 ,px_line_adj_assoc_tbl => l_line_adj_assoc_tbl
5431                                  );
5432 		END IF;
5433 
5434 
5435 
5436 	End If;
5437 If
5438 		l_Line_Adj_tbl.count > 0 or
5439 		l_Line_Adj_att_tbl.count > 0
5440 Then
5441 
5442    -- set control record
5443    l_control_rec.controlled_operation := TRUE;
5444    l_control_rec.write_to_DB          := TRUE;
5445    l_control_rec.change_attributes    := TRUE;
5446    l_control_rec.default_attributes   := TRUE;
5447    l_control_rec.validate_entity      := TRUE;
5448    l_control_rec.clear_dependents     := TRUE;
5449 
5450    l_control_rec.process              := FALSE;
5451    l_control_rec.clear_api_cache      := FALSE;
5452    l_control_rec.clear_api_requests   := FALSE;
5453 
5454 
5455     --  Call OE_Order_PVT.Process_order
5456 
5457 	IF l_debug_level  > 0 THEN
5458 	    oe_debug_pub.add(  'BEFORE OE_ORDER_PVT.PROCESS_ORDER'||L_LINE_ADJ_TBL.COUNT , 1 ) ;
5459 	END IF ;
5460 
5461    OE_Globals.G_PRICING_RECURSION := 'Y';
5462 
5463     OE_Order_PVT.Process_order
5464     (   p_api_version_number          => 1.0
5465     ,   x_return_status               => x_return_status
5466     ,   x_msg_count                   => l_x_msg_count
5467     ,   x_msg_data                    => l_x_msg_data
5468     ,   p_control_rec                 => l_control_rec
5469     ,   p_x_Line_Adj_tbl              => l_Line_Adj_tbl
5470     ,   p_x_Line_Adj_att_tbl          => l_Line_Adj_att_tbl
5471 --  ,   x_header_rec                  => l_x_header_rec
5472     ,   p_x_header_rec                => l_header_rec
5473     ,   p_x_Header_Adj_tbl            => l_x_Header_Adj_tbl
5474     ,   p_x_header_price_att_tbl      => l_x_header_price_att_tbl
5475     ,   p_x_Header_Adj_att_tbl        => l_x_Header_Adj_att_tbl
5476     ,   p_x_Header_Adj_Assoc_tbl      => l_x_Header_Adj_Assoc_tbl
5477     ,   p_x_Header_Scredit_tbl        => l_x_Header_Scredit_tbl
5478 --serla begin
5479     ,   p_x_Header_Payment_tbl          => l_x_Header_Payment_tbl
5480 --serla end
5481 --  ,   p_x_line_tbl                  => l_x_line_tbl
5482     ,   p_x_line_tbl                  => l_line_tbl
5483  -- ,   x_Line_Adj_tbl                => l_x_Line_Adj_tbl
5484     ,   p_x_Line_Price_att_tbl        => l_x_Line_Price_att_tbl
5485  -- ,   x_Line_Adj_att_tbl            => l_x_Line_Adj_att_tbl
5486  -- ,   x_Line_Adj_Assoc_tbl          => l_x_Line_Adj_Assoc_tbl
5487     ,   p_x_Line_Adj_Assoc_tbl        => l_Line_Adj_Assoc_tbl
5488     ,   p_x_Line_Scredit_tbl          => l_x_Line_Scredit_tbl
5489 --serla begin
5490     ,   p_x_Line_Payment_tbl            => l_x_Line_Payment_tbl
5491 --serla end
5492     ,   p_x_Lot_Serial_tbl            => l_x_Lot_Serial_Tbl
5493     ,   p_x_action_request_tbl        => l_x_Action_Request_tbl
5494     );
5495 
5496   OE_Globals.G_PRICING_RECURSION := 'N';
5497 
5498 
5499   End If;
5500 
5501 	IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
5502 		RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5503 	ELSIF x_return_status = FND_API.G_RET_STS_ERROR THEN
5504 		RAISE FND_API.G_EXC_ERROR;
5505 	END IF;
5506 
5507 	IF l_debug_level  > 0 THEN
5508 	    oe_debug_pub.add(  'EXITING OE_LINE_ADJ_UTIL.COPY_ADJUSTMENT_LINES' , 1 ) ;
5509 	END IF;
5510 
5511 	Exception
5512 	    WHEN FND_API.G_EXC_ERROR THEN
5513 		  x_return_status := FND_API.G_RET_STS_ERROR;
5514 
5515 		WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5516 
5517 			x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5518                         IF l_debug_level  > 0 THEN
5519                             oe_debug_pub.add(  G_PKG_NAME||':COPY_ADJUSTMENT_LINES:'||SQLERRM ) ;
5520                         END IF;
5521 
5522 end copy_adjustment_lines;
5523 
5524 /* Start AuditTrail */
5525 PROCEDURE Pre_Write_Process
5526    (  p_x_line_adj_rec IN OUT NOCOPY OE_ORDER_PUB.line_adj_rec_type,
5527       p_old_line_adj_rec IN OE_ORDER_PUB.line_adj_rec_type := OE_ORDER_PUB.G_MISS_LINE_ADJ_REC)  IS
5528 /*local */
5529 l_return_status     varchar2(30);
5530 --
5531 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
5532 --
5533 BEGIN
5534 
5535        --11.5.10 Versioning/Audit Trail updates
5536      IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110510' AND
5537          OE_GLOBALS.G_ROLL_VERSION <> 'N' AND
5538          NOT OE_GLOBALS.G_HEADER_CREATED THEN
5539        IF OE_GLOBALS.G_REASON_CODE IS NULL AND
5540            OE_GLOBALS.G_CAPTURED_REASON IN ('V','A') THEN
5541           IF p_x_line_adj_rec.change_reason_code <> FND_API.G_MISS_CHAR THEN
5542               OE_GLOBALS.G_REASON_TYPE := 'CHANGE_CODE';
5543               OE_GLOBALS.G_REASON_CODE := p_x_line_adj_rec.change_reason_code;
5544               OE_GLOBALS.G_REASON_COMMENTS := p_x_line_adj_rec.change_reason_text;
5545               OE_GLOBALS.G_CAPTURED_REASON := 'Y';
5546           ELSE
5547               if l_debug_level > 0 then
5548                  OE_DEBUG_PUB.add('Reason code for versioning is missing or invalid', 1);
5549               end if;
5550               --bug 3775971
5551               if OE_GLOBALS.G_UI_FLAG AND
5552                 (OE_GLOBALS.G_PRICING_RECURSION = 'Y' OR
5553                  OE_GLOBALS.G_RECURSION_MODE = 'Y') then
5554                  raise FND_API.G_EXC_ERROR;
5555               end if;
5556           END IF;
5557        END IF;
5558 
5559        --log delayed request
5560         oe_debug_pub.add('log versioning request',1);
5561           OE_Delayed_Requests_Pvt.Log_Request(p_entity_code => OE_GLOBALS.G_ENTITY_ALL,
5562                                    p_entity_id => p_x_line_adj_rec.header_id,
5563                                    p_requesting_entity_code => OE_GLOBALS.G_ENTITY_LINE_ADJ,
5564                                    p_requesting_entity_id => p_x_line_adj_rec.price_adjustment_id,
5565                                    p_request_type => OE_GLOBALS.G_VERSION_AUDIT,
5566                                    x_return_status => l_return_status);
5567      END IF;
5568 
5569 if (p_x_line_adj_rec.operation  = OE_GLOBALS.G_OPR_UPDATE) then
5570 
5571    IF OE_GLOBALS.G_AUDIT_REASON_RQD_FLAG = 'Y' OR
5572 	 OE_GLOBALS.G_AUDIT_HISTORY_RQD_FLAG = 'Y' THEN
5573 
5574       IF l_debug_level  > 0 THEN
5575           oe_debug_pub.add(  'CALL TO RECORD LINE PRICE ADJ HISTORY' , 5 ) ;
5576       END IF;
5577      IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110510' THEN
5578           OE_Versioning_Util.Capture_Audit_Info(p_entity_code => OE_GLOBALS.G_ENTITY_LINE_ADJ,
5579                                            p_entity_id => p_x_line_adj_rec.price_adjustment_id,
5580                                            p_hist_type_code =>  'UPDATE');
5581            --log delayed request
5582              OE_Delayed_Requests_Pvt.Log_Request(p_entity_code => OE_GLOBALS.G_ENTITY_ALL,
5583                                    p_entity_id => p_x_line_adj_rec.header_id,
5584                                    p_requesting_entity_code => OE_GLOBALS.G_ENTITY_LINE_ADJ,
5585                                    p_requesting_entity_id => p_x_line_adj_rec.price_adjustment_id,
5586                                    p_request_type => OE_GLOBALS.G_VERSION_AUDIT,
5587                                    x_return_status => l_return_status);
5588           OE_GLOBALS.G_AUDIT_HISTORY_RQD_FLAG := 'N';
5589      ELSE
5590       OE_CHG_ORDER_PVT.RecordLPAdjHist
5591       ( p_line_adj_id => p_x_line_adj_rec.price_adjustment_id,
5592         p_line_adj_rec => null,
5593         p_hist_type_code => 'UPDATE',
5594         p_reason_code => p_x_line_adj_rec.change_reason_code,
5595         p_comments => p_x_line_adj_rec.change_reason_text,
5596         p_wf_activity_code => null,
5597         p_wf_result_code => null,
5598         x_return_status => l_return_status );
5599      END IF;
5600 
5601    END IF;
5602 
5603     IF l_return_status <> FND_API.G_RET_STS_SUCCESS then
5604 	  IF l_debug_level  > 0 THEN
5605 	      oe_debug_pub.add(  'INSERT INTO LINE PRICE ADJUSTMENTS AUDIT HISTORY CAUSED ERROR' , 1 ) ;
5606 	  END IF;
5607        IF l_return_status = FND_API.G_RET_STS_ERROR then
5608           raise FND_API.G_EXC_ERROR;
5609        ELSE
5610           raise FND_API.G_EXC_UNEXPECTED_ERROR;
5611        END IF;
5612     END IF;
5613 END IF;
5614 
5615 END Pre_Write_Process;
5616 /* End AuditTrail */
5617 
5618 Function Is_Pricing_Related_Change(p_new_line_rec In Oe_Order_Pub.Line_Rec_Type,
5619                                    p_old_line_rec   In Oe_Order_Pub.Line_Rec_Type) Return Boolean As
5620    l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
5621    Begin
5622 
5623        IF l_debug_level  > 0 THEN
5624              oe_debug_pub.add(  ' Check if any pricing related changes has occured' ) ;
5625        END IF;
5626 
5627        IF NOT OE_GLOBALS.Equal(p_new_line_rec.agreement_id,p_old_line_rec.agreement_id)
5628        OR NOT OE_GLOBALS.Equal(p_new_line_rec.cust_po_number,p_old_line_rec.cust_po_number)
5629        OR NOT OE_GLOBALS.Equal(p_new_line_rec.inventory_item_id,p_old_line_rec.inventory_item_id)
5630        OR NOT OE_GLOBALS.Equal(p_new_line_rec.invoice_to_org_id,p_old_line_rec.invoice_to_org_id)
5631        OR NOT OE_GLOBALS.Equal(p_new_line_rec.ordered_item_id,p_old_line_rec.ordered_item_id)
5632        OR NOT OE_GLOBALS.Equal(p_new_line_rec.ordered_item,p_old_line_rec.ordered_item)
5633        OR NOT OE_GLOBALS.Equal(p_new_line_rec.line_category_code,p_old_line_rec.line_category_code)
5634        OR NOT OE_GLOBALS.Equal(p_new_line_rec.line_type_id,p_old_line_rec.line_type_id)
5635        OR NOT OE_GLOBALS.Equal(p_new_line_rec.ordered_quantity,p_old_line_rec.ordered_quantity)
5636        OR NOT OE_GLOBALS.Equal(p_new_line_rec.order_quantity_uom,p_old_line_rec.order_quantity_uom)
5637        OR NOT OE_GLOBALS.Equal(p_new_line_rec.payment_term_id,p_old_line_rec.payment_term_id)
5638        OR NOT OE_GLOBALS.Equal(p_new_line_rec.price_list_id,p_old_line_rec.price_list_id)
5639        OR NOT OE_GLOBALS.Equal(p_new_line_rec.pricing_date,p_old_line_rec.pricing_date)
5640        OR NOT OE_GLOBALS.Equal(p_new_line_rec.pricing_quantity,p_old_line_rec.pricing_quantity)
5641        OR NOT OE_GLOBALS.Equal(p_new_line_rec.pricing_quantity_uom,p_old_line_rec.pricing_quantity_uom)
5642        OR NOT OE_GLOBALS.Equal(p_new_line_rec.request_date,p_old_line_rec.request_date)
5643        OR NOT OE_GLOBALS.Equal(p_new_line_rec.ship_to_org_id,p_old_line_rec.ship_to_org_id)
5644        OR NOT OE_GLOBALS.Equal(p_new_line_rec.sold_to_org_id,p_old_line_rec.sold_to_org_id)
5645        OR NOT OE_GLOBALS.Equal(p_new_line_rec.unit_selling_price,p_old_line_rec.unit_selling_price)
5646        OR NOT OE_GLOBALS.Equal(p_new_line_rec.service_start_date,p_old_line_rec.service_start_date)
5647        OR NOT OE_GLOBALS.Equal(p_new_line_rec.service_end_date,p_old_line_rec.service_end_date)
5648        OR NOT OE_GLOBALS.Equal(p_new_line_rec.service_duration,p_old_line_rec.service_duration)
5649        OR NOT OE_GLOBALS.Equal(p_new_line_rec.service_period,p_old_line_rec.service_period)
5650        --Bug 4332307
5651        OR (
5652            ((p_new_line_rec.unit_list_price IS NOT NULL AND
5653              p_new_line_rec.unit_list_price <> FND_API.G_MISS_NUM AND
5654              p_new_line_rec.unit_list_price <> p_old_line_rec.unit_list_price)
5655             OR
5656              (p_new_line_rec.unit_list_price IS NULL))
5657            AND
5658             p_old_line_rec.unit_list_price IS NOT NULL AND
5659             p_old_line_rec.unit_list_price <> FND_API.G_MISS_NUM AND
5660             p_new_line_rec.original_list_price  IS NOT NULL AND
5661             p_new_line_rec.original_list_price <> FND_API.G_MISS_NUM AND
5662             p_new_line_rec.Ordered_Quantity <> fnd_api.g_miss_num and
5663             p_new_line_rec.order_quantity_uom is not null and
5664             p_new_line_rec.order_quantity_uom <> fnd_api.g_miss_char
5665             AND oe_code_control.code_release_level >= '110510'
5666             AND nvl(fnd_profile.value('ONT_LIST_PRICE_OVERRIDE_PRIV'), 'NONE') = 'UNLIMITED'
5667             AND  OE_GLOBALS.G_UI_FLAG
5668             AND  OE_Globals.G_PRICING_RECURSION = 'N'
5669           )
5670        --Bug 4332307
5671 
5672     Then
5673          IF l_debug_level  > 0 THEN
5674              oe_debug_pub.add(  ' PRICING RELATED FIELDS HAS CHANGED' ) ;
5675          END IF;
5676          Return True;
5677 
5678     Else
5679          IF l_debug_level  > 0 THEN
5680              oe_debug_pub.add(  ' NO pricing related Fields Has Changed' ) ;
5681          END IF;
5682          Return False;
5683     End If;
5684 
5685 
5686    End;
5687 
5688 /* 1503357 - Delete all PRG lines associated with a particular line */
5689 Procedure Delete_PRG_Lines(p_line_id In Number, p_operation In Varchar2) Is
5690 
5691   -- Get all PRG lines
5692   Cursor prg_lines is
5693    select adj1.line_id, assoc.rltd_price_adj_id
5694    from oe_price_adjustments adj1,
5695 	oe_price_adj_assocs  assoc,
5696 	oe_price_adjustments adj2,
5697         oe_order_lines_all line
5698    where adj1.price_adjustment_id = assoc.rltd_price_adj_id AND
5699 	 assoc.price_adjustment_id = adj2.price_adjustment_id AND
5700 	 adj2.list_line_type_code = 'PRG' AND
5701 	 adj1.line_id = line.line_id AND   /*Added for bug 4018279*/
5702          line.open_flag = 'Y' AND
5703 	 adj2.line_id = p_line_id;
5704 
5705 
5706   Cursor prg_adjs is
5707        select price_adjustment_id
5708         from oe_price_adjustments
5709         where line_id = p_line_id AND list_line_type_code = 'PRG';
5710 
5711   /* Variables to call process order */
5712   l_line_tbl                         OE_ORDER_PUB.Line_Tbl_Type;
5713   l_old_line_tbl		     OE_ORDER_PUB.Line_Tbl_Type;
5714   l_control_rec                      OE_GLOBALS.Control_Rec_Type;
5715   l_line_rec			     OE_Order_PUB.Line_Rec_Type;
5716   x_return_status	             Varchar2(1);
5717   l_prg_line_id	                     NUMBER;
5718   l_price_adj_id		     NUMBER;
5719   l_delete_prg                       varchar2(1);
5720   l_dummy                            NUMBER;
5721   l_rltd_price_adj_id                NUMBER;
5722   --
5723   l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
5724   --
5725   l_reason_code VARCHAR2(30);
5726   l_reason_comments VARCHAR2(2000);
5727   l_captured_reason varchar2(1);
5728 
5729   Begin
5730    IF l_debug_level  > 0 THEN
5731        oe_debug_pub.add(  'ENTERING OEXULADB.DELETE_PRG_LINES WITH LINE_ID = ' || P_LINE_ID ) ;
5732    END IF;
5733   if l_debug_level > 0 then
5734     oe_debug_pub.add('reason:'||OE_GLOBALS.G_REASON_CODE,3);
5735     oe_debug_pub.add('captured:'||OE_GLOBALS.G_captured_reason,3);
5736     oe_debug_pub.add('audit:'||OE_GLOBALS.G_version_audit,3);
5737    end if;
5738   l_reason_code := OE_GLOBALS.G_REASON_CODE;
5739    l_reason_comments := OE_GLOBALS.G_REASON_COMMENTS;
5740    l_captured_reason := OE_GLOBALS.G_CAPTURED_REASON;
5741    OPEN prg_lines;
5742    FETCH prg_lines into l_prg_line_id, l_rltd_price_adj_id;
5743    WHILE prg_lines%FOUND Loop
5744         IF l_debug_level  > 0 THEN
5745             oe_debug_pub.add(  'PRG LINE ID = ' || L_PRG_LINE_ID ) ;
5746         END IF;
5747         OE_LINE_UTIL.QUERY_ROW(p_line_id => l_prg_line_id,
5748 	                       x_line_rec => l_line_rec);
5749 
5750 	l_old_line_tbl(1) := l_line_rec;
5751 
5752       if (l_line_rec.booked_flag <> 'Y') Then
5753 
5754 	IF l_debug_level  > 0 THEN
5755 	    oe_debug_pub.add(  'ORDER NOT BOOKED' ) ;
5756 	END IF;
5757 	l_line_rec.operation := OE_GLOBALS.G_OPR_DELETE;
5758 
5759       else
5760 	if (l_line_rec.shipped_quantity is NULL) Then
5761 	  IF l_debug_level  > 0 THEN
5762 	      oe_debug_pub.add(  'BOOKED ORDER , LINE NOT SHIPPED' ) ;
5763 	  END IF;
5764           if (p_operation = OE_GLOBALS.G_OPR_DELETE) Then
5765             -- bug 2756288, if buy line can be deleted, so can get line
5766             l_line_rec.operation := OE_GLOBALS.G_OPR_DELETE;
5767           else
5768 	    l_line_rec.operation := OE_GLOBALS.G_OPR_UPDATE;
5769 	    l_line_rec.ordered_quantity := 0;
5770 	    l_line_rec.pricing_quantity := 0;
5771           end if;
5772 	else
5773 	  IF l_debug_level  > 0 THEN
5774 	      oe_debug_pub.add(  'BOOKED ORDER , SHIPPED LINE' ) ;
5775 	  END IF;
5776 	  l_line_rec.operation := OE_GLOBALS.G_OPR_UPDATE;
5777 	  l_line_rec.calculate_price_flag := 'Y';
5778 	end if;
5779       end if;
5780 	 l_line_rec.change_reason := 'SYSTEM';
5781 	 l_line_rec.change_comments := 'REPRICING';
5782 
5783       for i in prg_adjs LOOP
5784         -- Delete PRG adjustment record and the association
5785         -- between the buy line and the get line
5786         IF l_debug_level  > 0 THEN
5787             oe_debug_pub.add(  'PRICE ADJ ID = ' || I.PRICE_ADJUSTMENT_ID ) ;
5788         END IF;
5789         OE_LINE_ADJ_UTIL.DELETE_ROW(p_price_adjustment_id => i.price_adjustment_id);
5790 
5791         DELETE FROM OE_PRICE_ADJ_ASSOCS WHERE PRICE_ADJUSTMENT_ID = i.price_adjustment_id;
5792        END LOOP;
5793         BEGIN
5794           l_delete_prg := 'N';
5795           SELECT price_adj_assoc_id INTO l_dummy from oe_price_adj_assocs
5796           WHERE rltd_price_adj_id = l_rltd_price_adj_id and rownum < 2;
5797           exception
5798             WHEN NO_DATA_FOUND THEN
5799              l_delete_prg := 'Y';
5800          END;
5801          IF l_debug_level  > 0 THEN
5802              oe_debug_pub.add(  'ASSOC ID:'||L_DUMMY ) ;
5803          END IF;
5804 
5805       IF (l_delete_prg = 'Y') THEN
5806 	-- Call Process Order
5807 	l_control_rec.controlled_operation := TRUE;
5808 	l_control_rec.check_security	   := TRUE;
5809     	l_control_rec.clear_dependents 	   := TRUE;
5810 	l_control_rec.default_attributes   := TRUE;
5811 	l_control_rec.change_attributes	   := TRUE;
5812 	l_control_rec.validate_entity	   := TRUE;
5813     	l_control_rec.write_to_DB          := TRUE;
5814     	l_control_rec.process              := FALSE;
5815 
5816         l_line_tbl(1) 	          := l_line_rec;
5817 
5818 	Oe_Order_Pvt.Lines
5819 	(    p_validation_level			=> FND_API.G_VALID_LEVEL_NONE
5820 	,	p_control_rec			=> l_control_rec
5821 	,	p_x_line_tbl			=> l_line_tbl
5822 	,	p_x_old_line_tbl		=> l_old_line_tbl
5823 	,       x_return_status                 => x_return_status
5824 	);
5825 
5826          OE_GLOBALS.G_CASCADING_REQUEST_LOGGED := TRUE;
5827        END IF;
5828       FETCH prg_lines into l_prg_line_id, l_rltd_price_adj_id;
5829    End Loop;
5830    CLOSE prg_lines;
5831   if l_debug_level > 0 then
5832     oe_debug_pub.add('reason:'||OE_GLOBALS.G_REASON_CODE,3);
5833     oe_debug_pub.add('captured:'||OE_GLOBALS.G_captured_reason,3);
5834     oe_debug_pub.add('audit:'||OE_GLOBALS.G_version_audit,3);
5835    end if;
5836    OE_GLOBALS.G_REASON_CODE := l_reason_code;
5837    OE_GLOBALS.G_REASON_COMMENTS := l_reason_comments;
5838    OE_GLOBALS.G_CAPTURED_REASON := l_captured_reason;
5839 
5840    IF l_debug_level  > 0 THEN
5841        oe_debug_pub.add(  'EXITING OEXULADB.DELETE_PRG_LINES' ) ;
5842    END IF;
5843   EXCEPTION
5844     WHEN OTHERS THEN
5845     IF l_debug_level  > 0 THEN
5846         oe_debug_pub.add(  'EXCEPTION IN DELETE_PRG_LINES'||SQLERRM , 3 ) ;
5847     END IF;
5848     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5849   End Delete_PRG_Lines;
5850 
5851 Procedure Check_Canceled_PRG(p_old_line_rec in Oe_Order_Pub.line_rec_type,
5852                              p_new_line_rec in Oe_Order_Pub.line_rec_type) Is
5853                              --
5854                              l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
5855                              --
5856 Begin
5857 
5858 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
5859        IF (nvl(p_new_line_rec.booked_flag, 'X') <> 'Y') Then
5860         IF (p_new_line_rec.operation = OE_GLOBALS.G_OPR_DELETE OR p_new_line_rec.ordered_quantity = 0) Then
5861   	  IF l_debug_level  > 0 THEN
5862   	      oe_debug_pub.add(  'OPEN ORDER , ORDERED QTY CHANGED TO ZERO , DELETE ALL PRG LINES' ) ;
5863   	  END IF;
5864  	  Delete_PRG_Lines(p_new_line_rec.line_id, p_new_line_rec.operation);
5865         END IF;
5866       ELSE
5867 	IF (p_new_line_rec.ordered_quantity = 0 AND
5868 	  (p_new_line_rec.change_reason is NOT NULL OR
5869 	      p_new_line_rec.change_reason <> FND_API.G_MISS_CHAR))
5870         OR p_new_line_rec.operation = OE_GLOBALS.G_OPR_DELETE Then
5871   	     IF l_debug_level  > 0 THEN
5872   	         oe_debug_pub.add(  'BOOKED ORDER , ORDERED QTY CHANGED TO ZERO , DELETE ALL PRG LINES' ) ;
5873   	     END IF;
5874 	     Delete_PRG_Lines(p_new_line_rec.line_id, p_new_line_rec.operation);
5875         END IF;
5876       END IF;
5877      End if;
5878 EXCEPTION
5879   WHEN OTHERS THEN
5880   IF l_debug_level  > 0 THEN
5881       oe_debug_pub.add(  'EXCEPTION IN CHECK_CANCELED_PRG'||SQLERRM , 3 ) ;
5882   END IF;
5883   RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5884 End Check_Canceled_PRG;
5885 
5886 ------------------------------------------------------------------------------------
5887 --Called from OEXULINB.pls apply_attribute_changes to check is a repricing is required
5888 --Not yet fully implemented. Will work in when getting the lock of OEXULINB.pls
5889 ------------------------------------------------------------------------------------
5890 Procedure Process_Pricing (p_x_new_line_rec In OUT Nocopy Oe_Order_Pub.Line_Rec_Type,
5891                            p_old_line_rec   In Oe_Order_Pub.Line_Rec_Type,
5892                            p_no_price_flag  In Boolean) Is
5893 
5894 l_price_flag                 Varchar2(1):='Y';
5895 l_charges_for_included_item  VARCHAR2(1):=NVL(FND_PROFILE.VALUE('ONT_CHARGES_FOR_INCLUDED_ITEM'),'N');
5896 l_return_status              VARCHAR2(10);
5897 l_pricing_related_changes    Boolean :=False;
5898 l_margin_related_changes     Boolean :=False;
5899 
5900 --
5901 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
5902 --
5903 Begin
5904     IF l_debug_level  > 0 THEN
5905         oe_debug_pub.add(  'ENTERING OE_LINE_ADJ_UTIL.PROCESS_PRICING CALLED FROM ULINB' ) ;
5906     END IF;
5907 
5908     IF NOT OE_GLOBALS.Equal(p_x_new_line_rec.cancelled_quantity,p_old_line_rec.cancelled_quantity)
5909            and p_x_new_line_rec.cancelled_quantity > 0
5910     Then
5911        IF l_debug_level  > 0 THEN
5912            oe_debug_pub.add(  ' USER CANCELS LINE , CANCELLED QUANTITY:'||P_X_NEW_LINE_REC.CANCELLED_QUANTITY ) ;
5913        END IF;
5914 
5915        --bug7491829 added p_ordered_quantity
5916        Process_Cancelled_Lines(p_x_new_line_rec=>p_x_new_line_rec,
5917                                p_ordered_quantity => p_old_line_rec.ordered_quantity);
5918     End If;
5919 
5920     IF  Is_Pricing_Related_Change(p_new_line_rec => p_x_new_line_rec,
5921                                    p_old_line_rec  => p_old_line_rec)
5922     THEN
5923          l_pricing_related_changes := True;
5924     End If;
5925 
5926 
5927   IF     NOT OE_GLOBALS.Equal(p_x_new_line_rec.unit_cost,p_old_line_rec.unit_cost)
5928   Then
5929          IF l_debug_level  > 0 THEN
5930              oe_debug_pub.add(  ' BOOKED FLAG OR UNIT COST CHANGES' ) ;
5931          END IF;
5932          l_margin_related_changes := True;
5933   End If;
5934 
5935 
5936   IF l_pricing_related_changes THEN
5937         Register_Changed_Lines(p_line_id   => p_x_new_line_rec.line_id,
5938                                 p_header_id => p_x_new_line_rec.header_id,
5939                                 p_operation => p_x_new_line_rec.operation);
5940 
5941      --bug 2965218
5942         If G_GROUP_PRICING_DSP IS NULL and p_x_new_line_rec.source_document_type_id = 5 Then
5943 	    G_GROUP_PRICING_DSP := nvl(fnd_profile.value('ONT_GRP_PRICE_FOR_DSP'),'N');
5944         End If;
5945 	if p_x_new_line_rec.source_document_type_id = 5 and G_GROUP_PRICING_DSP = 'N' Then
5946            If nvl(G_SEND_ALL_LINES_FOR_DSP,'N') <> 'Y' Then
5947               G_SEND_ALL_LINES_FOR_DSP := 'N';
5948            End If;
5949         else
5950             G_SEND_ALL_LINES_FOR_DSP := 'Y';
5951         end if;
5952        If l_debug_level > 0 Then
5953           oe_debug_pub.add('G_GROUP_PRICING_DSP = '||G_GROUP_PRICING_DSP);
5954        End If;
5955 
5956 	If G_CODE_RELEASE_LEVEL IS NULL THEN
5957 	   G_CODE_RELEASE_LEVEL := OE_CODE_CONTROL.CODE_RELEASE_LEVEL;
5958 	End If;
5959 
5960        If l_debug_level > 0 Then
5961           oe_debug_pub.add('G_CODE_RELEASE_LEVEL = '||G_CODE_RELEASE_LEVEL);
5962        End If;
5963 
5964        if p_x_new_line_rec.ordered_quantity2 is not null and G_CODE_RELEASE_LEVEL < '110509' Then
5965           G_OPM_ITEM_CATCHWEIGHT_USED := 'Y';
5966        End If;
5967   END IF;
5968 
5969 
5970   IF  (l_margin_related_changes or l_pricing_related_changes)
5971       AND p_x_new_line_rec.booked_flag = 'Y'  THEN
5972      IF OE_FEATURES_PVT.Is_Margin_Avail THEN
5973          --attributes affect selling price changes, we log a delayed request to
5974          --evaluate margin, margin_hold procedure will hold the order if
5975          --margin falls below a intended setup margin
5976         IF Oe_Sys_Parameters.Value('COMPUTE_MARGIN') <> 'N' Then
5977          IF l_debug_level  > 0 THEN
5978              oe_debug_pub.add(  'LOGGING DELAYED REQUEST FOR MARGIN HOLD FOR BOOKED LINE_ID:'||P_X_NEW_LINE_REC.LINE_ID ) ;
5979          END IF;
5980          oe_delayed_requests_pvt.log_request(
5981                      p_entity_code            => OE_GLOBALS.G_ENTITY_ALL,
5982                      p_entity_id              => p_x_new_line_rec.header_id,
5983 
5984                      p_requesting_entity_code => OE_GLOBALS.G_ENTITY_ALL,
5985                      p_requesting_entity_id   => p_x_new_line_rec.header_id,
5986 
5987                      p_request_type           => 'MARGIN_HOLD',
5988                      x_return_status          => l_return_status);
5989         END IF;
5990      END IF;
5991   END IF;
5992 
5993 
5994 
5995 --MRG BGN, performance bug 4580260 (fp of bug 4273309)
5996 IF OE_FEATURES_PVT.Is_Margin_Avail
5997  AND p_x_new_line_rec.item_type_code NOT IN ('KIT','MODEL','INCLUDED','CLASS','CONFIG','OPTION') THEN
5998  IF l_debug_level  > 0 THEN
5999      oe_debug_pub.add(  'NEW INV ITEM ID = '||P_X_NEW_LINE_REC.INVENTORY_ITEM_ID , 1 ) ;
6000      oe_debug_pub.add(  'OLD INV ITEM ID = '||P_OLD_LINE_REC.INVENTORY_ITEM_ID , 1 ) ;
6001      oe_debug_pub.add(  'NEW SHIP_FROM_ORG_ID = '||P_X_NEW_LINE_REC.SHIP_FROM_ORG_ID , 1 ) ;
6002      oe_debug_pub.add(  'OLD SHIP_FROM_ORG_ID = '||P_OLD_LINE_REC.SHIP_FROM_ORG_ID , 1 ) ;
6003      oe_debug_pub.add(  'NEW PROJECT_ID = '||P_X_NEW_LINE_REC.PROJECT_ID , 1 ) ;
6004      oe_debug_pub.add(  'OLD PROJECT_ID = '||P_OLD_LINE_REC.PROJECT_ID , 1 ) ;
6005      oe_debug_pub.add(  'NEW ACTUAL_SHIPMENT_DATE = '||P_X_NEW_LINE_REC.ACTUAL_SHIPMENT_DATE , 1 ) ;
6006      oe_debug_pub.add(  'OLD ACTUAL_SHIPMENT_DATE = '||P_OLD_LINE_REC.ACTUAL_SHIPMENT_DATE , 1 ) ;
6007      oe_debug_pub.add(  'NEW FULFILLMENT_DATE = '||P_X_NEW_LINE_REC.FULFILLMENT_DATE , 1 ) ;
6008      oe_debug_pub.add(  'OLD FULFILLMENT_DATE = '||P_OLD_LINE_REC.FULFILLMENT_DATE , 1 ) ;
6009      oe_debug_pub.add(  'NEW PRICING_DATE = '||P_X_NEW_LINE_REC.PRICING_DATE , 1 ) ;
6010      oe_debug_pub.add(  'OLD PRICING_DATE = '||P_OLD_LINE_REC.PRICING_DATE , 1 ) ;
6011  END IF;
6012 
6013    IF NOT OE_GLOBALS.Equal(p_x_new_line_rec.inventory_item_id,p_old_line_rec.inventory_item_id)
6014       OR NOT OE_GLOBALS.Equal(p_x_new_line_rec.ship_from_org_id,p_old_line_rec.ship_from_org_id)
6015       OR NOT OE_GLOBALS.Equal(p_x_new_line_rec.project_id,p_old_line_rec.project_id)
6016       OR NOT OE_GLOBALS.Equal(p_x_new_line_rec.actual_shipment_date,p_old_line_rec.actual_shipment_date)
6017       OR NOT OE_GLOBALS.Equal(p_x_new_line_rec.fulfillment_date,p_old_line_rec.fulfillment_date)
6018       OR NOT OE_GLOBALS.Equal(p_x_new_line_rec.pricing_date,p_old_line_rec.pricing_date)
6019     THEN
6020         IF Oe_Sys_Parameters.Value('COMPUTE_MARGIN') <> 'N' Then
6021          IF l_debug_level  > 0 THEN
6022              oe_debug_pub.add(  'BEFORE OE_DELAYED_REQUESTS_PVT.LOG_REQUEST CALL' ) ;
6023              oe_debug_pub.add(  'IN PROCESS_PRICING OEXULADB.PLS' ) ;
6024          END IF;
6025 
6026            oe_delayed_requests_pvt.log_request(
6027                        p_entity_code            => OE_GLOBALS.G_ENTITY_LINE,
6028                        p_entity_id              => p_x_new_line_rec.line_id,
6029                        p_requesting_entity_code => OE_GLOBALS.G_ENTITY_LINE,
6030 
6031                        p_requesting_entity_id   => p_x_new_line_rec.line_id,
6032                        p_request_type           => 'GET_COST',
6033                        x_return_status          => l_return_status);
6034         END IF;
6035      END IF;
6036 
6037 END IF;
6038 --MRG END
6039 
6040 l_pricing_related_changes  :=False;
6041 l_margin_related_changes   :=False;
6042 IF l_debug_level  > 0 THEN
6043     oe_debug_pub.add(  'LEAVING OE_LINE_ADJ_UTIL.PROCESS_PRICING' ) ;
6044 END IF;
6045 End Process_Pricing;
6046 
6047 Procedure Log_Pricing_Requests (p_x_new_line_rec in Out Nocopy Oe_Order_Pub.Line_Rec_Type,
6048                                 p_old_line_rec in Oe_Order_Pub.Line_Rec_Type,
6049                                 p_no_price_flag  Boolean  Default False,
6050                                 p_price_flag     Varchar2 Default 'Y') Is
6051 
6052  l_zero_line_qty     Boolean :=FALSE;
6053  l_price_control_rec QP_PREQ_GRP.control_record_type;
6054  l_x_line_tbl        Oe_Order_Pub.Line_Tbl_Type;
6055  l_return_status     Varchar2(5);
6056  i PLS_INTEGER;
6057  l_x_result_out      Varchar2(5);
6058  --
6059  l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
6060  --
6061 Begin
6062 
6063        IF p_price_flag = 'Y' and
6064 		not p_no_price_flag  and
6065 		nvl(oe_globals.g_pricing_recursion,'N') <> 'Y' and
6066 		p_x_new_line_rec.Ordered_Quantity <> fnd_api.g_miss_num and
6067 		p_x_new_line_rec.order_quantity_uom is not null and
6068 		p_x_new_line_rec.order_quantity_uom <> fnd_api.g_miss_char
6069 	THEN
6070                 --bsadri for cancelled lines l_zero_line_qty is true
6071 
6072                 IF nvl(p_x_new_line_rec.ordered_quantity,0) = 0 THEN
6073                     l_zero_line_qty := TRUE;
6074                 ELSE
6075                     l_zero_line_qty := FALSE;
6076                 END IF;
6077 		If
6078 		( (p_x_new_line_rec.unit_list_price is null or
6079 		  p_x_new_line_rec.Unit_List_Price = fnd_api.g_miss_num or
6080 		  NOT OE_GLOBALS.Equal(p_x_new_line_rec.ordered_quantity,p_old_line_rec.ordered_quantity) or
6081 		  NOT OE_GLOBALS.Equal(p_x_new_line_rec.cancelled_Quantity,p_old_line_rec.cancelled_Quantity) or
6082 		   NOT OE_GLOBALS.Equal(p_x_new_line_rec.order_quantity_uom,p_old_line_rec.order_quantity_uom) or
6083 		   NOT OE_GLOBALS.Equal(p_x_new_line_rec.inventory_item_id,p_old_line_rec.inventory_item_id) )  --fix bug 1388503 btea
6084                   and p_x_new_line_rec.item_type_code <> OE_GLOBALS.G_ITEM_SERVICE
6085 		   )
6086 	   then
6087 
6088 
6089                IF ((OE_GLOBALS.G_UI_FLAG) and (nvl(Oe_Config_Pvt.oecfg_configuration_pricing,'N')='N'))
6090                THEN
6091 
6092           	        l_Price_Control_Rec.pricing_event := 'PRICE';
6093 			l_Price_Control_Rec.calculate_flag := QP_PREQ_GRP.G_SEARCH_N_CALCULATE;
6094 			l_Price_Control_Rec.Simulation_Flag := 'N';
6095 
6096 			l_x_line_tbl(1) := p_x_new_line_rec;
6097                         IF NOT l_zero_line_qty THEN
6098                          --bsadri call the Price_line for non-cancelled lines
6099 			  oe_order_adj_pvt.Price_line(
6100 				X_Return_Status     => l_Return_Status
6101 				,p_Line_id          => p_x_new_line_rec.line_id
6102 				,p_Request_Type_code=> 'ONT'
6103 				,p_Control_rec      => l_Price_Control_Rec
6104 				,p_Write_To_Db		=> FALSE
6105 				,x_Line_Tbl		=> l_x_Line_Tbl
6106 				);
6107 
6108 			   -- Populate Line_rec
6109 			    i:= l_x_Line_Tbl.First;
6110 			    While i is not null loop
6111 				  p_x_new_line_rec := l_x_Line_Tbl(i);
6112 				  i:= l_x_Line_Tbl.Next(i);
6113 			    End Loop;
6114                          END IF;
6115 	   End If;
6116         End If;  --end if for UI Flag Check
6117 
6118 	   IF l_debug_level  > 0 THEN
6119 	       oe_debug_pub.add(  'LOGGING DELAYED REQUEST FOR PRICING' ) ;
6120 	   END IF;
6121 
6122         IF ((OE_GLOBALS.G_UI_FLAG) and (nvl(Oe_Config_Pvt.oecfg_configuration_pricing,'N')='N')) OR
6123             p_x_new_line_rec.item_type_code = 'INCLUDED' THEN
6124           IF l_debug_level  > 0 THEN
6125               oe_debug_pub.add(  'UI MODE OR CONFIG , INCLUDED ITEM'||P_X_NEW_LINE_REC.LINE_ID ) ;
6126           END IF;
6127           IF NOT l_zero_line_qty THEN
6128              --bsadri don't call this for a cancelled line
6129             OE_delayed_requests_Pvt.log_request(
6130 				p_entity_code 			=> OE_GLOBALS.G_ENTITY_LINE,
6131 				p_entity_id         	=> p_x_new_line_rec.line_id,
6132 				p_requesting_entity_code => OE_GLOBALS.G_ENTITY_LINE,
6133 				p_requesting_entity_id   => p_x_new_line_rec.line_id,
6134 				p_request_unique_key1  	=> 'LINE',
6135 		 		p_param1                 => p_x_new_line_rec.header_id,
6136                  		p_param2                 => 'LINE',
6137 		 		p_request_type           => OE_GLOBALS.G_PRICE_LINE,
6138 		 		x_return_status          => l_return_status);
6139 
6140          END IF;
6141          IF p_x_new_line_rec.item_type_code <> 'INCLUDED' THEN
6142            OE_delayed_requests_Pvt.log_request(
6143 				p_entity_code 			=> OE_GLOBALS.G_ENTITY_ALL,
6144 				p_entity_id         	=> p_x_new_line_rec.Header_Id,
6145 				p_requesting_entity_code => OE_GLOBALS.G_ENTITY_ALL,
6146 				p_requesting_entity_id   => p_x_new_line_rec.Header_Id,
6147 				p_request_unique_key1  	=> 'ORDER',
6148 		 		p_param1                 => p_x_new_line_rec.header_id,
6149                  		p_param2                 => 'ORDER',
6150 		 		p_request_type           => OE_GLOBALS.G_PRICE_ORDER,
6151 		 		x_return_status          => l_return_status);
6152           END IF;
6153         ELSE
6154           IF l_debug_level  > 0 THEN
6155               oe_debug_pub.add(  'BATCH MODE' ) ;
6156           END IF;
6157 
6158           OE_delayed_requests_Pvt.log_request(
6159 				p_entity_code 			=> OE_GLOBALS.G_ENTITY_ALL,
6160 				p_entity_id         	=> p_x_new_line_rec.Header_Id,
6161 				p_requesting_entity_code => OE_GLOBALS.G_ENTITY_ALL,
6162 				p_requesting_entity_id   => p_x_new_line_rec.Header_Id,
6163 				p_request_unique_key1  	=> 'BATCH',
6164 		 		p_param1                 => p_x_new_line_rec.header_id,
6165                  		p_param2                 => 'BATCH',
6166 		 		p_request_type           => OE_GLOBALS.G_PRICE_ORDER,
6167 		 		x_return_status          => l_return_status);
6168         END IF;
6169 
6170 	   If p_x_new_line_rec.booked_flag='Y' and p_x_new_line_rec.item_type_code <> 'INCLUDED' Then
6171            OE_delayed_requests_Pvt.log_request(
6172 				p_entity_code 		 => OE_GLOBALS.G_ENTITY_ALL,
6173 				p_entity_id         	 => p_x_new_line_rec.Header_Id,
6174 				p_requesting_entity_code => OE_GLOBALS.G_ENTITY_ALL,
6175 				p_requesting_entity_id   => p_x_new_line_rec.Header_Id,
6176 				p_request_unique_key1  	 => 'BOOK',
6177 		 		p_param1                 => p_x_new_line_rec.header_id,
6178                  		p_param2                 => 'BOOK',
6179 		 		p_request_type           => OE_GLOBALS.G_PRICE_ORDER,
6180 		 		x_return_status          => l_return_status);
6181 	   End If;
6182 
6183      END IF;
6184 
6185 	/* rlanka: Fix for Bug 1729372
6186 
6187             For the new line that is created by Promotional modifier
6188             need to log a delayed request to PRICE_LINE again to apply
6189 	    freight charges.
6190 
6191          */
6192 
6193         IF l_debug_level  > 0 THEN
6194             oe_debug_pub.add(  'PRICE_FLAG = ' || P_PRICE_FLAG ) ;
6195             oe_debug_pub.add(  'G_PRICING_RECURSION = ' || OE_GLOBALS.G_PRICING_RECURSION ) ;
6196             oe_debug_pub.add(  'ORDERED QUANTITY = '|| TO_CHAR ( P_X_NEW_LINE_REC.ORDERED_QUANTITY ) ) ;
6197             oe_debug_pub.add(  'ORDERED QTY UOM = ' || P_X_NEW_LINE_REC.ORDER_QUANTITY_UOM ) ;
6198             oe_debug_pub.add(  'CALCULATE_PRICE_FLAG = '|| P_X_NEW_LINE_REC.CALCULATE_PRICE_FLAG ) ;
6199         END IF;
6200 
6201 
6202 	 if (p_price_flag = 'Y' and
6203             not p_no_price_flag and
6204             oe_globals.g_pricing_recursion = 'Y' and
6205             nvl(p_x_new_line_rec.ordered_quantity,0) <> 0 and
6206             p_x_new_line_rec.Ordered_Quantity <> fnd_api.g_miss_num and
6207             p_x_new_line_rec.order_quantity_uom is not null and
6208             p_x_new_line_rec.order_quantity_uom <> fnd_api.g_miss_char and
6209             p_x_new_line_rec.calculate_price_flag = 'R')
6210         then
6211 
6212            IF l_debug_level  > 0 THEN
6213                oe_debug_pub.add(  'NEW LINE CREATED BY PROMOTIONAL MODIFIER' ) ;
6214                 oe_debug_pub.add(  'RESETTING CALC. PRICE. FLAG TO P' ) ;
6215             END IF;
6216             p_x_new_line_rec.calculate_price_flag := 'P';
6217             IF l_debug_level  > 0 THEN
6218                 oe_debug_pub.add(  'LOGGING A REQUEST TO PRICE_LINE IN BATCH MODE' ) ;
6219             END IF;
6220             OE_delayed_requests_Pvt.log_request(
6221 				p_entity_code           =>OE_GLOBALS.G_ENTITY_ALL,
6222                                 p_entity_id             => p_x_new_line_rec.line_Id,
6223                                 p_requesting_entity_code => OE_GLOBALS.G_ENTITY_ALL,
6224                                 p_requesting_entity_id   => p_x_new_line_rec.line_Id,
6225                                 p_request_unique_key1   => 'BATCH',
6226                                 p_param1                 => p_x_new_line_rec.header_id,
6227                                 p_param2                 => 'BATCH',
6228                                 p_request_type           => OE_GLOBALS.G_PRICE_LINE,
6229                                 x_return_status          => l_return_status);
6230 
6231           if (p_x_new_line_rec.booked_flag = 'Y')
6232           then
6233              IF l_debug_level  > 0 THEN
6234                  oe_debug_pub.add(  'BOOKED ORDER -- LOG A REQUEST TO PRICE LINE' ) ;
6235              END IF;
6236              OE_delayed_requests_Pvt.log_request(
6237                                 p_entity_code           =>OE_GLOBALS.G_ENTITY_ALL,
6238                                 p_entity_id             => p_x_new_line_rec.line_Id,
6239                                 p_requesting_entity_code => OE_GLOBALS.G_ENTITY_ALL,
6240                                 p_requesting_entity_id   => p_x_new_line_rec.line_Id,
6241                                 p_request_unique_key1   => 'BOOK',
6242                                 p_param1                 => p_x_new_line_rec.header_id,
6243                                 p_param2                 => 'BOOK',
6244                                 p_request_type           => OE_GLOBALS.G_PRICE_LINE,
6245                                 x_return_status          => l_return_status);
6246           end if; -- if order is BOOKED
6247 
6248         end if; -- if new line created by Promotional modifier needs to be re-priced.
6249 
6250         -- end of fix for bug 1729372
6251 
6252 	If NOT OE_GLOBALS.Equal(p_x_new_line_rec.Shipped_Quantity,p_old_line_rec.Shipped_Quantity)
6253 	Then
6254            --btea
6255            IF p_x_new_line_rec.line_category_code <> 'RETURN' Then
6256               OE_Shipping_Integration_PVT.Check_Shipment_Line(
6257                  p_line_rec                => p_old_line_rec
6258               ,  p_shipped_quantity        => p_x_new_line_rec.Shipped_Quantity
6259               ,  x_result_out              => l_x_result_out
6260               );
6261 
6262               IF l_x_result_out = OE_GLOBALS.G_PARTIALLY_SHIPPED THEN
6263                -- This line will split, set the calculate_price_flag  to 'P' if 'Y'
6264                 IF (p_x_new_line_rec.calculate_price_flag = 'Y') THEN
6265                   p_x_new_line_rec.calculate_price_flag := 'P';
6266                 END IF;
6267 
6268 
6269               END IF;
6270 
6271            Elsif p_x_new_line_rec.operation = OE_GLOBALS.G_OPR_UPDATE
6272                  and p_x_new_line_rec.split_by = 'SYSTEM'
6273                  and p_x_new_line_rec.split_action_code = 'SPLIT'
6274                  and p_x_new_line_rec.calculate_price_flag = 'Y' Then
6275                  p_x_new_line_rec.calculate_price_flag :='P';
6276            End If;
6277 
6278            OE_delayed_requests_Pvt.log_request(
6279 				p_entity_code 		=> OE_GLOBALS.G_ENTITY_ALL,
6280 				p_entity_id         	=> p_x_new_line_rec.line_id,
6281 				p_requesting_entity_code => OE_GLOBALS.G_ENTITY_ALL,
6282 				p_requesting_entity_id   => p_x_new_line_rec.line_id,
6283 				p_request_unique_key1  	=> 'SHIP',
6284 		 		p_param1                 => p_x_new_line_rec.header_id,
6285                  		p_param2                 => 'SHIP',
6286 		 		p_request_type           => OE_GLOBALS.G_PRICE_LINE,
6287 		 		x_return_status          => l_return_status);
6288 	End If;
6289 
6290 End;
6291 
6292 
6293 /*---------------------------------------------------------------------*/
6294  --Will be called by delayed request to reset cache changed line tbl
6295 /*---------------------------------------------------------------------*/
6296 Procedure Delete_Changed_Lines_Tbl Is
6297 Begin
6298   G_CHANGED_LINE_TBL.delete;
6299   G_SEND_ALL_LINES_FOR_DSP := NULL;
6300   G_OPM_ITEM_CATCHWEIGHT_USED := NULL;
6301 End;
6302 
6303 
6304 /*----------------------------------------------------------------------*/
6305  --Process_Cancelled_Lines.  This is performance fix on cancel line
6306  --in which we either combine all events to call pricing engine once
6307  --or not calling at all depending on the output of QP_UTIL_PUB.Get_Order_Lines_Status
6308 /*----------------------------------------------------------------------*/
6309 
6310 Procedure Process_Cancelled_Lines(p_x_new_line_rec In Oe_Order_Pub.line_rec_type, p_ordered_quantity In Number) Is
6311 --bug7491829 added p_ordered_quantity
6312 
6313 l_order_status_rec QP_UTIL_PUB.ORDER_LINES_STATUS_REC_TYPE;
6314 l_return_status Varchar2(5);
6315 l_event_str Varchar2(25);
6316 --
6317 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
6318 --
6319 Begin
6320 
6321        --User trying to cancle line, different processing for cancelation due to performance
6322        --considerations
6323        IF l_debug_level  > 0 THEN
6324            oe_debug_pub.add(  ' ENTERING PROCESS_CANCELLED_LINES' ) ;
6325        END IF;
6326 
6327        ------------------------------------------------------
6328        --Special case, bypass regular pricing path
6329        --we log performant version of pricing delayed request
6330        ------------------------------------------------------
6331        OE_GLOBALS.G_PRICE_FLAG := 'N';
6332 
6333 
6334        QP_UTIL_PUB.Get_Order_Lines_Status('BATCH,BOOK',l_order_status_rec);
6335        ----------------------------------------------------------------------
6336        --User has totally cancelled a line, price changes pertaining to this
6337        --line has no effect since the quantity is 0.  Therefore, only pass
6338        --all the lines to pricing engine when all_lines_flag = 'Y'
6339        ----------------------------------------------------------------------
6340        IF l_debug_level  > 0 THEN
6341            oe_debug_pub.add(  ' ALL LINES FLAG RETURNED FROM QP_UTIL_PUB:'||L_ORDER_STATUS_REC.ALL_LINES_FLAG ) ;
6342            oe_debug_pub.add(  ' CHANGED LINES FLAG RETURNED FROM QP_UTIL_PUB:'||L_ORDER_STATUS_REC.CHANGED_LINES_FLAG ) ;
6343 	   oe_debug_pub.add(  ' SUMMARY LINE FLAG RETURNED FROM QP_UTIL_PUB:'||L_ORDER_STATUS_REC.SUMMARY_LINE_FLAG ) ;
6344        END IF;
6345 
6346 
6347 
6348        If p_x_new_line_rec.ordered_quantity = 0 Then
6349           IF l_debug_level  > 0 THEN
6350               oe_debug_pub.add(  ' USER HAS TOTALLY CANCELLED THE LINE' ) ;
6351           END IF;
6352 
6353           If p_x_new_line_rec.booked_flag = 'Y' Then
6354             l_event_str:= 'ORDER,BOOK';
6355           Else
6356             l_event_str:='ORDER';
6357           End If;
6358 
6359 	  --FP bug 3335024 included summary line flag condition below
6360           If l_order_status_rec.ALL_LINES_FLAG = 'Y'  or l_order_status_rec.summary_line_flag = 'Y' Then
6361              IF p_x_new_line_rec.item_type_code not in ('INCLUDED','CONFIG') THEN
6362                OE_delayed_requests_Pvt.log_request(
6363 				p_entity_code 		=> OE_GLOBALS.G_ENTITY_ALL,
6364 				p_entity_id         	=> p_x_new_line_rec.Header_Id,
6365 				p_requesting_entity_code => OE_GLOBALS.G_ENTITY_ALL,
6366 				p_requesting_entity_id   => p_x_new_line_rec.Header_Id,
6367 				p_request_unique_key1  	=> 'ORDER,BOOK',
6368 		 		p_param1                 => p_x_new_line_rec.header_id,
6369                  		p_param2                 => l_event_str,
6370 		 		p_request_type           => OE_GLOBALS.G_PRICE_ORDER,
6371 		 		x_return_status          => l_return_status);
6372 
6373             End If;
6374           End If;
6375           /* BUG 2013611 BEGIN */
6376 	  IF l_debug_level  > 0 THEN
6377 	      oe_debug_pub.add(  'LOG REVERSE_LIMITS DELAYED REQUEST FROM PROCESS_CANCELLED_LINES ' , 1 ) ;
6378 	  END IF;
6379           OE_delayed_requests_Pvt.log_request(
6380 	                        p_entity_code 		 => OE_GLOBALS.G_ENTITY_LINE,
6381 				p_entity_id              => p_x_new_line_rec.line_id,
6382 				p_requesting_entity_code => OE_GLOBALS.G_ENTITY_LINE,
6383 				p_requesting_entity_id   => p_x_new_line_rec.line_id,
6384 				p_request_unique_key1  	 => 'LINE',
6385 		 		p_param1                 => 'CANCEL',
6386 		 		p_param2                 => p_x_new_line_rec.price_request_code,
6387 		 		p_param3                 => NULL,
6388 		 		p_param4                 => NULL,
6389 		 		p_param5                 => NULL,
6390 		 		p_param6                 => NULL,
6391 		 		p_request_type           => OE_GLOBALS.G_REVERSE_LIMITS,
6392 		 		x_return_status          => l_return_status);
6393 	  IF l_debug_level  > 0 THEN
6394 	      oe_debug_pub.add(  'REVERSE_LIMITS DELAYED REQUEST HAS BEEN LOGGED' , 1 ) ;
6395 	  END IF;
6396           /* BUG 2013611 END */
6397        Else        --User partially cancel the line
6398           IF l_debug_level  > 0 THEN
6399               oe_debug_pub.add(  ' USER HAS PARTIALLY CANCELLED THE LINE' ) ;
6400           END IF;
6401 
6402 
6403           If p_x_new_line_rec.booked_flag = 'Y' Then
6404             -- l_event_str:= 'LINE,ORDER,BOOK';
6405             -- changed 'LINE,ORDER' to 'BATCH'.
6406             l_event_str:= 'BATCH,BOOK';
6407           Else
6408             -- l_event_str:='LINE,ORDER';
6409             l_event_str:='BATCH';
6410           End If;
6411 
6412           If l_order_status_rec.ALL_LINES_FLAG = 'Y' or
6413              l_order_status_rec.Changed_Lines_Flag = 'Y'
6414           Then
6415              --treat changed_lines as all_lines for now, will to
6416              --differential this 2 type in the future
6417             IF p_x_new_line_rec.item_type_code not in ('INCLUDED','CONFIG') THEN
6418                OE_delayed_requests_Pvt.log_request(
6419 				p_entity_code 		 => OE_GLOBALS.G_ENTITY_ALL,
6420 				p_entity_id         	 => p_x_new_line_rec.Header_Id,
6421 				p_requesting_entity_code => OE_GLOBALS.G_ENTITY_ALL,
6422 				p_requesting_entity_id   => p_x_new_line_rec.Header_Id,
6423 				p_request_unique_key1  	 => 'BATCH,BOOK',
6424 		 		p_param1                 => p_x_new_line_rec.header_id,
6425                  		p_param2                 => l_event_str,
6426 		 		p_request_type           => OE_GLOBALS.G_PRICE_ORDER,
6427 		 		x_return_status          => l_return_status);
6428 
6429              End If; --not in ('INCLUDED','CONFIG')
6430           End If; --ALL_LINES or Change_lines flag
6431 
6432          --bug7491829
6433 
6434           IF l_debug_level  > 0 THEN
6435               oe_debug_pub.add(  'LOG REVERSE_LIMITS DELAYED REQUEST FROM
6436               PROCESS_CANCELLED_LINES FOR PARTIAL CANCEL CASE' , 1 ) ;
6437           END IF;
6438 
6439           OE_delayed_requests_Pvt.log_request(
6440                               p_entity_code            => OE_GLOBALS.G_ENTITY_LINE,
6441                               p_entity_id              => p_x_new_line_rec.line_id,
6442                               p_requesting_entity_code => OE_GLOBALS.G_ENTITY_LINE,
6443                               p_requesting_entity_id   => p_x_new_line_rec.line_id,
6444                               p_request_unique_key1    => 'LINE',
6445                               p_param1                 => 'AMEND',
6446                               p_param2                 => p_x_new_line_rec.price_request_code,
6447                               p_param3                 => p_ordered_quantity,
6448                               p_param4                 => p_x_new_line_rec.ordered_quantity,
6449                               p_param5                 => NULL,
6450                               p_param6                 => NULL,
6451                               p_request_type           =>OE_GLOBALS.G_REVERSE_LIMITS,
6452                               x_return_status          => l_return_status);
6453 
6454           IF l_debug_level  > 0 THEN
6455               oe_debug_pub.add(  'REVERSE_LIMITS DELAYED REQUEST HAS BEEN LOGGED' , 1 ) ;
6456           END IF;
6457 
6458        --bug7491829
6459 
6460        End If;
6461 
6462  IF l_debug_level  > 0 THEN
6463      oe_debug_pub.add(  ' LEAVING PROCESS_CANCELLED_LINES' ) ;
6464  END IF;
6465 End;
6466 
6467 /*----------------------------------------------------------------------------*/
6468   --Register Changed lines in cache for performance
6469 /*----------------------------------------------------------------------------*/
6470 Procedure Register_Changed_Lines(p_line_id   in Number,
6471                                  p_header_id in Number,
6472                                  p_operation in Varchar2) Is
6473 l_return_status Varchar2(15);
6474 --
6475 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
6476 --
6477 Begin
6478   IF l_debug_level  > 0 THEN
6479       oe_debug_pub.add(  ' ENTERING OE_LINE_ADJ_UTIL.REGISTER_CHANGED_LINES' ) ;
6480       oe_debug_pub.add(  ' P_LINE_ID:'||P_LINE_ID||'+P_HEADER_ID:'||P_HEADER_ID ) ;
6481   END IF;
6482 
6483   -----------------------------------------------------------------------------------
6484   --For performance reason, we only need to log delay request to reset the cache once
6485   --per saving.
6486   --When G_CHANGED_LINE_TBL has records, we know that the delayed request for reseting
6487   --the cahce has been logged; therefore, I need not log it.
6488   ------------------------------------------------------------------------------------
6489   If G_CHANGED_LINE_TBL.Count = 0 Then
6490     IF l_debug_level  > 0 THEN
6491         oe_debug_pub.add(  ' LOGGING DELAYED REQUEST TO RESET G_CHANGED_LINE_TBL' ) ;
6492     END IF;
6493     oe_delayed_requests_pvt.log_request(
6494 		p_entity_code            => OE_GLOBALS.G_ENTITY_ALL,
6495 		p_entity_id      	 => p_header_id,
6496 		p_requesting_entity_code => OE_GLOBALS.G_ENTITY_ALL,
6497 		p_requesting_entity_id   => p_header_id,
6498 		p_request_type   	 => OE_GLOBALS.G_DEL_CHG_LINES,
6499 		x_return_status  	 => l_return_status);
6500     IF l_debug_level  > 0 THEN
6501         oe_debug_pub.add(  ' RETURN STATUS FROM THE DELAYED REQUEST:'||L_RETURN_STATUS ) ;
6502     END IF;
6503   End If;
6504 
6505   If p_operation In (OE_GLOBALS.G_OPR_CREATE,OE_GLOBALS.G_OPR_UPDATE) Then
6506       --bug 3020702 begin
6507       G_CHANGED_LINE_TBL(mod(p_line_id,G_BINARY_LIMIT)).line_id :=p_line_id;
6508       G_CHANGED_LINE_TBL(mod(p_line_id,G_BINARY_LIMIT)).header_id :=p_header_id;
6509       --bug 3020702 end
6510   Elsif p_operation = OE_GLOBALS.G_OPR_DELETE Then
6511     If G_CHANGED_LINE_TBL.exists(mod(p_line_id,G_BINARY_LIMIT)) Then
6512        G_CHANGED_LINE_TBL.delete(mod(p_line_id,G_BINARY_LIMIT));
6513     End If;
6514   End If;
6515 
6516   IF l_debug_level  > 0 THEN
6517       oe_debug_pub.add(  ' LEAVING OE_LINE_ADJ_UTIL.REGISTER_CHANGED_LINES' ) ;
6518   END IF;
6519 End;
6520 
6521 Procedure Get_Service_Lines(p_header_id   IN NUMBER,
6522                             x_line_id_tbl OUT NOCOPY OE_ORDER_ADJ_PVT.Index_TBL_TYPE) IS
6523 Cursor get_service_cur IS
6524 Select line_id,
6525        service_reference_line_id
6526 From   oe_order_lines_all
6527 Where  header_id = p_header_id
6528 And    service_reference_line_id IS NOT NULL;
6529 
6530 Begin
6531   For J in get_service_cur Loop
6532      x_line_id_tbl(J.service_reference_line_id):=J.line_id;
6533   End Loop;
6534 End;
6535 
6536 /* Added the following procedure to fix the bug 2917690 */
6537 
6538 Procedure Change_adj_for_uom_change(p_x_line_rec    IN OUT NOCOPY  OE_Order_PUB.Line_Rec_Type
6539                                      ) Is
6540 l_return_status Varchar2(15);
6541 l_old_pricing_qty               NUMBER;
6542 l_new_pricing_qty               NUMBER;
6543 
6544 Begin
6545   Oe_Debug_Pub.add(' Entering OE_LINE_ADJ_UTIL.Change_adj_for_uom_change');
6546 
6547   IF  p_x_line_rec.Pricing_quantity is not null and
6548       p_x_line_rec.Pricing_quantity <> FND_API.G_MISS_NUM and
6549       p_x_line_rec.Pricing_quantity <> 0 THEN
6550 
6551          l_old_pricing_qty := p_x_line_rec.Pricing_quantity ;
6552          l_new_pricing_qty :=
6553                               OE_Order_Misc_Util.convert_uom(
6554                                         p_x_line_rec.inventory_item_id,
6555                                         p_x_line_rec.order_quantity_uom,
6556                                         p_x_line_rec.pricing_quantity_uom,
6557                                         p_x_line_rec.ordered_quantity
6558                                                 );
6559          update oe_price_adjustments
6560          set adjusted_amount = adjusted_amount * l_new_pricing_qty / l_old_pricing_qty
6561          where line_id = p_x_Line_rec.line_id
6562          and list_line_type_code in ('DIS','SUR')
6563          and applied_flag = 'Y'
6564          and   updated_flag = 'Y'
6565          and   arithmetic_operator in ('AMT' , '%' , 'NEWPRICE');
6566 
6567          update oe_price_adjustments
6568          set operand   = operand * l_new_pricing_qty / l_old_pricing_qty
6569          where line_id = p_x_Line_rec.line_id
6570          and list_line_type_code in ('DIS','SUR')
6571          and applied_flag = 'Y'
6572          and   updated_flag = 'Y'
6573          and   arithmetic_operator in ('AMT' , 'NEWPRICE');
6574   END IF;
6575 
6576   Oe_Debug_Pub.add(' Leaving OE_LINE_ADJ_UTIL.Change_adj_for_uom_change');
6577 End;
6578 
6579 /* End of the procedure added to fix the bug 2917690 */
6580 
6581 Function has_service_lines(p_header_id IN NUMBER) Return Boolean
6582 IS
6583 l_dummy NUMBER;
6584 Begin
6585   Select line_id
6586   INTO   l_dummy
6587   From   OE_ORDER_LINES_ALL
6588   Where  header_id = p_header_id
6589   AND    service_reference_line_id IS NOT NULL
6590   AND    rownum = 1;
6591 
6592   RETURN True;
6593 Exception
6594   When NO_DATA_FOUND Then
6595     Return False;
6596 End;
6597 
6598 Procedure Set_PRG_Cache(p_header_id IN NUMBER) AS
6599    Cursor prg_cur is
6600    select adj1.line_id line_id
6601    from oe_price_adjustments adj1,
6602         oe_price_adj_assocs  assoc,
6603         oe_price_adjustments adj2
6604    where adj1.price_adjustment_id = assoc.rltd_price_adj_id AND
6605          assoc.price_adjustment_id = adj2.price_adjustment_id AND
6606          adj2.list_line_type_code = 'PRG' AND
6607          adj2.header_id = p_header_id;
6608   Begin
6609      /*open prg_cur;
6610      fetch prg_cur BULK COLLECT INTO G_PRG_TBL;
6611      close prg_cur;*/
6612 
6613      FOR prg IN prg_cur LOOP
6614        G_PRG_TBL(MOD(prg.line_id,G_BINARY_LIMIT)):= prg.line_id;
6615      END LOOP;
6616   End;
6617 
6618 Procedure Reset_PRG_Cache As
6619    Begin
6620       G_PRG_TBL.DELETE;
6621    End;
6622 
6623 Function IS_PRG_LINE(p_line_id IN NUMBER) RETURN BOOLEAN AS
6624    Begin
6625       IF G_PRG_TBL.EXISTS(MOD(p_line_id,G_BINARY_LIMIT)) THEN
6626 	 Return TRUE;
6627       ELSE
6628 	 Return FALSE;
6629       END IF;
6630    End;
6631 
6632 END OE_Line_Adj_Util;