1 PACKAGE BODY OE_Default_Header_Adj AS
2 /* $Header: OEXDHADB.pls 120.1 2010/11/25 08:52:16 slagiset ship $ */
3
4 -- Global constant holding the package name
5
6 G_PKG_NAME CONSTANT VARCHAR2(30) := 'OE_Default_Header_Adj';
7
8 -- Package global used within the package.
9
10 -- For bug 2155582
11 g_header_adj_rec OE_ORDER_PUB.Header_Adj_Rec_Type;
12
13 -- Get functions.
14
15 FUNCTION Get_Price_Adjustment
16 RETURN NUMBER
17 IS
18 l_adjustment_id NUMBER := NULL;
19 BEGIN
20
21 SELECT OE_PRICE_ADJUSTMENTS_S.NEXTVAL
22 INTO l_adjustment_id
23 FROM DUAL;
24
25 RETURN l_adjustment_id;
26
27 END Get_Price_Adjustment;
28
29
30 PROCEDURE Attributes
31 ( p_x_Header_Adj_rec IN out nocopy OE_Order_PUB.Header_Adj_Rec_Type
32 , p_old_Header_Adj_rec IN OE_Order_PUB.Header_Adj_Rec_Type
33 , p_iteration IN NUMBER := 1
34 )
35 IS
36
40 l_Modifiers_Rec OE_Order_Cache.Modifiers_Rec_Type;
37 --Commented for bug 2155582
38 --l_old_Header_Adj_rec OE_AK_HEADER_PRCADJS_V%ROWTYPE;
39 l_operation VARCHAR2(30);
41
42 BEGIN
43 oe_debug_pub.add('Enter OE_Default_Header_Adj.Attributes');
44
45 IF p_x_header_Adj_rec.operation = OE_GLOBALS.G_OPR_CREATE AND
46 p_x_header_Adj_rec.list_line_type_code = 'FREIGHT_CHARGE'
47 THEN
48 IF p_x_header_Adj_rec.estimated_flag IS NULL OR
49 p_x_header_Adj_rec.estimated_flag = FND_API.G_MISS_CHAR
50 THEN
51 p_x_header_Adj_rec.estimated_flag := 'Y';
52 END IF;
53 IF p_x_header_Adj_rec.invoiced_flag IS NULL OR
54 p_x_header_Adj_rec.invoiced_flag = FND_API.G_MISS_CHAR
55 THEN
56 p_x_header_Adj_rec.invoiced_flag := 'N';
57 END IF;
58 IF p_x_header_Adj_rec.credit_or_charge_flag IS NULL OR
59 p_x_header_Adj_rec.credit_or_charge_flag = FND_API.G_MISS_CHAR
60 THEN
61 p_x_header_Adj_rec.credit_or_charge_flag := 'D';
62 END IF;
63 END IF;
64
65 -- /* Commenting for bug 2155582
66 -- -- Due to incompatibilities in the record type structure
67 -- -- copy the data to a rowtype record format
68 -- OE_Header_Adj_UTIL.API_Rec_To_Rowtype_Rec
69 -- (p_header_Adj_rec => p_x_header_adj_rec,
70 -- x_rowtype_rec => g_Header_Adj_rec);
71 -- OE_Header_Adj_UTIL.API_Rec_To_Rowtype_Rec
72 -- (p_header_Adj_rec => p_old_header_adj_rec,
73 -- x_rowtype_rec => l_old_Header_Adj_rec);
74 -- */
75
76 g_header_adj_rec := p_x_header_adj_rec;
77
78 -- For some fields, get hardcoded defaults based on the operation
79 l_operation := p_x_header_Adj_rec.operation;
80
81 IF l_operation = OE_GLOBALS.G_OPR_CREATE THEN
82 -- 3709642
83 IF nvl(g_header_Adj_rec.price_adjustment_id,FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM THEN
84 g_header_Adj_rec.price_adjustment_id := Get_Price_Adjustment;
85 END IF;
86
87 END IF;
88
89 If g_header_Adj_rec.list_line_id <> FND_API.G_MISS_NUM and g_header_Adj_rec.list_line_id is not null then
90
91 l_Modifiers_Rec:= OE_Order_Cache.Load_List_Lines(g_header_Adj_rec.list_line_id);
92
93 IF g_header_Adj_rec.AUTOMATIC_FLAG = FND_API.G_MISS_CHAR or
94 g_header_Adj_rec.AUTOMATIC_FLAG is null THEN
95 g_header_Adj_rec.AUTOMATIC_FLAG := l_Modifiers_Rec.AUTOMATIC_FLAG;
96 End If;
97
98 IF g_header_Adj_rec.List_line_type_code = FND_API.G_MISS_CHAR or
99 g_header_Adj_rec.List_line_type_code is null THEN
100 g_header_Adj_rec.List_line_type_code := l_Modifiers_Rec.List_line_type_code;
101 End If;
102
103 IF g_header_Adj_rec.update_allowed = FND_API.G_MISS_CHAR or
104 g_header_Adj_rec.update_allowed is null THEN
105 g_header_Adj_rec.update_allowed := l_Modifiers_Rec.override_flag;
106 End If;
107
108 IF g_header_Adj_rec.operand = FND_API.G_MISS_NUM or
109 g_header_Adj_rec.operand is null THEN
110 g_header_Adj_rec.operand := l_Modifiers_Rec.operand;
111 End If;
112
113 IF g_header_Adj_rec.Arithmetic_operator = FND_API.G_MISS_CHAR or
114 g_header_Adj_rec.Arithmetic_operator is null THEN
115 g_header_Adj_rec.Arithmetic_operator := l_Modifiers_Rec.Arithmetic_operator;
116 End If;
117
118 IF g_header_Adj_rec.Pricing_phase_id = FND_API.G_MISS_NUM or
119 g_header_Adj_rec.Pricing_phase_id is null THEN
120 g_header_Adj_rec.Pricing_phase_id := l_Modifiers_Rec.Pricing_phase_id;
121 End If;
122
123 IF g_header_Adj_rec.charge_type_code = FND_API.G_MISS_CHAR or
124 g_header_Adj_rec.charge_type_code is null THEN
125 g_header_Adj_rec.charge_type_code := l_Modifiers_Rec.charge_type_code;
126 End If;
127
128 IF g_header_Adj_rec.charge_subtype_code = FND_API.G_MISS_CHAR or
129 g_header_Adj_rec.charge_subtype_code is null THEN
130 g_header_Adj_rec.charge_subtype_code := l_Modifiers_Rec.charge_subtype_code;
131 End If;
132
133 IF g_header_Adj_rec.list_line_no = FND_API.G_MISS_CHAR or
134 g_header_Adj_rec.list_line_no is null THEN
135 g_header_Adj_rec.list_line_no := l_Modifiers_Rec.list_line_no;
136 End If;
137
138 IF g_header_Adj_rec.benefit_qty = FND_API.G_MISS_NUM or
139 g_header_Adj_rec.benefit_qty is null THEN
140 g_header_Adj_rec.benefit_qty := l_Modifiers_Rec.benefit_qty;
141 End If;
142
143 IF g_header_Adj_rec.benefit_uom_code = FND_API.G_MISS_CHAR or
144 g_header_Adj_rec.benefit_uom_code is null THEN
145 g_header_Adj_rec.benefit_uom_code := l_Modifiers_Rec.benefit_uom_code;
146 End If;
147
148 IF g_header_Adj_rec.Accrual_conversion_rate = FND_API.G_MISS_NUM or
149 g_header_Adj_rec.Accrual_conversion_rate is null THEN
150 g_header_Adj_rec.Accrual_conversion_rate := l_Modifiers_Rec.Accrual_conversion_rate;
151 End If;
152
153 IF g_header_Adj_rec.pricing_group_sequence = FND_API.G_MISS_NUM or
154 g_header_Adj_rec.pricing_group_sequence is null THEN
155 g_header_Adj_rec.pricing_group_sequence := l_Modifiers_Rec.pricing_group_sequence;
156 End If;
157
158 IF g_header_Adj_rec.modifier_level_Code = FND_API.G_MISS_CHAR or
159 g_header_Adj_rec.modifier_level_Code is null THEN
160 g_header_Adj_rec.modifier_level_Code := l_Modifiers_Rec.modifier_level_Code;
161 End If;
162
163 IF g_header_Adj_rec.Price_break_type_code = FND_API.G_MISS_CHAR or
164 g_header_Adj_rec.Price_break_type_code is null THEN
165 g_header_Adj_rec.Price_break_type_code := l_Modifiers_Rec.Price_break_type_code;
166 End If;
167
168 IF g_header_Adj_rec.substitution_attribute = FND_API.G_MISS_CHAR or
169 g_header_Adj_rec.substitution_attribute is null THEN
170 g_header_Adj_rec.substitution_attribute := l_Modifiers_Rec.substitution_attribute;
171 End If;
172
173 IF g_header_Adj_rec.proration_type_code = FND_API.G_MISS_CHAR or
174 g_header_Adj_rec.proration_type_code is null THEN
175 g_header_Adj_rec.proration_type_code := l_Modifiers_Rec.proration_type_code;
176 End If;
177
178 IF g_header_Adj_rec.Include_on_returns_flag = FND_API.G_MISS_CHAR or
179 g_header_Adj_rec.Include_on_returns_flag is null THEN
180 g_header_Adj_rec.Include_on_returns_flag := l_Modifiers_Rec.Include_on_returns_flag;
181 End If;
182
183 -- Start Bug# 10330632
184 IF g_header_Adj_rec.Accrual_flag = FND_API.G_MISS_CHAR or
185 g_header_Adj_rec.Accrual_flag is null THEN
186 oe_debug_pub.add('Added Accrual Flag defaulting to the list of defaulted values.');
187 g_header_Adj_rec.Accrual_flag := l_Modifiers_Rec.Accrual_flag;
188 End If;
189 -- End Bug# 10330632
190
191 End If;
192
193
194 -- Commented for bug 2155582
195 -- -- call the default handler framework to default the missing attributes
196
197 -- ONT_HEADER_ADJ_Def_Hdlr.Default_Record
198 -- (p_x_rec => g_header_Adj_rec
199 -- ,p_in_old_rec => l_old_header_Adj_rec
200 -- );
201
202 -- -- copy the data back to a format that is compatible with the API architecture
203
204 -- OE_Header_Adj_UTIL.RowType_Rec_to_API_Rec
205 -- (p_record => g_header_Adj_rec
206 -- ,x_api_rec => p_x_header_Adj_rec);
207
208 -- Code added for bug 2155582
209
210 p_x_header_adj_rec := g_header_adj_rec;
211
212 oe_debug_pub.add('call convert_miss_to_null');
213 OE_HEADER_ADJ_UTIL.Convert_Miss_To_Null( p_x_header_adj_rec );
214
215 -- end bug 2155582
216
217 /* 1581620 start */
218
219 IF p_x_header_Adj_rec.modifier_mechanism_type_code = FND_API.G_MISS_CHAR THEN
220 p_x_header_Adj_rec.modifier_mechanism_type_code := NULL;
221 END IF;
222
223 IF p_x_header_Adj_rec.orig_sys_discount_ref = FND_API.G_MISS_CHAR THEN
224 oe_debug_pub.add('discount ref = '||p_x_header_Adj_rec.price_adjustment_id);
225 p_x_header_Adj_rec.orig_sys_discount_ref := 'OE_PRICE_ADJUSTMENTS'||p_x_header_Adj_rec.price_adjustment_id;
226 END IF;
227
228 IF p_x_header_Adj_rec.invoiced_flag = FND_API.G_MISS_CHAR THEN
229 p_x_header_Adj_rec.invoiced_flag := NULL;
230 END IF;
231
232 IF p_x_header_Adj_rec.lock_control = FND_API.G_MISS_NUM THEN
233 p_x_header_Adj_rec.lock_control := NULL;
234 END IF;
235
236 /* 1581620 end */
237
238 oe_debug_pub.add('Exit OE_Default_Header_Adj.Attributes');
239
240 END Attributes;
241
242 END OE_Default_Header_Adj;