DBA Data[Home] [Help]

PACKAGE BODY: APPS.QP_QP_FORM_PRICE_LIST_LINE

Source


1 PACKAGE BODY QP_QP_Form_Price_List_Line AS
2 /* $Header: QPXFPLLB.pls 120.2 2006/02/22 06:27:33 prarasto noship $ */
3 
4 --  Global constant holding the package name
5 
6 G_PKG_NAME                    CONSTANT VARCHAR2(30) := 'QP_QP_Form_Price_List_Line';
7 
8 --  Global variables holding cached record.
9 
10 g_PRICE_LIST_LINE_rec         QP_Price_List_PUB.Price_List_Line_Rec_Type;
11 g_db_PRICE_LIST_LINE_rec      QP_Price_List_PUB.Price_List_Line_Rec_Type;
12 
13 --  Forward declaration of procedures maintaining entity record cache.
14 
15 PROCEDURE Write_PRICE_LIST_LINE
16 (   p_PRICE_LIST_LINE_rec           IN  QP_Price_List_PUB.Price_List_Line_Rec_Type
17 ,   p_db_record                     IN  BOOLEAN := FALSE
18 );
19 
20 FUNCTION Get_PRICE_LIST_LINE
21 (   p_db_record                     IN  BOOLEAN := FALSE
22 ,   p_list_line_id                  IN  NUMBER
23 )
24 RETURN QP_Price_List_PUB.Price_List_Line_Rec_Type;
25 
26 PROCEDURE Clear_PRICE_LIST_LINE;
27 
28 --  Global variable holding performed operations.
29 
30 g_opr__tbl                    QP_Price_List_PUB.Price_List_Line_Tbl_Type;
31 
32 --  Procedure : Default_Attributes
33 --
34 
35 PROCEDURE Default_Attributes
36 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
37 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
38 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
39 ,   p_list_header_id                IN NUMBER
40 ,   x_accrual_qty                   OUT NOCOPY /* file.sql.39 change */ NUMBER
41 ,   x_accrual_uom_code              OUT NOCOPY /* file.sql.39 change */ VARCHAR2
42 ,   x_arithmetic_operator           OUT NOCOPY /* file.sql.39 change */ VARCHAR2
43 ,   x_attribute1                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
44 ,   x_attribute10                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
45 ,   x_attribute11                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
46 ,   x_attribute12                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
47 ,   x_attribute13                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
48 ,   x_attribute14                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
49 ,   x_attribute15                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
50 ,   x_attribute2                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
51 ,   x_attribute3                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
52 ,   x_attribute4                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
53 ,   x_attribute5                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
54 ,   x_attribute6                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
55 ,   x_attribute7                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
56 ,   x_attribute8                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
57 ,   x_attribute9                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
58 ,   x_automatic_flag                OUT NOCOPY /* file.sql.39 change */ VARCHAR2
59 ,   x_base_qty                      OUT NOCOPY /* file.sql.39 change */ NUMBER
60 ,   x_base_uom_code                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
61 ,   x_comments                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
62 ,   x_context                       OUT NOCOPY /* file.sql.39 change */ VARCHAR2
63 ,   x_effective_period_uom          OUT NOCOPY /* file.sql.39 change */ VARCHAR2
64 ,   x_end_date_active               OUT NOCOPY /* file.sql.39 change */ DATE
65 ,   x_estim_accrual_rate            OUT NOCOPY /* file.sql.39 change */ NUMBER
66 ,   x_generate_using_formula_id     OUT NOCOPY /* file.sql.39 change */ NUMBER
67 ,   x_inventory_item_id             OUT NOCOPY /* file.sql.39 change */ NUMBER
68 ,   x_list_header_id                OUT NOCOPY /* file.sql.39 change */ NUMBER
69 ,   x_list_line_id                  OUT NOCOPY /* file.sql.39 change */ NUMBER
70 ,   x_list_line_type_code           OUT NOCOPY /* file.sql.39 change */ VARCHAR2
71 ,   x_list_price                    OUT NOCOPY /* file.sql.39 change */ NUMBER
72 ,   x_from_rltd_modifier_id         OUT NOCOPY /* file.sql.39 change */ NUMBER
73 ,   x_rltd_modifier_group_no        OUT NOCOPY /* file.sql.39 change */ NUMBER
74 ,   x_product_precedence            OUT NOCOPY /* file.sql.39 change */ NUMBER
75 ,   x_modifier_level_code           OUT NOCOPY /* file.sql.39 change */ VARCHAR2
76 ,   x_number_effective_periods      OUT NOCOPY /* file.sql.39 change */ NUMBER
77 ,   x_operand                       OUT NOCOPY /* file.sql.39 change */ NUMBER
78 ,   x_organization_id               OUT NOCOPY /* file.sql.39 change */ NUMBER
79 ,   x_override_flag                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
80 ,   x_percent_price                 OUT NOCOPY /* file.sql.39 change */ NUMBER
81 ,   x_price_break_type_code         OUT NOCOPY /* file.sql.39 change */ VARCHAR2
82 ,   x_price_by_formula_id           OUT NOCOPY /* file.sql.39 change */ NUMBER
83 ,   x_primary_uom_flag              OUT NOCOPY /* file.sql.39 change */ VARCHAR2
84 ,   x_print_on_invoice_flag         OUT NOCOPY /* file.sql.39 change */ VARCHAR2
85 ,   x_rebate_trxn_type_code         OUT NOCOPY /* file.sql.39 change */ VARCHAR2
86 ,   x_related_item_id               OUT NOCOPY /* file.sql.39 change */ NUMBER
87 ,   x_relationship_type_id          OUT NOCOPY /* file.sql.39 change */ NUMBER
88 ,   x_reprice_flag                  OUT NOCOPY /* file.sql.39 change */ VARCHAR2
89 ,   x_revision                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
90 ,   x_revision_date                 OUT NOCOPY /* file.sql.39 change */ DATE
91 ,   x_revision_reason_code          OUT NOCOPY /* file.sql.39 change */ VARCHAR2
92 ,   x_start_date_active             OUT NOCOPY /* file.sql.39 change */ DATE
93 ,   x_substitution_attribute        OUT NOCOPY /* file.sql.39 change */ VARCHAR2
94 ,   x_substitution_context          OUT NOCOPY /* file.sql.39 change */ VARCHAR2
95 ,   x_substitution_value            OUT NOCOPY /* file.sql.39 change */ VARCHAR2
96 ,   x_accrual_uom                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
97 ,   x_automatic                     OUT NOCOPY /* file.sql.39 change */ VARCHAR2
98 ,   x_base_uom                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
99 ,   x_generate_using_formula        OUT NOCOPY /* file.sql.39 change */ VARCHAR2
100 ,   x_inventory_item                OUT NOCOPY /* file.sql.39 change */ VARCHAR2
101 ,   x_list_header                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
102 ,   x_list_line                     OUT NOCOPY /* file.sql.39 change */ VARCHAR2
103 ,   x_list_line_type                OUT NOCOPY /* file.sql.39 change */ VARCHAR2
104 ,   x_modifier_level                OUT NOCOPY /* file.sql.39 change */ VARCHAR2
105 ,   x_organization                  OUT NOCOPY /* file.sql.39 change */ VARCHAR2
106 ,   x_override                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
107 ,   x_price_break_type              OUT NOCOPY /* file.sql.39 change */ VARCHAR2
108 ,   x_price_by_formula              OUT NOCOPY /* file.sql.39 change */ VARCHAR2
109 ,   x_primary_uom                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
110 ,   x_print_on_invoice              OUT NOCOPY /* file.sql.39 change */ VARCHAR2
111 ,   x_rebate_transaction_type       OUT NOCOPY /* file.sql.39 change */ VARCHAR2
112 ,   x_related_item                  OUT NOCOPY /* file.sql.39 change */ VARCHAR2
113 ,   x_relationship_type             OUT NOCOPY /* file.sql.39 change */ VARCHAR2
114 ,   x_reprice                       OUT NOCOPY /* file.sql.39 change */ VARCHAR2
115 ,   x_revision_reason               OUT NOCOPY /* file.sql.39 change */ VARCHAR2
116 ,   p_from_rltd_modifier_id           IN  NUMBER := NULL
117 ,   x_recurring_value               OUT NOCOPY /* file.sql.39 change */ NUMBER -- block pricing
118 ,   x_customer_item_id	            OUT NOCOPY /* file.sql.39 change */ NUMBER
119 ,   x_break_uom_code                OUT NOCOPY /* file.sql.39 change */ VARCHAR2 -- OKS proration
120 ,   x_break_uom_context             OUT NOCOPY /* file.sql.39 change */ VARCHAR2 -- OKS proration
121 ,   x_break_uom_attribute           OUT NOCOPY /* file.sql.39 change */ VARCHAR2 -- OKS proration
122 ,   x_continuous_price_break_flag       OUT NOCOPY                          VARCHAR2 --Continuous Price Breaks
123 )
124 IS
125 l_PRICE_LIST_LINE_rec         QP_Price_List_PUB.Price_List_Line_Rec_Type;
126 l_PRICE_LIST_LINE_val_rec     QP_Price_List_PUB.Price_List_Line_Val_Rec_Type;
127 l_PRICE_LIST_LINE_tbl         QP_Price_List_PUB.Price_List_Line_Tbl_Type;
128 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
129 l_return_status               VARCHAR2(1);
130 l_x_PRICE_LIST_rec            QP_Price_List_PUB.Price_List_Rec_Type;
131 l_x_PRICE_LIST_LINE_rec       QP_Price_List_PUB.Price_List_Line_Rec_Type;
132 l_x_PRICE_LIST_LINE_tbl       QP_Price_List_PUB.Price_List_Line_Tbl_Type;
133 l_x_QUALIFIERS_rec            Qp_Qualifier_Rules_Pub.Qualifiers_Rec_Type;
134 l_x_QUALIFIERS_tbl            Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
135 l_x_PRICING_ATTR_rec          QP_Price_List_PUB.Pricing_Attr_Rec_Type;
136 l_x_PRICING_ATTR_tbl          QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
137 BEGIN
138 
139     --  Set control flags.
140 
141     l_control_rec.controlled_operation := TRUE;
142     l_control_rec.default_attributes   := TRUE;
143 
144     l_control_rec.change_attributes    := FALSE;
145     l_control_rec.validate_entity      := FALSE;
146     l_control_rec.write_to_DB          := FALSE;
147     l_control_rec.process              := FALSE;
148 
149     --  Instruct API to retain its caches
150 
151     l_control_rec.clear_api_cache      := FALSE;
152     l_control_rec.clear_api_requests   := FALSE;
153 
154     --  Load IN parameters if any exist
155 
156     l_PRICE_LIST_LINE_rec.list_header_id := p_list_header_id;
157     l_PRICE_LIST_LINE_rec.from_rltd_modifier_id := p_from_rltd_modifier_id;
158 
159     --  Defaulting of flex values is currently done by the form.
160     --  Set flex attributes to NULL in order to avoid defaulting them.
161 
162     l_PRICE_LIST_LINE_rec.attribute1              := NULL;
163     l_PRICE_LIST_LINE_rec.attribute10             := NULL;
164     l_PRICE_LIST_LINE_rec.attribute11             := NULL;
165     l_PRICE_LIST_LINE_rec.attribute12             := NULL;
166     l_PRICE_LIST_LINE_rec.attribute13             := NULL;
167     l_PRICE_LIST_LINE_rec.attribute14             := NULL;
168     l_PRICE_LIST_LINE_rec.attribute15             := NULL;
169     l_PRICE_LIST_LINE_rec.attribute2              := NULL;
170     l_PRICE_LIST_LINE_rec.attribute3              := NULL;
171     l_PRICE_LIST_LINE_rec.attribute4              := NULL;
172     l_PRICE_LIST_LINE_rec.attribute5              := NULL;
173     l_PRICE_LIST_LINE_rec.attribute6              := NULL;
174     l_PRICE_LIST_LINE_rec.attribute7              := NULL;
175     l_PRICE_LIST_LINE_rec.attribute8              := NULL;
176     l_PRICE_LIST_LINE_rec.attribute9              := NULL;
177     l_PRICE_LIST_LINE_rec.context                 := NULL;
178 
179     --  Set Operation to Create
180 
181     l_PRICE_LIST_LINE_rec.operation := QP_GLOBALS.G_OPR_CREATE;
182 
183     --  Populate PRICE_LIST_LINE table
184 
185     l_PRICE_LIST_LINE_tbl(1) := l_PRICE_LIST_LINE_rec;
186 
187     --  Call QP_LIST_HEADERS_PVT.Process_PRICE_LIST
188 
189     QP_LIST_HEADERS_PVT.Process_PRICE_LIST
190     (   p_api_version_number          => 1.0
191     ,   p_init_msg_list               => FND_API.G_TRUE
192     ,   x_return_status               => l_return_status
193     ,   x_msg_count                   => x_msg_count
194     ,   x_msg_data                    => x_msg_data
195     ,   p_control_rec                 => l_control_rec
196     ,   p_PRICE_LIST_LINE_tbl         => l_PRICE_LIST_LINE_tbl
197     ,   x_PRICE_LIST_rec              => l_x_PRICE_LIST_rec
198     ,   x_PRICE_LIST_LINE_tbl         => l_x_PRICE_LIST_LINE_tbl
199     ,   x_QUALIFIERS_tbl              => l_x_QUALIFIERS_tbl
200     ,   x_PRICING_ATTR_tbl            => l_x_PRICING_ATTR_tbl
201     );
202 
203    oe_debug_pub.add('after process price list 0');
204     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
205         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
206     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
207         RAISE FND_API.G_EXC_ERROR;
208     END IF;
209 
210    oe_debug_pub.add('after process price list 1');
211     --  Unload out tbl
212 
213     l_x_PRICE_LIST_LINE_rec := l_x_PRICE_LIST_LINE_tbl(1);
214 
215     --  Load OUT parameters.
216 
217     x_accrual_qty                  := l_x_PRICE_LIST_LINE_rec.accrual_qty;
218     x_accrual_uom_code             := l_x_PRICE_LIST_LINE_rec.accrual_uom_code;
219     x_arithmetic_operator          := l_x_PRICE_LIST_LINE_rec.arithmetic_operator;
220     x_attribute1                   := l_x_PRICE_LIST_LINE_rec.attribute1;
221     x_attribute10                  := l_x_PRICE_LIST_LINE_rec.attribute10;
222     x_attribute11                  := l_x_PRICE_LIST_LINE_rec.attribute11;
223     x_attribute12                  := l_x_PRICE_LIST_LINE_rec.attribute12;
224     x_attribute13                  := l_x_PRICE_LIST_LINE_rec.attribute13;
225     x_attribute14                  := l_x_PRICE_LIST_LINE_rec.attribute14;
226     x_attribute15                  := l_x_PRICE_LIST_LINE_rec.attribute15;
227     x_attribute2                   := l_x_PRICE_LIST_LINE_rec.attribute2;
228     x_attribute3                   := l_x_PRICE_LIST_LINE_rec.attribute3;
229     x_attribute4                   := l_x_PRICE_LIST_LINE_rec.attribute4;
230     x_attribute5                   := l_x_PRICE_LIST_LINE_rec.attribute5;
231     x_attribute6                   := l_x_PRICE_LIST_LINE_rec.attribute6;
232     x_attribute7                   := l_x_PRICE_LIST_LINE_rec.attribute7;
233     x_attribute8                   := l_x_PRICE_LIST_LINE_rec.attribute8;
234     x_attribute9                   := l_x_PRICE_LIST_LINE_rec.attribute9;
235     x_automatic_flag               := l_x_PRICE_LIST_LINE_rec.automatic_flag;
236     x_base_qty                     := l_x_PRICE_LIST_LINE_rec.base_qty;
237     x_base_uom_code                := l_x_PRICE_LIST_LINE_rec.base_uom_code;
238     x_comments                     := l_x_PRICE_LIST_LINE_rec.comments;
239     x_context                      := l_x_PRICE_LIST_LINE_rec.context;
240     x_effective_period_uom         := l_x_PRICE_LIST_LINE_rec.effective_period_uom;
241     x_end_date_active              := l_x_PRICE_LIST_LINE_rec.end_date_active;
242     x_estim_accrual_rate           := l_x_PRICE_LIST_LINE_rec.estim_accrual_rate;
243     x_generate_using_formula_id    := l_x_PRICE_LIST_LINE_rec.generate_using_formula_id;
244     x_inventory_item_id            := l_x_PRICE_LIST_LINE_rec.inventory_item_id;
245     x_list_header_id               := l_x_PRICE_LIST_LINE_rec.list_header_id;
246     x_list_line_id                 := l_x_PRICE_LIST_LINE_rec.list_line_id;
247     x_list_line_type_code          := l_x_PRICE_LIST_LINE_rec.list_line_type_code;
248     x_list_price                   := l_x_PRICE_LIST_LINE_rec.list_price;
249     x_from_rltd_modifier_id        := l_x_PRICE_LIST_LINE_rec.from_rltd_modifier_id;
250     x_rltd_modifier_group_no       := l_x_PRICE_LIST_LINE_rec.rltd_modifier_group_no;
251     x_product_precedence           := l_x_PRICE_LIST_LINE_rec.product_precedence;
252     x_modifier_level_code          := l_x_PRICE_LIST_LINE_rec.modifier_level_code;
253     x_number_effective_periods     := l_x_PRICE_LIST_LINE_rec.number_effective_periods;
254     x_operand                      := l_x_PRICE_LIST_LINE_rec.operand;
255     x_organization_id              := l_x_PRICE_LIST_LINE_rec.organization_id;
256     x_override_flag                := l_x_PRICE_LIST_LINE_rec.override_flag;
257     x_percent_price                := l_x_PRICE_LIST_LINE_rec.percent_price;
258     x_price_break_type_code        := l_x_PRICE_LIST_LINE_rec.price_break_type_code;
259     x_price_by_formula_id          := l_x_PRICE_LIST_LINE_rec.price_by_formula_id;
260     x_primary_uom_flag             := l_x_PRICE_LIST_LINE_rec.primary_uom_flag;
261     x_print_on_invoice_flag        := l_x_PRICE_LIST_LINE_rec.print_on_invoice_flag;
262     x_rebate_trxn_type_code        := l_x_PRICE_LIST_LINE_rec.rebate_trxn_type_code;
263     x_related_item_id              := l_x_PRICE_LIST_LINE_rec.related_item_id;
264     x_relationship_type_id         := l_x_PRICE_LIST_LINE_rec.relationship_type_id;
265     x_reprice_flag                 := l_x_PRICE_LIST_LINE_rec.reprice_flag;
266     x_revision                     := l_x_PRICE_LIST_LINE_rec.revision;
267     x_revision_date                := l_x_PRICE_LIST_LINE_rec.revision_date;
268     x_revision_reason_code         := l_x_PRICE_LIST_LINE_rec.revision_reason_code;
269     x_start_date_active            := l_x_PRICE_LIST_LINE_rec.start_date_active;
270     x_substitution_attribute       := l_x_PRICE_LIST_LINE_rec.substitution_attribute;
271     x_substitution_context         := l_x_PRICE_LIST_LINE_rec.substitution_context;
272     x_substitution_value           := l_x_PRICE_LIST_LINE_rec.substitution_value;
273     x_recurring_value              := l_x_PRICE_LIST_LINE_rec.recurring_value; -- block pricing
274     x_customer_item_id             := l_x_PRICE_LIST_LINE_rec.customer_item_id;
275     x_break_uom_code               := l_x_PRICE_LIST_LINE_rec.break_uom_code; --OKS proration
276     x_break_uom_context            := l_x_PRICE_LIST_LINE_rec.break_uom_code; --OKS proration
277     x_break_uom_attribute          := l_x_PRICE_LIST_LINE_rec.break_uom_attribute; --OKS proration
278     x_continuous_price_break_flag      := l_x_PRICE_LIST_LINE_rec.continuous_price_break_flag;
279 								    --Continuous Price Breaks
280 
281     --  Load display out parameters if any
282 
283     oe_debug_pub.add('before get values');
284 
285     l_PRICE_LIST_LINE_val_rec := QP_Price_List_Line_Util.Get_Values
286     (   p_PRICE_LIST_LINE_rec         => l_x_PRICE_LIST_LINE_rec
287     );
288     x_accrual_uom                  := l_PRICE_LIST_LINE_val_rec.accrual_uom;
289     x_automatic                    := l_PRICE_LIST_LINE_val_rec.automatic;
290     x_base_uom                     := l_PRICE_LIST_LINE_val_rec.base_uom;
291     x_generate_using_formula       := l_PRICE_LIST_LINE_val_rec.generate_using_formula;
292     x_inventory_item               := l_PRICE_LIST_LINE_val_rec.inventory_item;
293     x_list_header                  := l_PRICE_LIST_LINE_val_rec.list_header;
294     x_list_line                    := l_PRICE_LIST_LINE_val_rec.list_line;
295     x_list_line_type               := l_PRICE_LIST_LINE_val_rec.list_line_type;
296     x_modifier_level               := l_PRICE_LIST_LINE_val_rec.modifier_level;
297     x_organization                 := l_PRICE_LIST_LINE_val_rec.organization;
298     x_override                     := l_PRICE_LIST_LINE_val_rec.override;
299     x_price_break_type             := l_PRICE_LIST_LINE_val_rec.price_break_type;
300     x_price_by_formula             := l_PRICE_LIST_LINE_val_rec.price_by_formula;
301     x_primary_uom                  := l_PRICE_LIST_LINE_val_rec.primary_uom;
302     x_print_on_invoice             := l_PRICE_LIST_LINE_val_rec.print_on_invoice;
303     x_rebate_transaction_type      := l_PRICE_LIST_LINE_val_rec.rebate_transaction_type;
304     x_related_item                 := l_PRICE_LIST_LINE_val_rec.related_item;
305     x_relationship_type            := l_PRICE_LIST_LINE_val_rec.relationship_type;
306     x_reprice                      := l_PRICE_LIST_LINE_val_rec.reprice;
307     x_revision_reason              := l_PRICE_LIST_LINE_val_rec.revision_reason;
308 
309     --  Write to cache.
310     --  Set db_flag to False before writing to cache
311 
312     oe_debug_pub.add('after get values');
313 
314     l_x_PRICE_LIST_LINE_rec.db_flag := FND_API.G_FALSE;
315 
316     Write_PRICE_LIST_LINE
317     (   p_PRICE_LIST_LINE_rec         => l_x_PRICE_LIST_LINE_rec
318     );
319 
320     oe_debug_pub.add('after write price list line');
321 
322     --  Set return status.
323 
324     x_return_status := FND_API.G_RET_STS_SUCCESS;
325 
326     --  Get message count and data
327 
328     oe_msg_pub.Count_And_Get
329     (   p_count                       => x_msg_count
330     ,   p_data                        => x_msg_data
331     );
332 
333     oe_debug_pub.add('msg data is : ' || x_msg_data);
334 
335 EXCEPTION
336 
337     WHEN FND_API.G_EXC_ERROR THEN
338 
339         x_return_status := FND_API.G_RET_STS_ERROR;
340 
341         --  Get message count and data
342 
343         oe_msg_pub.Count_And_Get
344         (   p_count                       => x_msg_count
345         ,   p_data                        => x_msg_data
346         );
347 
348     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
349 
350         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
351 
352         --  Get message count and data
353 
354         oe_msg_pub.Count_And_Get
355         (   p_count                       => x_msg_count
356         ,   p_data                        => x_msg_data
357         );
358 
359     WHEN OTHERS THEN
360 
361         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
362 
363         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
364         THEN
365             oe_msg_pub.Add_Exc_Msg
366             (   G_PKG_NAME
367             ,   'Default_Attributes'
368             );
369         END IF;
370 
371         --  Get message count and data
372 
373         oe_msg_pub.Count_And_Get
374         (   p_count                       => x_msg_count
375         ,   p_data                        => x_msg_data
376         );
377 
378 END Default_Attributes;
379 
380 --  Procedure   :   Change_Attribute
381 --
382 
383 PROCEDURE Change_Attribute
384 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
385 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
386 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
387 ,   p_list_line_id                  IN  NUMBER
388 ,   p_attr_id                       IN  NUMBER
389 ,   p_attr_value                    IN  VARCHAR2
390 ,   p_attribute1                    IN  VARCHAR2
391 ,   p_attribute10                   IN  VARCHAR2
392 ,   p_attribute11                   IN  VARCHAR2
393 ,   p_attribute12                   IN  VARCHAR2
394 ,   p_attribute13                   IN  VARCHAR2
395 ,   p_attribute14                   IN  VARCHAR2
396 ,   p_attribute15                   IN  VARCHAR2
397 ,   p_attribute2                    IN  VARCHAR2
398 ,   p_attribute3                    IN  VARCHAR2
399 ,   p_attribute4                    IN  VARCHAR2
400 ,   p_attribute5                    IN  VARCHAR2
401 ,   p_attribute6                    IN  VARCHAR2
402 ,   p_attribute7                    IN  VARCHAR2
403 ,   p_attribute8                    IN  VARCHAR2
404 ,   p_attribute9                    IN  VARCHAR2
405 ,   p_context                       IN  VARCHAR2
406 ,   x_accrual_qty                   OUT NOCOPY /* file.sql.39 change */ NUMBER
407 ,   x_accrual_uom_code              OUT NOCOPY /* file.sql.39 change */ VARCHAR2
408 ,   x_arithmetic_operator           OUT NOCOPY /* file.sql.39 change */ VARCHAR2
409 ,   x_attribute1                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
410 ,   x_attribute10                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
411 ,   x_attribute11                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
412 ,   x_attribute12                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
413 ,   x_attribute13                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
414 ,   x_attribute14                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
415 ,   x_attribute15                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
416 ,   x_attribute2                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
417 ,   x_attribute3                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
418 ,   x_attribute4                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
419 ,   x_attribute5                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
420 ,   x_attribute6                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
421 ,   x_attribute7                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
422 ,   x_attribute8                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
423 ,   x_attribute9                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
424 ,   x_automatic_flag                OUT NOCOPY /* file.sql.39 change */ VARCHAR2
425 ,   x_base_qty                      OUT NOCOPY /* file.sql.39 change */ NUMBER
426 ,   x_base_uom_code                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
427 ,   x_comments                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
428 ,   x_context                       OUT NOCOPY /* file.sql.39 change */ VARCHAR2
429 ,   x_effective_period_uom          OUT NOCOPY /* file.sql.39 change */ VARCHAR2
430 ,   x_end_date_active               OUT NOCOPY /* file.sql.39 change */ DATE
431 ,   x_estim_accrual_rate            OUT NOCOPY /* file.sql.39 change */ NUMBER
432 ,   x_generate_using_formula_id     OUT NOCOPY /* file.sql.39 change */ NUMBER
433 ,   x_inventory_item_id             OUT NOCOPY /* file.sql.39 change */ NUMBER
434 ,   x_list_header_id                OUT NOCOPY /* file.sql.39 change */ NUMBER
435 ,   x_list_line_id                  OUT NOCOPY /* file.sql.39 change */ NUMBER
436 ,   x_list_line_type_code           OUT NOCOPY /* file.sql.39 change */ VARCHAR2
437 ,   x_list_price                    OUT NOCOPY /* file.sql.39 change */ NUMBER
438 ,   x_from_rltd_modifier_id         OUT NOCOPY /* file.sql.39 change */ NUMBER
439 ,   x_rltd_modifier_group_no        OUT NOCOPY /* file.sql.39 change */ NUMBER
440 ,   x_product_precedence            OUT NOCOPY /* file.sql.39 change */ NUMBER
441 ,   x_modifier_level_code           OUT NOCOPY /* file.sql.39 change */ VARCHAR2
442 ,   x_number_effective_periods      OUT NOCOPY /* file.sql.39 change */ NUMBER
443 ,   x_operand                       OUT NOCOPY /* file.sql.39 change */ NUMBER
444 ,   x_organization_id               OUT NOCOPY /* file.sql.39 change */ NUMBER
445 ,   x_override_flag                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
446 ,   x_percent_price                 OUT NOCOPY /* file.sql.39 change */ NUMBER
447 ,   x_price_break_type_code         OUT NOCOPY /* file.sql.39 change */ VARCHAR2
448 ,   x_price_by_formula_id           OUT NOCOPY /* file.sql.39 change */ NUMBER
449 ,   x_primary_uom_flag              OUT NOCOPY /* file.sql.39 change */ VARCHAR2
450 ,   x_print_on_invoice_flag         OUT NOCOPY /* file.sql.39 change */ VARCHAR2
451 ,   x_rebate_trxn_type_code         OUT NOCOPY /* file.sql.39 change */ VARCHAR2
452 ,   x_related_item_id               OUT NOCOPY /* file.sql.39 change */ NUMBER
453 ,   x_relationship_type_id          OUT NOCOPY /* file.sql.39 change */ NUMBER
454 ,   x_reprice_flag                  OUT NOCOPY /* file.sql.39 change */ VARCHAR2
455 ,   x_revision                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
456 ,   x_revision_date                 OUT NOCOPY /* file.sql.39 change */ DATE
457 ,   x_revision_reason_code          OUT NOCOPY /* file.sql.39 change */ VARCHAR2
458 ,   x_start_date_active             OUT NOCOPY /* file.sql.39 change */ DATE
459 ,   x_substitution_attribute        OUT NOCOPY /* file.sql.39 change */ VARCHAR2
460 ,   x_substitution_context          OUT NOCOPY /* file.sql.39 change */ VARCHAR2
461 ,   x_substitution_value            OUT NOCOPY /* file.sql.39 change */ VARCHAR2
462 ,   x_accrual_uom                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
463 ,   x_automatic                     OUT NOCOPY /* file.sql.39 change */ VARCHAR2
464 ,   x_base_uom                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
465 ,   x_generate_using_formula        OUT NOCOPY /* file.sql.39 change */ VARCHAR2
466 ,   x_inventory_item                OUT NOCOPY /* file.sql.39 change */ VARCHAR2
467 ,   x_list_header                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
468 ,   x_list_line                     OUT NOCOPY /* file.sql.39 change */ VARCHAR2
469 ,   x_list_line_type                OUT NOCOPY /* file.sql.39 change */ VARCHAR2
470 ,   x_modifier_level                OUT NOCOPY /* file.sql.39 change */ VARCHAR2
471 ,   x_organization                  OUT NOCOPY /* file.sql.39 change */ VARCHAR2
472 ,   x_override                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
473 ,   x_price_break_type              OUT NOCOPY /* file.sql.39 change */ VARCHAR2
474 ,   x_price_by_formula              OUT NOCOPY /* file.sql.39 change */ VARCHAR2
475 ,   x_primary_uom                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
476 ,   x_print_on_invoice              OUT NOCOPY /* file.sql.39 change */ VARCHAR2
477 ,   x_rebate_transaction_type       OUT NOCOPY /* file.sql.39 change */ VARCHAR2
478 ,   x_related_item                  OUT NOCOPY /* file.sql.39 change */ VARCHAR2
479 ,   x_relationship_type             OUT NOCOPY /* file.sql.39 change */ VARCHAR2
480 ,   x_reprice                       OUT NOCOPY /* file.sql.39 change */ VARCHAR2
481 ,   x_revision_reason               OUT NOCOPY /* file.sql.39 change */ VARCHAR2
482 ,   x_recurring_value               OUT NOCOPY /* file.sql.39 change */ NUMBER -- block pricing
483 ,   x_customer_item_id	            OUT NOCOPY /* file.sql.39 change */ NUMBER
484 ,   x_break_uom_code                OUT NOCOPY /* file.sql.39 change */ VARCHAR2 -- OKS proration
485 ,   x_break_uom_context             OUT NOCOPY /* file.sql.39 change */ VARCHAR2 -- OKS proration
486 ,   x_break_uom_attribute           OUT NOCOPY /* file.sql.39 change */ VARCHAR2 -- OKS proration
487 ,   x_continuous_price_break_flag       OUT NOCOPY                          VARCHAR2 --Continuous Price Breaks
488 )
489 IS
490 l_PRICE_LIST_LINE_rec         QP_Price_List_PUB.Price_List_Line_Rec_Type;
491 l_old_PRICE_LIST_LINE_rec     QP_Price_List_PUB.Price_List_Line_Rec_Type;
492 l_PRICE_LIST_LINE_val_rec     QP_Price_List_PUB.Price_List_Line_Val_Rec_Type;
493 l_PRICE_LIST_LINE_tbl         QP_Price_List_PUB.Price_List_Line_Tbl_Type;
494 l_old_PRICE_LIST_LINE_tbl     QP_Price_List_PUB.Price_List_Line_Tbl_Type;
495 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
496 l_return_status               VARCHAR2(1);
497 l_x_PRICE_LIST_rec            QP_Price_List_PUB.Price_List_Rec_Type;
498 l_x_PRICE_LIST_LINE_rec       QP_Price_List_PUB.Price_List_Line_Rec_Type;
499 l_x_PRICE_LIST_LINE_tbl       QP_Price_List_PUB.Price_List_Line_Tbl_Type;
500 l_x_QUALIFIERS_rec            Qp_Qualifier_Rules_Pub.Qualifiers_Rec_Type;
501 l_x_QUALIFIERS_tbl            Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
502 l_x_PRICING_ATTR_rec          QP_Price_List_PUB.Pricing_Attr_Rec_Type;
503 l_x_PRICING_ATTR_tbl          QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
504 BEGIN
505 
506     --  Set control flags.
507 
508     l_control_rec.controlled_operation := TRUE;
509     l_control_rec.change_attributes    := TRUE;
510 
511     l_control_rec.default_attributes   := FALSE;
512     l_control_rec.validate_entity      := FALSE;
513     l_control_rec.write_to_DB          := FALSE;
514     l_control_rec.process              := FALSE;
515 
516     --  Instruct API to retain its caches
517 
518     l_control_rec.clear_api_cache      := FALSE;
519     l_control_rec.clear_api_requests   := FALSE;
520 
521     --  Read PRICE_LIST_LINE from cache
522 
523     oe_debug_pub.add('Ren: before get price list line - ca pll 1');
524 
525     l_PRICE_LIST_LINE_rec := Get_PRICE_LIST_LINE
526     (   p_db_record                   => FALSE
527     ,   p_list_line_id                => p_list_line_id
528     );
529 
530     l_old_PRICE_LIST_LINE_rec      := l_PRICE_LIST_LINE_rec;
531 
532     oe_debug_pub.add('prog app id in ca pll 1 is: ' || l_PRICE_LIST_LINE_rec.program_application_id);
533     oe_debug_pub.add('prog id in ca pll 1 is: ' || l_PRICE_LIST_LINE_rec.program_id);
534 
535     IF p_attr_id = QP_Price_List_Line_Util.G_ACCRUAL_QTY THEN
536         l_PRICE_LIST_LINE_rec.accrual_qty := TO_NUMBER(p_attr_value);
537     ELSIF p_attr_id = QP_Price_List_Line_Util.G_ACCRUAL_UOM THEN
538         l_PRICE_LIST_LINE_rec.accrual_uom_code := p_attr_value;
539     ELSIF p_attr_id = QP_Price_List_Line_Util.G_ARITHMETIC_OPERATOR THEN
540         l_PRICE_LIST_LINE_rec.arithmetic_operator := p_attr_value;
541     ELSIF p_attr_id = QP_Price_List_Line_Util.G_AUTOMATIC THEN
542         l_PRICE_LIST_LINE_rec.automatic_flag := p_attr_value;
543     ELSIF p_attr_id = QP_Price_List_Line_Util.G_BASE_QTY THEN
544         l_PRICE_LIST_LINE_rec.base_qty := TO_NUMBER(p_attr_value);
545     ELSIF p_attr_id = QP_Price_List_Line_Util.G_BASE_UOM THEN
546         l_PRICE_LIST_LINE_rec.base_uom_code := p_attr_value;
547     ELSIF p_attr_id = QP_Price_List_Line_Util.G_COMMENTS THEN
548         l_PRICE_LIST_LINE_rec.comments := p_attr_value;
549     ELSIF p_attr_id = QP_Price_List_Line_Util.G_EFFECTIVE_PERIOD_UOM THEN
550         l_PRICE_LIST_LINE_rec.effective_period_uom := p_attr_value;
551     ELSIF p_attr_id = QP_Price_List_Line_Util.G_END_DATE_ACTIVE THEN
552         l_PRICE_LIST_LINE_rec.end_date_active := TO_DATE(p_attr_value,'DD/MM/YYYY');
553     ELSIF p_attr_id = QP_Price_List_Line_Util.G_ESTIM_ACCRUAL_RATE THEN
554         l_PRICE_LIST_LINE_rec.estim_accrual_rate := TO_NUMBER(p_attr_value);
555     ELSIF p_attr_id = QP_Price_List_Line_Util.G_GENERATE_USING_FORMULA THEN
556         l_PRICE_LIST_LINE_rec.generate_using_formula_id := TO_NUMBER(p_attr_value);
557     ELSIF p_attr_id = QP_Price_List_Line_Util.G_INVENTORY_ITEM THEN
558         l_PRICE_LIST_LINE_rec.inventory_item_id := TO_NUMBER(p_attr_value);
559     ELSIF p_attr_id = QP_Price_List_Line_Util.G_LIST_HEADER THEN
560         l_PRICE_LIST_LINE_rec.list_header_id := TO_NUMBER(p_attr_value);
561     ELSIF p_attr_id = QP_Price_List_Line_Util.G_LIST_LINE THEN
562         l_PRICE_LIST_LINE_rec.list_line_id := TO_NUMBER(p_attr_value);
563     ELSIF p_attr_id = QP_Price_List_Line_Util.G_LIST_LINE_TYPE THEN
564         l_PRICE_LIST_LINE_rec.list_line_type_code := p_attr_value;
565     ELSIF p_attr_id = QP_Price_List_Line_Util.G_LIST_PRICE THEN
566         l_PRICE_LIST_LINE_rec.list_price := TO_NUMBER(p_attr_value);
567     ELSIF p_attr_id = QP_Price_List_Line_Util.G_FROM_RLTD_MODIFIER THEN
568         l_PRICE_LIST_LINE_rec.from_rltd_modifier_id := TO_NUMBER(p_attr_value);
569     ELSIF p_attr_id = QP_Price_List_Line_Util.G_RLTD_MODIFIER_GROUP_NO THEN
570        l_PRICE_LIST_LINE_rec.rltd_modifier_group_no := TO_NUMBER(p_attr_value);
571     ELSIF p_attr_id = QP_Price_List_Line_Util.G_PRODUCT_PRECEDENCE THEN
572         l_PRICE_LIST_LINE_rec.product_precedence := TO_NUMBER(p_attr_value);
573     ELSIF p_attr_id = QP_Price_List_Line_Util.G_MODIFIER_LEVEL THEN
574         l_PRICE_LIST_LINE_rec.modifier_level_code := p_attr_value;
575     ELSIF p_attr_id = QP_Price_List_Line_Util.G_NUMBER_EFFECTIVE_PERIODS THEN
576         l_PRICE_LIST_LINE_rec.number_effective_periods := TO_NUMBER(p_attr_value);
577     ELSIF p_attr_id = QP_Price_List_Line_Util.G_OPERAND THEN
578         l_PRICE_LIST_LINE_rec.operand := TO_NUMBER(p_attr_value);
579     ELSIF p_attr_id = QP_Price_List_Line_Util.G_ORGANIZATION THEN
580         l_PRICE_LIST_LINE_rec.organization_id := TO_NUMBER(p_attr_value);
581     ELSIF p_attr_id = QP_Price_List_Line_Util.G_OVERRIDE THEN
582         l_PRICE_LIST_LINE_rec.override_flag := p_attr_value;
583     ELSIF p_attr_id = QP_Price_List_Line_Util.G_PERCENT_PRICE THEN
584         l_PRICE_LIST_LINE_rec.percent_price := TO_NUMBER(p_attr_value);
585     ELSIF p_attr_id = QP_Price_List_Line_Util.G_PRICE_BREAK_TYPE THEN
586         l_PRICE_LIST_LINE_rec.price_break_type_code := p_attr_value;
587     ELSIF p_attr_id = QP_Price_List_Line_Util.G_PRICE_BY_FORMULA THEN
588         l_PRICE_LIST_LINE_rec.price_by_formula_id := TO_NUMBER(p_attr_value);
589     ELSIF p_attr_id = QP_Price_List_Line_Util.G_PRIMARY_UOM THEN
590         l_PRICE_LIST_LINE_rec.primary_uom_flag := p_attr_value;
591     ELSIF p_attr_id = QP_Price_List_Line_Util.G_PRINT_ON_INVOICE THEN
592         l_PRICE_LIST_LINE_rec.print_on_invoice_flag := p_attr_value;
593     ELSIF p_attr_id = QP_Price_List_Line_Util.G_REBATE_TRANSACTION_TYPE THEN
594         l_PRICE_LIST_LINE_rec.rebate_trxn_type_code := p_attr_value;
595     ELSIF p_attr_id = QP_Price_List_Line_Util.G_RECURRING_VALUE THEN
596       l_PRICE_LIST_LINE_rec.recurring_value := TO_NUMBER(p_attr_value); -- block pricing
597     ELSIF p_attr_id = QP_Price_List_Line_Util.G_RELATED_ITEM THEN
598         l_PRICE_LIST_LINE_rec.related_item_id := TO_NUMBER(p_attr_value);
599     ELSIF p_attr_id = QP_Price_List_Line_Util.G_RELATIONSHIP_TYPE THEN
600         l_PRICE_LIST_LINE_rec.relationship_type_id := TO_NUMBER(p_attr_value);
601     ELSIF p_attr_id = QP_Price_List_Line_Util.G_REPRICE THEN
602         l_PRICE_LIST_LINE_rec.reprice_flag := p_attr_value;
603     ELSIF p_attr_id = QP_Price_List_Line_Util.G_REVISION THEN
604         l_PRICE_LIST_LINE_rec.revision := p_attr_value;
605     ELSIF p_attr_id = QP_Price_List_Line_Util.G_REVISION_DATE THEN
606         l_PRICE_LIST_LINE_rec.revision_date := TO_DATE(p_attr_value,'DD/MM/YYYY');
607     ELSIF p_attr_id = QP_Price_List_Line_Util.G_REVISION_REASON THEN
608         l_PRICE_LIST_LINE_rec.revision_reason_code := p_attr_value;
609     ELSIF p_attr_id = QP_Price_List_Line_Util.G_START_DATE_ACTIVE THEN
610         l_PRICE_LIST_LINE_rec.start_date_active := TO_DATE(p_attr_value,'DD/MM/YYYY');
611     ELSIF p_attr_id = QP_Price_List_Line_Util.G_SUBSTITUTION_ATTRIBUTE THEN
612         l_PRICE_LIST_LINE_rec.substitution_attribute := p_attr_value;
613     ELSIF p_attr_id = QP_Price_List_Line_Util.G_SUBSTITUTION_CONTEXT THEN
614         l_PRICE_LIST_LINE_rec.substitution_context := p_attr_value;
615     ELSIF p_attr_id = QP_Price_List_Line_Util.G_SUBSTITUTION_VALUE THEN
616         l_PRICE_LIST_LINE_rec.substitution_value := p_attr_value;
617     ELSIF p_attr_id = QP_Price_List_Line_Util.G_CUSTOMER_ITEM_ID THEN
618         l_PRICE_LIST_LINE_rec.customer_item_id := p_attr_value;
619     ELSIF p_attr_id = QP_Price_List_line_Util.G_BREAK_UOM_CODE THEN
620         l_PRICE_LIST_LINE_rec.break_uom_code := p_attr_value;
621     ELSIF p_attr_id = QP_Price_List_line_Util.G_BREAK_UOM_CONTEXT THEN
622         l_PRICE_LIST_LINE_rec.break_uom_context := p_attr_value;
623     ELSIF p_attr_id = QP_Price_List_Line_Util.G_BREAK_UOM_ATTRIBUTE THEN
624         l_PRICE_LIST_LINE_rec.break_uom_attribute := p_attr_value;
625     ELSIF p_attr_id = QP_Price_List_Line_Util.G_continuous_price_break_flag THEN
626         l_PRICE_LIST_LINE_rec.continuous_price_break_flag := p_attr_value;	--Continuous Price Breaks
627     ELSIF p_attr_id = QP_Price_List_Line_Util.G_ATTRIBUTE1
628     OR     p_attr_id = QP_Price_List_Line_Util.G_ATTRIBUTE10
629     OR     p_attr_id = QP_Price_List_Line_Util.G_ATTRIBUTE11
630     OR     p_attr_id = QP_Price_List_Line_Util.G_ATTRIBUTE12
631     OR     p_attr_id = QP_Price_List_Line_Util.G_ATTRIBUTE13
632     OR     p_attr_id = QP_Price_List_Line_Util.G_ATTRIBUTE14
633     OR     p_attr_id = QP_Price_List_Line_Util.G_ATTRIBUTE15
634     OR     p_attr_id = QP_Price_List_Line_Util.G_ATTRIBUTE2
635     OR     p_attr_id = QP_Price_List_Line_Util.G_ATTRIBUTE3
636     OR     p_attr_id = QP_Price_List_Line_Util.G_ATTRIBUTE4
637     OR     p_attr_id = QP_Price_List_Line_Util.G_ATTRIBUTE5
638     OR     p_attr_id = QP_Price_List_Line_Util.G_ATTRIBUTE6
639     OR     p_attr_id = QP_Price_List_Line_Util.G_ATTRIBUTE7
640     OR     p_attr_id = QP_Price_List_Line_Util.G_ATTRIBUTE8
641     OR     p_attr_id = QP_Price_List_Line_Util.G_ATTRIBUTE9
642     OR     p_attr_id = QP_Price_List_Line_Util.G_CONTEXT
643     THEN
644 
645         l_PRICE_LIST_LINE_rec.attribute1 := p_attribute1;
646         l_PRICE_LIST_LINE_rec.attribute10 := p_attribute10;
647         l_PRICE_LIST_LINE_rec.attribute11 := p_attribute11;
648         l_PRICE_LIST_LINE_rec.attribute12 := p_attribute12;
649         l_PRICE_LIST_LINE_rec.attribute13 := p_attribute13;
650         l_PRICE_LIST_LINE_rec.attribute14 := p_attribute14;
651         l_PRICE_LIST_LINE_rec.attribute15 := p_attribute15;
652         l_PRICE_LIST_LINE_rec.attribute2 := p_attribute2;
653         l_PRICE_LIST_LINE_rec.attribute3 := p_attribute3;
654         l_PRICE_LIST_LINE_rec.attribute4 := p_attribute4;
655         l_PRICE_LIST_LINE_rec.attribute5 := p_attribute5;
656         l_PRICE_LIST_LINE_rec.attribute6 := p_attribute6;
657         l_PRICE_LIST_LINE_rec.attribute7 := p_attribute7;
658         l_PRICE_LIST_LINE_rec.attribute8 := p_attribute8;
659         l_PRICE_LIST_LINE_rec.attribute9 := p_attribute9;
660         l_PRICE_LIST_LINE_rec.context  := p_context;
661 
662     ELSE
663 
664         --  Unexpected error, unrecognized attribute
665 
666         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
667         THEN
668             oe_msg_pub.Add_Exc_Msg
669             (   G_PKG_NAME
670             ,   'Change_Attribute'
671             ,   'Unrecognized attribute'
672             );
673         END IF;
674 
675         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
676 
677     END IF;
678 
679     --  Set Operation.
680 
681     IF FND_API.To_Boolean(l_PRICE_LIST_LINE_rec.db_flag) THEN
682         l_PRICE_LIST_LINE_rec.operation := QP_GLOBALS.G_OPR_UPDATE;
683     ELSE
684         l_PRICE_LIST_LINE_rec.operation := QP_GLOBALS.G_OPR_CREATE;
685     END IF;
686 
687     --  Populate PRICE_LIST_LINE table
688 
689     l_PRICE_LIST_LINE_tbl(1) := l_PRICE_LIST_LINE_rec;
690     l_old_PRICE_LIST_LINE_tbl(1) := l_old_PRICE_LIST_LINE_rec;
691 
692     --  Call QP_LIST_HEADERS_PVT.Process_PRICE_LIST
693 
694     QP_LIST_HEADERS_PVT.Process_PRICE_LIST
695     (   p_api_version_number          => 1.0
696     ,   p_init_msg_list               => FND_API.G_TRUE
697     ,   p_validation_level            => FND_API.G_VALID_LEVEL_NONE
698     ,   x_return_status               => l_return_status
699     ,   x_msg_count                   => x_msg_count
700     ,   x_msg_data                    => x_msg_data
701     ,   p_control_rec                 => l_control_rec
702     ,   p_PRICE_LIST_LINE_tbl         => l_PRICE_LIST_LINE_tbl
703     ,   p_old_PRICE_LIST_LINE_tbl     => l_old_PRICE_LIST_LINE_tbl
704     ,   x_PRICE_LIST_rec              => l_x_PRICE_LIST_rec
705     ,   x_PRICE_LIST_LINE_tbl         => l_x_PRICE_LIST_LINE_tbl
706     ,   x_QUALIFIERS_tbl              => l_x_QUALIFIERS_tbl
707     ,   x_PRICING_ATTR_tbl            => l_x_PRICING_ATTR_tbl
708     );
709 
710     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
711         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
712     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
713         RAISE FND_API.G_EXC_ERROR;
714     END IF;
715 
716 
717     --  Unload out tbl
718 
719     l_x_PRICE_LIST_LINE_rec := l_x_PRICE_LIST_LINE_tbl(1);
720 
721     --  Init OUT parameters to missing.
722 
723     x_accrual_qty                  := FND_API.G_MISS_NUM;
724     x_accrual_uom_code             := FND_API.G_MISS_CHAR;
725     x_arithmetic_operator          := FND_API.G_MISS_CHAR;
726     x_attribute1                   := FND_API.G_MISS_CHAR;
727     x_attribute10                  := FND_API.G_MISS_CHAR;
728     x_attribute11                  := FND_API.G_MISS_CHAR;
729     x_attribute12                  := FND_API.G_MISS_CHAR;
730     x_attribute13                  := FND_API.G_MISS_CHAR;
731     x_attribute14                  := FND_API.G_MISS_CHAR;
732     x_attribute15                  := FND_API.G_MISS_CHAR;
733     x_attribute2                   := FND_API.G_MISS_CHAR;
734     x_attribute3                   := FND_API.G_MISS_CHAR;
735     x_attribute4                   := FND_API.G_MISS_CHAR;
736     x_attribute5                   := FND_API.G_MISS_CHAR;
737     x_attribute6                   := FND_API.G_MISS_CHAR;
738     x_attribute7                   := FND_API.G_MISS_CHAR;
739     x_attribute8                   := FND_API.G_MISS_CHAR;
740     x_attribute9                   := FND_API.G_MISS_CHAR;
741     x_automatic_flag               := FND_API.G_MISS_CHAR;
742     x_base_qty                     := FND_API.G_MISS_NUM;
743     x_base_uom_code                := FND_API.G_MISS_CHAR;
744     x_comments                     := FND_API.G_MISS_CHAR;
745     x_context                      := FND_API.G_MISS_CHAR;
746     x_effective_period_uom         := FND_API.G_MISS_CHAR;
747     x_end_date_active              := FND_API.G_MISS_DATE;
748     x_estim_accrual_rate           := FND_API.G_MISS_NUM;
749     x_generate_using_formula_id    := FND_API.G_MISS_NUM;
750     x_inventory_item_id            := FND_API.G_MISS_NUM;
751     x_list_header_id               := FND_API.G_MISS_NUM;
752     x_list_line_id                 := FND_API.G_MISS_NUM;
753     x_list_line_type_code          := FND_API.G_MISS_CHAR;
754     x_list_price                   := FND_API.G_MISS_NUM;
755     x_from_rltd_modifier_id        := FND_API.G_MISS_NUM;
756     x_rltd_modifier_group_no       := FND_API.G_MISS_NUM;
757     x_product_precedence           := FND_API.G_MISS_NUM;
758     x_modifier_level_code          := FND_API.G_MISS_CHAR;
759     x_number_effective_periods     := FND_API.G_MISS_NUM;
760     x_operand                      := FND_API.G_MISS_NUM;
761     x_organization_id              := FND_API.G_MISS_NUM;
762     x_override_flag                := FND_API.G_MISS_CHAR;
763     x_percent_price                := FND_API.G_MISS_NUM;
764     x_price_break_type_code        := FND_API.G_MISS_CHAR;
765     x_price_by_formula_id          := FND_API.G_MISS_NUM;
766     x_primary_uom_flag             := FND_API.G_MISS_CHAR;
767     x_print_on_invoice_flag        := FND_API.G_MISS_CHAR;
768     x_rebate_trxn_type_code        := FND_API.G_MISS_CHAR;
769     x_related_item_id              := FND_API.G_MISS_NUM;
770     x_relationship_type_id         := FND_API.G_MISS_NUM;
771     x_reprice_flag                 := FND_API.G_MISS_CHAR;
772     x_revision                     := FND_API.G_MISS_CHAR;
773     x_revision_date                := FND_API.G_MISS_DATE;
774     x_revision_reason_code         := FND_API.G_MISS_CHAR;
775     x_start_date_active            := FND_API.G_MISS_DATE;
776     x_substitution_attribute       := FND_API.G_MISS_CHAR;
777     x_substitution_context         := FND_API.G_MISS_CHAR;
778     x_substitution_value           := FND_API.G_MISS_CHAR;
779     x_accrual_uom                  := FND_API.G_MISS_CHAR;
780     x_automatic                    := FND_API.G_MISS_CHAR;
781     x_base_uom                     := FND_API.G_MISS_CHAR;
782     x_generate_using_formula       := FND_API.G_MISS_CHAR;
783     x_inventory_item               := FND_API.G_MISS_CHAR;
784     x_list_header                  := FND_API.G_MISS_CHAR;
785     x_list_line                    := FND_API.G_MISS_CHAR;
786     x_list_line_type               := FND_API.G_MISS_CHAR;
787     x_modifier_level               := FND_API.G_MISS_CHAR;
788     x_organization                 := FND_API.G_MISS_CHAR;
789     x_override                     := FND_API.G_MISS_CHAR;
790     x_price_break_type             := FND_API.G_MISS_CHAR;
791     x_price_by_formula             := FND_API.G_MISS_CHAR;
792     x_primary_uom                  := FND_API.G_MISS_CHAR;
793     x_print_on_invoice             := FND_API.G_MISS_CHAR;
794     x_rebate_transaction_type      := FND_API.G_MISS_CHAR;
795     x_related_item                 := FND_API.G_MISS_CHAR;
796     x_relationship_type            := FND_API.G_MISS_CHAR;
797     x_reprice                      := FND_API.G_MISS_CHAR;
798     x_revision_reason              := FND_API.G_MISS_CHAR;
799     x_recurring_value              := FND_API.G_MISS_NUM; -- block pricing
800     x_customer_item_id		   := FND_API.G_MISS_NUM;
801     x_break_uom_code               := FND_API.G_MISS_CHAR; -- OKS proration
802     x_break_uom_context            := FND_API.G_MISS_CHAR; -- OKS proration
803     x_break_uom_attribute          := FND_API.G_MISS_CHAR;  -- OKS proration
804     x_continuous_price_break_flag      := FND_API.G_MISS_CHAR;  --Continuous Price Breaks
805 
806     --  Load display out parameters if any
807 
808     l_PRICE_LIST_LINE_val_rec := QP_Price_List_Line_Util.Get_Values
809     (   p_PRICE_LIST_LINE_rec         => l_x_PRICE_LIST_LINE_rec
810     ,   p_old_PRICE_LIST_LINE_rec     => l_PRICE_LIST_LINE_rec
811     );
812 
813     --  Return changed attributes.
814 
815     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.accrual_qty,
816                             l_PRICE_LIST_LINE_rec.accrual_qty)
817     THEN
818         x_accrual_qty := l_x_PRICE_LIST_LINE_rec.accrual_qty;
819     END IF;
820 
821     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.accrual_uom_code,
822                             l_PRICE_LIST_LINE_rec.accrual_uom_code)
823     THEN
824         x_accrual_uom_code := l_x_PRICE_LIST_LINE_rec.accrual_uom_code;
825         x_accrual_uom := l_PRICE_LIST_LINE_val_rec.accrual_uom;
826     END IF;
827 
828     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.arithmetic_operator,
829                             l_PRICE_LIST_LINE_rec.arithmetic_operator)
830     THEN
831         x_arithmetic_operator := l_x_PRICE_LIST_LINE_rec.arithmetic_operator;
832     END IF;
833 
834     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.attribute1,
835                             l_PRICE_LIST_LINE_rec.attribute1)
836     THEN
837         x_attribute1 := l_x_PRICE_LIST_LINE_rec.attribute1;
838     END IF;
839 
840     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.attribute10,
841                             l_PRICE_LIST_LINE_rec.attribute10)
842     THEN
843         x_attribute10 := l_x_PRICE_LIST_LINE_rec.attribute10;
844     END IF;
845 
846     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.attribute11,
847                             l_PRICE_LIST_LINE_rec.attribute11)
848     THEN
849         x_attribute11 := l_x_PRICE_LIST_LINE_rec.attribute11;
850     END IF;
851 
852     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.attribute12,
853                             l_PRICE_LIST_LINE_rec.attribute12)
854     THEN
855         x_attribute12 := l_x_PRICE_LIST_LINE_rec.attribute12;
856     END IF;
857 
858     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.attribute13,
859                             l_PRICE_LIST_LINE_rec.attribute13)
860     THEN
861         x_attribute13 := l_x_PRICE_LIST_LINE_rec.attribute13;
862     END IF;
863 
864     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.attribute14,
865                             l_PRICE_LIST_LINE_rec.attribute14)
866     THEN
867         x_attribute14 := l_x_PRICE_LIST_LINE_rec.attribute14;
868     END IF;
869 
870     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.attribute15,
871                             l_PRICE_LIST_LINE_rec.attribute15)
872     THEN
873         x_attribute15 := l_x_PRICE_LIST_LINE_rec.attribute15;
874     END IF;
875 
876     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.attribute2,
877                             l_PRICE_LIST_LINE_rec.attribute2)
878     THEN
879         x_attribute2 := l_x_PRICE_LIST_LINE_rec.attribute2;
880     END IF;
881 
882     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.attribute3,
883                             l_PRICE_LIST_LINE_rec.attribute3)
884     THEN
885         x_attribute3 := l_x_PRICE_LIST_LINE_rec.attribute3;
886     END IF;
887 
888     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.attribute4,
889                             l_PRICE_LIST_LINE_rec.attribute4)
890     THEN
891         x_attribute4 := l_x_PRICE_LIST_LINE_rec.attribute4;
892     END IF;
893 
894     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.attribute5,
895                             l_PRICE_LIST_LINE_rec.attribute5)
896     THEN
897         x_attribute5 := l_x_PRICE_LIST_LINE_rec.attribute5;
898     END IF;
899 
900     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.attribute6,
901                             l_PRICE_LIST_LINE_rec.attribute6)
902     THEN
903         x_attribute6 := l_x_PRICE_LIST_LINE_rec.attribute6;
904     END IF;
905 
906     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.attribute7,
907                             l_PRICE_LIST_LINE_rec.attribute7)
908     THEN
909         x_attribute7 := l_x_PRICE_LIST_LINE_rec.attribute7;
910     END IF;
911 
912     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.attribute8,
913                             l_PRICE_LIST_LINE_rec.attribute8)
914     THEN
915         x_attribute8 := l_x_PRICE_LIST_LINE_rec.attribute8;
916     END IF;
917 
918     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.attribute9,
919                             l_PRICE_LIST_LINE_rec.attribute9)
920     THEN
921         x_attribute9 := l_x_PRICE_LIST_LINE_rec.attribute9;
922     END IF;
923 
924     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.automatic_flag,
925                             l_PRICE_LIST_LINE_rec.automatic_flag)
926     THEN
927         x_automatic_flag := l_x_PRICE_LIST_LINE_rec.automatic_flag;
928         x_automatic := l_PRICE_LIST_LINE_val_rec.automatic;
929     END IF;
930 
931     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.base_qty,
932                             l_PRICE_LIST_LINE_rec.base_qty)
933     THEN
934         x_base_qty := l_x_PRICE_LIST_LINE_rec.base_qty;
935     END IF;
936 
937     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.base_uom_code,
938                             l_PRICE_LIST_LINE_rec.base_uom_code)
939     THEN
940         x_base_uom_code := l_x_PRICE_LIST_LINE_rec.base_uom_code;
941         x_base_uom := l_PRICE_LIST_LINE_val_rec.base_uom;
942     END IF;
943 
944     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.comments,
945                             l_PRICE_LIST_LINE_rec.comments)
946     THEN
947         x_comments := l_x_PRICE_LIST_LINE_rec.comments;
948     END IF;
949 
950     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.context,
951                             l_PRICE_LIST_LINE_rec.context)
952     THEN
953         x_context := l_x_PRICE_LIST_LINE_rec.context;
954     END IF;
955 
956     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.effective_period_uom,
957                             l_PRICE_LIST_LINE_rec.effective_period_uom)
958     THEN
959         x_effective_period_uom := l_x_PRICE_LIST_LINE_rec.effective_period_uom;
960     END IF;
961 
962     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.end_date_active,
963                             l_PRICE_LIST_LINE_rec.end_date_active)
964     THEN
965         x_end_date_active := l_x_PRICE_LIST_LINE_rec.end_date_active;
966     END IF;
967 
968     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.estim_accrual_rate,
969                             l_PRICE_LIST_LINE_rec.estim_accrual_rate)
970     THEN
971         x_estim_accrual_rate := l_x_PRICE_LIST_LINE_rec.estim_accrual_rate;
972     END IF;
973 
974     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.generate_using_formula_id,
975                             l_PRICE_LIST_LINE_rec.generate_using_formula_id)
976     THEN
977         x_generate_using_formula_id := l_x_PRICE_LIST_LINE_rec.generate_using_formula_id;
978         x_generate_using_formula := l_PRICE_LIST_LINE_val_rec.generate_using_formula;
979     END IF;
980 
981     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.inventory_item_id,
982                             l_PRICE_LIST_LINE_rec.inventory_item_id)
983     THEN
984         x_inventory_item_id := l_x_PRICE_LIST_LINE_rec.inventory_item_id;
985         x_inventory_item := l_PRICE_LIST_LINE_val_rec.inventory_item;
986     END IF;
987 
988     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.list_header_id,
989                             l_PRICE_LIST_LINE_rec.list_header_id)
990     THEN
991         x_list_header_id := l_x_PRICE_LIST_LINE_rec.list_header_id;
992         x_list_header := l_PRICE_LIST_LINE_val_rec.list_header;
993     END IF;
994 
995     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.list_line_id,
996                             l_PRICE_LIST_LINE_rec.list_line_id)
997     THEN
998         x_list_line_id := l_x_PRICE_LIST_LINE_rec.list_line_id;
999         x_list_line := l_PRICE_LIST_LINE_val_rec.list_line;
1000     END IF;
1001 
1002     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.list_line_type_code,
1003                             l_PRICE_LIST_LINE_rec.list_line_type_code)
1004     THEN
1005         x_list_line_type_code := l_x_PRICE_LIST_LINE_rec.list_line_type_code;
1006         x_list_line_type := l_PRICE_LIST_LINE_val_rec.list_line_type;
1007     END IF;
1008 
1009     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.list_price,
1010                             l_PRICE_LIST_LINE_rec.list_price)
1011     THEN
1012         x_list_price := l_x_PRICE_LIST_LINE_rec.list_price;
1013     END IF;
1014 
1015     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.from_rltd_modifier_id,
1016                             l_PRICE_LIST_LINE_rec.from_rltd_modifier_id)
1017     THEN
1018         x_from_rltd_modifier_id := l_x_PRICE_LIST_LINE_rec.from_rltd_modifier_id;
1019     END IF;
1020 
1021     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.rltd_modifier_group_no,
1022                             l_PRICE_LIST_LINE_rec.rltd_modifier_group_no)
1023     THEN
1024         x_rltd_modifier_group_no := l_x_PRICE_LIST_LINE_rec.rltd_modifier_group_no;
1025     END IF;
1026 
1027     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.product_precedence,
1028                             l_PRICE_LIST_LINE_rec.product_precedence)
1029     THEN
1030         x_product_precedence := l_x_PRICE_LIST_LINE_rec.product_precedence;
1031     END IF;
1032 
1033     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.modifier_level_code,
1034                             l_PRICE_LIST_LINE_rec.modifier_level_code)
1035     THEN
1036         x_modifier_level_code := l_x_PRICE_LIST_LINE_rec.modifier_level_code;
1037         x_modifier_level := l_PRICE_LIST_LINE_val_rec.modifier_level;
1038     END IF;
1039 
1040     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.number_effective_periods,
1041                             l_PRICE_LIST_LINE_rec.number_effective_periods)
1042     THEN
1043         x_number_effective_periods := l_x_PRICE_LIST_LINE_rec.number_effective_periods;
1044     END IF;
1045 
1046     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.operand,
1047                             l_PRICE_LIST_LINE_rec.operand)
1048     THEN
1049         x_operand := l_x_PRICE_LIST_LINE_rec.operand;
1050     END IF;
1051 
1052     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.organization_id,
1053                             l_PRICE_LIST_LINE_rec.organization_id)
1054     THEN
1055         x_organization_id := l_x_PRICE_LIST_LINE_rec.organization_id;
1056         x_organization := l_PRICE_LIST_LINE_val_rec.organization;
1057     END IF;
1058 
1059     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.override_flag,
1060                             l_PRICE_LIST_LINE_rec.override_flag)
1061     THEN
1062         x_override_flag := l_x_PRICE_LIST_LINE_rec.override_flag;
1063         x_override := l_PRICE_LIST_LINE_val_rec.override;
1064     END IF;
1065 
1066     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.percent_price,
1067                             l_PRICE_LIST_LINE_rec.percent_price)
1068     THEN
1069         x_percent_price := l_x_PRICE_LIST_LINE_rec.percent_price;
1070     END IF;
1071 
1072     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.price_break_type_code,
1073                             l_PRICE_LIST_LINE_rec.price_break_type_code)
1074     THEN
1075         x_price_break_type_code := l_x_PRICE_LIST_LINE_rec.price_break_type_code;
1076         x_price_break_type := l_PRICE_LIST_LINE_val_rec.price_break_type;
1077     END IF;
1078 
1079     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.price_by_formula_id,
1080                             l_PRICE_LIST_LINE_rec.price_by_formula_id)
1081     THEN
1082         x_price_by_formula_id := l_x_PRICE_LIST_LINE_rec.price_by_formula_id;
1083         x_price_by_formula := l_PRICE_LIST_LINE_val_rec.price_by_formula;
1084     END IF;
1085 
1086     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.primary_uom_flag,
1087                             l_PRICE_LIST_LINE_rec.primary_uom_flag)
1088     THEN
1089         x_primary_uom_flag := l_x_PRICE_LIST_LINE_rec.primary_uom_flag;
1090         x_primary_uom := l_PRICE_LIST_LINE_val_rec.primary_uom;
1091     END IF;
1092 
1093     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.print_on_invoice_flag,
1094                             l_PRICE_LIST_LINE_rec.print_on_invoice_flag)
1095     THEN
1096         x_print_on_invoice_flag := l_x_PRICE_LIST_LINE_rec.print_on_invoice_flag;
1097         x_print_on_invoice := l_PRICE_LIST_LINE_val_rec.print_on_invoice;
1098     END IF;
1099 
1100     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.rebate_trxn_type_code,
1101                             l_PRICE_LIST_LINE_rec.rebate_trxn_type_code)
1102     THEN
1103         x_rebate_trxn_type_code := l_x_PRICE_LIST_LINE_rec.rebate_trxn_type_code;
1104         x_rebate_transaction_type := l_PRICE_LIST_LINE_val_rec.rebate_transaction_type;
1105     END IF;
1106 
1107 
1108     -- block pricing
1109     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.recurring_value,
1110                             l_PRICE_LIST_LINE_rec.recurring_value)
1111     THEN
1112       x_recurring_value := l_x_PRICE_LIST_LINE_rec.recurring_value;
1113     END IF;
1114 
1115 
1116     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.related_item_id,
1117                             l_PRICE_LIST_LINE_rec.related_item_id)
1118     THEN
1119         x_related_item_id := l_x_PRICE_LIST_LINE_rec.related_item_id;
1120         x_related_item := l_PRICE_LIST_LINE_val_rec.related_item;
1121     END IF;
1122 
1123     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.relationship_type_id,
1124                             l_PRICE_LIST_LINE_rec.relationship_type_id)
1125     THEN
1126         x_relationship_type_id := l_x_PRICE_LIST_LINE_rec.relationship_type_id;
1127         x_relationship_type := l_PRICE_LIST_LINE_val_rec.relationship_type;
1128     END IF;
1129 
1130     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.reprice_flag,
1131                             l_PRICE_LIST_LINE_rec.reprice_flag)
1132     THEN
1133         x_reprice_flag := l_x_PRICE_LIST_LINE_rec.reprice_flag;
1134         x_reprice := l_PRICE_LIST_LINE_val_rec.reprice;
1135     END IF;
1136 
1137     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.revision,
1138                             l_PRICE_LIST_LINE_rec.revision)
1139     THEN
1140         x_revision := l_x_PRICE_LIST_LINE_rec.revision;
1141     END IF;
1142 
1143     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.revision_date,
1144                             l_PRICE_LIST_LINE_rec.revision_date)
1145     THEN
1146         x_revision_date := l_x_PRICE_LIST_LINE_rec.revision_date;
1147     END IF;
1148 
1149     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.revision_reason_code,
1150                             l_PRICE_LIST_LINE_rec.revision_reason_code)
1151     THEN
1152         x_revision_reason_code := l_x_PRICE_LIST_LINE_rec.revision_reason_code;
1153         x_revision_reason := l_PRICE_LIST_LINE_val_rec.revision_reason;
1154     END IF;
1155 
1156     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.start_date_active,
1157                             l_PRICE_LIST_LINE_rec.start_date_active)
1158     THEN
1159         x_start_date_active := l_x_PRICE_LIST_LINE_rec.start_date_active;
1160     END IF;
1161 
1162     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.substitution_attribute,
1163                             l_PRICE_LIST_LINE_rec.substitution_attribute)
1164     THEN
1165         x_substitution_attribute := l_x_PRICE_LIST_LINE_rec.substitution_attribute;
1166     END IF;
1167 
1168     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.substitution_context,
1169                             l_PRICE_LIST_LINE_rec.substitution_context)
1170     THEN
1171         x_substitution_context := l_x_PRICE_LIST_LINE_rec.substitution_context;
1172     END IF;
1173 
1174     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.substitution_value,
1175                             l_PRICE_LIST_LINE_rec.substitution_value)
1176     THEN
1177         x_substitution_value := l_x_PRICE_LIST_LINE_rec.substitution_value;
1178     END IF;
1179 
1180     IF NOT QP_GLOBALS.Equal (l_x_PRICE_LIST_LINE_rec.customer_item_id,
1181                              l_PRICE_LIST_LINE_rec.customer_item_id)
1182     THEN
1183         x_customer_item_id := l_x_PRICE_LIST_LINE_rec.customer_item_id;
1184     END IF;
1185 
1186     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.break_uom_code,
1187                             l_PRICE_LIST_LINE_rec.break_uom_code)
1188     THEN
1189         x_break_uom_code := l_x_PRICE_LIST_LINE_rec.break_uom_code;
1190     END IF;
1191 
1192     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.break_uom_context,
1193                             l_PRICE_LIST_LINE_rec.break_uom_context)
1194     THEN
1195         x_break_uom_context := l_x_PRICE_LIST_LINE_rec.break_uom_context;
1196     END IF;
1197 
1198     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.break_uom_attribute,
1199                             l_PRICE_LIST_LINE_rec.break_uom_attribute)
1200     THEN
1201         x_break_uom_attribute := l_x_PRICE_LIST_LINE_rec.break_uom_attribute;
1202     END IF;
1203 
1204     IF NOT QP_GLOBALS.Equal(l_x_PRICE_LIST_LINE_rec.continuous_price_break_flag,
1205                             l_PRICE_LIST_LINE_rec.continuous_price_break_flag)
1206     THEN
1207         x_continuous_price_break_flag := l_x_PRICE_LIST_LINE_rec.continuous_price_break_flag;
1208     END IF;
1209 
1210     --  Write to cache.
1211 
1212     Write_PRICE_LIST_LINE
1213     (   p_PRICE_LIST_LINE_rec         => l_x_PRICE_LIST_LINE_rec
1214     );
1215 
1216     oe_debug_pub.add('prog app id in ca pll 2 is: ' || l_x_PRICE_LIST_LINE_rec.program_application_id);
1217     oe_debug_pub.add('prog id in ca pll 2 is: ' || l_x_PRICE_LIST_LINE_rec.program_id);
1218     --  Set return status.
1219 
1220     x_return_status := FND_API.G_RET_STS_SUCCESS;
1221 
1222     --  Get message count and data
1223 
1224     oe_msg_pub.Count_And_Get
1225     (   p_count                       => x_msg_count
1226     ,   p_data                        => x_msg_data
1227     );
1228 
1229 
1230 EXCEPTION
1231 
1232     WHEN FND_API.G_EXC_ERROR THEN
1233 
1234         x_return_status := FND_API.G_RET_STS_ERROR;
1235 
1236         --  Get message count and data
1237 
1238         oe_msg_pub.Count_And_Get
1239         (   p_count                       => x_msg_count
1240         ,   p_data                        => x_msg_data
1241         );
1242 
1243     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1244 
1245         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1246 
1247         --  Get message count and data
1248 
1249         oe_msg_pub.Count_And_Get
1250         (   p_count                       => x_msg_count
1251         ,   p_data                        => x_msg_data
1252         );
1253 
1254     WHEN OTHERS THEN
1255 
1256         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1257 
1258         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
1259         THEN
1260             oe_msg_pub.Add_Exc_Msg
1261             (   G_PKG_NAME
1262             ,   'Change_Attribute'
1263             );
1264         END IF;
1265 
1266         --  Get message count and data
1267 
1268         oe_msg_pub.Count_And_Get
1269         (   p_count                       => x_msg_count
1270         ,   p_data                        => x_msg_data
1271         );
1272 
1273 END Change_Attribute;
1274 
1275 --  Procedure       Validate_And_Write
1276 --
1277 
1278 PROCEDURE Validate_And_Write
1279 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1280 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
1281 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1282 ,   p_list_line_id                  IN  NUMBER
1283 ,   x_creation_date                 OUT NOCOPY /* file.sql.39 change */ DATE
1284 ,   x_created_by                    OUT NOCOPY /* file.sql.39 change */ NUMBER
1285 ,   x_last_update_date              OUT NOCOPY /* file.sql.39 change */ DATE
1286 ,   x_last_updated_by               OUT NOCOPY /* file.sql.39 change */ NUMBER
1287 ,   x_last_update_login             OUT NOCOPY /* file.sql.39 change */ NUMBER
1288 ,   x_program_application_id        OUT NOCOPY /* file.sql.39 change */ NUMBER
1289 ,   x_program_id                    OUT NOCOPY /* file.sql.39 change */ NUMBER
1290 ,   x_program_update_date           OUT NOCOPY /* file.sql.39 change */ DATE
1291 ,   x_request_id                    OUT NOCOPY /* file.sql.39 change */ NUMBER
1292 )
1293 IS
1294 l_PRICE_LIST_LINE_rec         QP_Price_List_PUB.Price_List_Line_Rec_Type;
1295 l_old_PRICE_LIST_LINE_rec     QP_Price_List_PUB.Price_List_Line_Rec_Type;
1296 l_PRICE_LIST_LINE_tbl         QP_Price_List_PUB.Price_List_Line_Tbl_Type;
1297 l_old_PRICE_LIST_LINE_tbl     QP_Price_List_PUB.Price_List_Line_Tbl_Type;
1298 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
1299 l_return_status               VARCHAR2(1);
1300 l_x_PRICE_LIST_rec            QP_Price_List_PUB.Price_List_Rec_Type;
1301 l_x_PRICE_LIST_LINE_rec       QP_Price_List_PUB.Price_List_Line_Rec_Type;
1302 l_x_PRICE_LIST_LINE_tbl       QP_Price_List_PUB.Price_List_Line_Tbl_Type;
1303 l_x_QUALIFIERS_rec            Qp_Qualifier_Rules_Pub.Qualifiers_Rec_Type;
1304 l_x_QUALIFIERS_tbl            Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
1305 l_x_PRICING_ATTR_rec          QP_Price_List_PUB.Pricing_Attr_Rec_Type;
1306 l_x_PRICING_ATTR_tbl          QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
1307 BEGIN
1308 
1309     --  Set control flags.
1310     l_control_rec.controlled_operation := TRUE;
1311     l_control_rec.validate_entity      := TRUE;
1312     l_control_rec.write_to_DB          := TRUE;
1313 
1314     l_control_rec.default_attributes   := FALSE;
1315     l_control_rec.change_attributes    := FALSE;
1316     l_control_rec.process              := FALSE;
1317 
1318     --  Instruct API to retain its caches
1319 
1320     l_control_rec.clear_api_cache      := FALSE;
1321     l_control_rec.clear_api_requests   := FALSE;
1322 
1323     --  Read PRICE_LIST_LINE from cache
1324 
1325     l_old_PRICE_LIST_LINE_rec := Get_PRICE_LIST_LINE
1326     (   p_db_record                   => TRUE
1327     ,   p_list_line_id                => p_list_line_id
1328     );
1329 
1330     l_PRICE_LIST_LINE_rec := Get_PRICE_LIST_LINE
1331     (   p_db_record                   => FALSE
1332     ,   p_list_line_id                => p_list_line_id
1333     );
1334 
1335     --  Set Operation.
1336 
1337     IF FND_API.To_Boolean(l_PRICE_LIST_LINE_rec.db_flag) THEN
1338         l_PRICE_LIST_LINE_rec.operation := QP_GLOBALS.G_OPR_UPDATE;
1339     ELSE
1340         l_PRICE_LIST_LINE_rec.operation := QP_GLOBALS.G_OPR_CREATE;
1341     END IF;
1342 
1343     --  Populate PRICE_LIST_LINE table
1344 
1345     l_PRICE_LIST_LINE_tbl(1) := l_PRICE_LIST_LINE_rec;
1346     l_old_PRICE_LIST_LINE_tbl(1) := l_old_PRICE_LIST_LINE_rec;
1347 
1348     --  Call QP_LIST_HEADERS_PVT.Process_PRICE_LIST
1349 
1350     QP_LIST_HEADERS_PVT.Process_PRICE_LIST
1351     (   p_api_version_number          => 1.0
1352     ,   p_init_msg_list               => FND_API.G_TRUE
1353     ,   x_return_status               => l_return_status
1354     ,   x_msg_count                   => x_msg_count
1355     ,   x_msg_data                    => x_msg_data
1356     ,   p_control_rec                 => l_control_rec
1357     ,   p_PRICE_LIST_LINE_tbl         => l_PRICE_LIST_LINE_tbl
1358     ,   p_old_PRICE_LIST_LINE_tbl     => l_old_PRICE_LIST_LINE_tbl
1359     ,   x_PRICE_LIST_rec              => l_x_PRICE_LIST_rec
1360     ,   x_PRICE_LIST_LINE_tbl         => l_x_PRICE_LIST_LINE_tbl
1361     ,   x_QUALIFIERS_tbl              => l_x_QUALIFIERS_tbl
1362     ,   x_PRICING_ATTR_tbl            => l_x_PRICING_ATTR_tbl
1363     );
1364 
1365     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1366         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1367     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1368         RAISE FND_API.G_EXC_ERROR;
1369     END IF;
1370 
1371 
1372     --  Load OUT parameters.
1373 
1374     l_x_PRICE_LIST_LINE_rec := l_x_PRICE_LIST_LINE_tbl(1);
1375 
1376     x_creation_date                := l_x_PRICE_LIST_LINE_rec.creation_date;
1377     x_created_by                   := l_x_PRICE_LIST_LINE_rec.created_by;
1378     x_last_update_date             := l_x_PRICE_LIST_LINE_rec.last_update_date;
1379     x_last_updated_by              := l_x_PRICE_LIST_LINE_rec.last_updated_by;
1380   x_last_update_login            := l_x_PRICE_LIST_LINE_rec.last_update_login;
1381  x_program_application_id     := l_x_PRICE_LIST_LINE_rec.program_application_id;
1382  x_program_id     := l_x_PRICE_LIST_LINE_rec.program_id;
1383  x_program_update_date     := l_x_PRICE_LIST_LINE_rec.program_update_date;
1384  x_request_id     := l_x_PRICE_LIST_LINE_rec.request_id;
1385 
1386     --  Clear PRICE_LIST_LINE record cache
1387 
1388     Clear_PRICE_LIST_LINE;
1389 
1390     --  Keep track of performed operations.
1391 
1392     l_old_PRICE_LIST_LINE_rec.operation := l_PRICE_LIST_LINE_rec.operation;
1393 
1394 
1395     --  Set return status.
1396 
1397     x_return_status := FND_API.G_RET_STS_SUCCESS;
1398 
1399     --  Get message count and data
1400 
1401     oe_msg_pub.Count_And_Get
1402     (   p_count                       => x_msg_count
1403     ,   p_data                        => x_msg_data
1404     );
1405 
1406 
1407 EXCEPTION
1408 
1409     WHEN FND_API.G_EXC_ERROR THEN
1410 
1411         x_return_status := FND_API.G_RET_STS_ERROR;
1412 
1413         --  Get message count and data
1414 
1415         oe_msg_pub.Count_And_Get
1416         (   p_count                       => x_msg_count
1417         ,   p_data                        => x_msg_data
1418         );
1419 
1420     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1421 
1422         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1423 
1424         --  Get message count and data
1425 
1426         oe_msg_pub.Count_And_Get
1427         (   p_count                       => x_msg_count
1428         ,   p_data                        => x_msg_data
1429         );
1430 
1431     WHEN OTHERS THEN
1432 
1433         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1434 
1435         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
1436         THEN
1437             oe_msg_pub.Add_Exc_Msg
1438             (   G_PKG_NAME
1439             ,   'Validate_And_Write'
1440             );
1441         END IF;
1442 
1443         --  Get message count and data
1444 
1445         oe_msg_pub.Count_And_Get
1446         (   p_count                       => x_msg_count
1447         ,   p_data                        => x_msg_data
1448         );
1449 
1450 END Validate_And_Write;
1451 
1452 --  Procedure       Delete_Row
1453 --
1454 
1455 PROCEDURE Delete_Row
1456 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1457 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
1458 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1459 ,   p_list_line_id                  IN  NUMBER
1460 )
1461 IS
1462 l_PRICE_LIST_LINE_rec         QP_Price_List_PUB.Price_List_Line_Rec_Type;
1463 l_PRICE_LIST_LINE_tbl         QP_Price_List_PUB.Price_List_Line_Tbl_Type;
1464 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
1465 l_return_status               VARCHAR2(1);
1466 l_x_PRICE_LIST_rec            QP_Price_List_PUB.Price_List_Rec_Type;
1467 l_x_PRICE_LIST_LINE_rec       QP_Price_List_PUB.Price_List_Line_Rec_Type;
1468 l_x_PRICE_LIST_LINE_tbl       QP_Price_List_PUB.Price_List_Line_Tbl_Type;
1469 l_x_QUALIFIERS_rec            Qp_Qualifier_Rules_Pub.Qualifiers_Rec_Type;
1470 l_x_QUALIFIERS_tbl            Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
1471 l_x_PRICING_ATTR_rec          QP_Price_List_PUB.Pricing_Attr_Rec_Type;
1472 l_x_PRICING_ATTR_tbl          QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
1473 BEGIN
1474 
1475     --  Set control flags.
1476 
1477     l_control_rec.controlled_operation := TRUE;
1478     l_control_rec.validate_entity      := TRUE;
1479     l_control_rec.write_to_DB          := TRUE;
1480 
1481     l_control_rec.default_attributes   := FALSE;
1482     l_control_rec.change_attributes    := FALSE;
1483     l_control_rec.process              := FALSE;
1484 
1485     --  Instruct API to retain its caches
1486 
1487     l_control_rec.clear_api_cache      := FALSE;
1488     l_control_rec.clear_api_requests   := FALSE;
1489 
1490     --  Read DB record from cache
1491 
1492     l_PRICE_LIST_LINE_rec := Get_PRICE_LIST_LINE
1493     (   p_db_record                   => TRUE
1494     ,   p_list_line_id                => p_list_line_id
1495     );
1496 
1497     --  Set Operation.
1498 
1499     l_PRICE_LIST_LINE_rec.operation := QP_GLOBALS.G_OPR_DELETE;
1500 
1501     --  Populate PRICE_LIST_LINE table
1502 
1503     l_PRICE_LIST_LINE_tbl(1) := l_PRICE_LIST_LINE_rec;
1504 
1505     --  Call QP_LIST_HEADERS_PVT.Process_PRICE_LIST
1506 
1507     QP_LIST_HEADERS_PVT.Process_PRICE_LIST
1508     (   p_api_version_number          => 1.0
1509     ,   p_init_msg_list               => FND_API.G_TRUE
1510     ,   x_return_status               => l_return_status
1511     ,   x_msg_count                   => x_msg_count
1512     ,   x_msg_data                    => x_msg_data
1513     ,   p_control_rec                 => l_control_rec
1514     ,   p_PRICE_LIST_LINE_tbl         => l_PRICE_LIST_LINE_tbl
1515     ,   x_PRICE_LIST_rec              => l_x_PRICE_LIST_rec
1516     ,   x_PRICE_LIST_LINE_tbl         => l_x_PRICE_LIST_LINE_tbl
1517     ,   x_QUALIFIERS_tbl              => l_x_QUALIFIERS_tbl
1518     ,   x_PRICING_ATTR_tbl            => l_x_PRICING_ATTR_tbl
1519     );
1520 
1521     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1522         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1523     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1524         RAISE FND_API.G_EXC_ERROR;
1525     END IF;
1526 
1527 
1528     --  Clear PRICE_LIST_LINE record cache
1529 
1530     Clear_PRICE_LIST_LINE;
1531 
1532     --  Set return status.
1533 
1534     x_return_status := FND_API.G_RET_STS_SUCCESS;
1535 
1536     --  Get message count and data
1537 
1538     oe_msg_pub.Count_And_Get
1539     (   p_count                       => x_msg_count
1540     ,   p_data                        => x_msg_data
1541     );
1542 
1543 
1544 EXCEPTION
1545 
1546     WHEN FND_API.G_EXC_ERROR THEN
1547 
1548         x_return_status := FND_API.G_RET_STS_ERROR;
1549 
1550         --  Get message count and data
1551 
1552         oe_msg_pub.Count_And_Get
1553         (   p_count                       => x_msg_count
1554         ,   p_data                        => x_msg_data
1555         );
1556 
1557     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1558 
1559         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1560 
1561         --  Get message count and data
1562 
1563         oe_msg_pub.Count_And_Get
1564         (   p_count                       => x_msg_count
1565         ,   p_data                        => x_msg_data
1566         );
1567 
1568     WHEN OTHERS THEN
1569 
1570         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1571 
1572         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
1573         THEN
1574             oe_msg_pub.Add_Exc_Msg
1575             (   G_PKG_NAME
1576             ,   'Delete_Row'
1577             );
1578         END IF;
1579 
1580         --  Get message count and data
1581 
1582         oe_msg_pub.Count_And_Get
1583         (   p_count                       => x_msg_count
1584         ,   p_data                        => x_msg_data
1585         );
1586 
1587 END Delete_Row;
1588 
1589 --  Procedure       Process_Entity
1590 --
1591 
1592 PROCEDURE Process_Entity
1593 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1594 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
1595 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1596 )
1597 IS
1598 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
1599 l_return_status               VARCHAR2(1);
1600 l_x_PRICE_LIST_rec            QP_Price_List_PUB.Price_List_Rec_Type;
1601 l_x_PRICE_LIST_LINE_rec       QP_Price_List_PUB.Price_List_Line_Rec_Type;
1602 l_x_PRICE_LIST_LINE_tbl       QP_Price_List_PUB.Price_List_Line_Tbl_Type;
1603 l_x_QUALIFIERS_rec            Qp_Qualifier_Rules_Pub.Qualifiers_Rec_Type;
1604 l_x_QUALIFIERS_tbl            Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
1605 l_x_PRICING_ATTR_rec          QP_Price_List_PUB.Pricing_Attr_Rec_Type;
1606 l_x_PRICING_ATTR_tbl          QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
1607 BEGIN
1608 
1609     --  Set control flags.
1610 
1611     l_control_rec.controlled_operation := TRUE;
1612     l_control_rec.process              := TRUE;
1613     l_control_rec.process_entity       := QP_GLOBALS.G_ENTITY_PRICE_LIST_LINE;
1614 
1615     l_control_rec.default_attributes   := FALSE;
1616     l_control_rec.change_attributes    := FALSE;
1617     l_control_rec.validate_entity      := FALSE;
1618     l_control_rec.write_to_DB          := FALSE;
1619 
1620     --  Instruct API to clear its request table
1621 
1622     l_control_rec.clear_api_cache      := FALSE;
1623     l_control_rec.clear_api_requests   := FALSE;
1624 
1625     --  Call QP_LIST_HEADERS_PVT.Process_PRICE_LIST
1626 
1627     QP_LIST_HEADERS_PVT.Process_PRICE_LIST
1628     (   p_api_version_number          => 1.0
1629     ,   p_init_msg_list               => FND_API.G_TRUE
1630     ,   x_return_status               => l_return_status
1631     ,   x_msg_count                   => x_msg_count
1632     ,   x_msg_data                    => x_msg_data
1633     ,   p_control_rec                 => l_control_rec
1634     ,   x_PRICE_LIST_rec              => l_x_PRICE_LIST_rec
1635     ,   x_PRICE_LIST_LINE_tbl         => l_x_PRICE_LIST_LINE_tbl
1636     ,   x_QUALIFIERS_tbl              => l_x_QUALIFIERS_tbl
1637     ,   x_PRICING_ATTR_tbl            => l_x_PRICING_ATTR_tbl
1638     );
1639 
1640     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1641         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1642     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1643         RAISE FND_API.G_EXC_ERROR;
1644     END IF;
1645 
1646 
1647     --  Set return status.
1648 
1649     x_return_status := FND_API.G_RET_STS_SUCCESS;
1650 
1651     --  Get message count and data
1652 
1653     oe_msg_pub.Count_And_Get
1654     (   p_count                       => x_msg_count
1655     ,   p_data                        => x_msg_data
1656     );
1657 
1658 
1659 EXCEPTION
1660 
1661     WHEN FND_API.G_EXC_ERROR THEN
1662 
1663         x_return_status := FND_API.G_RET_STS_ERROR;
1664 
1665         --  Get message count and data
1666 
1667         oe_msg_pub.Count_And_Get
1668         (   p_count                       => x_msg_count
1669         ,   p_data                        => x_msg_data
1670         );
1671 
1672     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1673 
1674         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1675 
1676         --  Get message count and data
1677 
1678         oe_msg_pub.Count_And_Get
1679         (   p_count                       => x_msg_count
1680         ,   p_data                        => x_msg_data
1681         );
1682 
1683     WHEN OTHERS THEN
1684 
1685         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1686 
1687         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
1688         THEN
1689             oe_msg_pub.Add_Exc_Msg
1690             (   G_PKG_NAME
1691             ,   'Process_Entity'
1692             );
1693         END IF;
1694 
1695         --  Get message count and data
1696 
1697         oe_msg_pub.Count_And_Get
1698         (   p_count                       => x_msg_count
1699         ,   p_data                        => x_msg_data
1700         );
1701 
1702 END Process_Entity;
1703 
1704 --  Procedure       lock_Row
1705 --
1706 
1707 PROCEDURE Lock_Row
1708 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1709 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
1710 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1711 ,   p_accrual_qty                   IN  NUMBER
1712 ,   p_accrual_uom_code              IN  VARCHAR2
1713 ,   p_arithmetic_operator           IN  VARCHAR2
1714 ,   p_attribute1                    IN  VARCHAR2
1715 ,   p_attribute10                   IN  VARCHAR2
1716 ,   p_attribute11                   IN  VARCHAR2
1717 ,   p_attribute12                   IN  VARCHAR2
1718 ,   p_attribute13                   IN  VARCHAR2
1719 ,   p_attribute14                   IN  VARCHAR2
1720 ,   p_attribute15                   IN  VARCHAR2
1721 ,   p_attribute2                    IN  VARCHAR2
1722 ,   p_attribute3                    IN  VARCHAR2
1723 ,   p_attribute4                    IN  VARCHAR2
1724 ,   p_attribute5                    IN  VARCHAR2
1725 ,   p_attribute6                    IN  VARCHAR2
1726 ,   p_attribute7                    IN  VARCHAR2
1727 ,   p_attribute8                    IN  VARCHAR2
1728 ,   p_attribute9                    IN  VARCHAR2
1729 ,   p_automatic_flag                IN  VARCHAR2
1730 ,   p_base_qty                      IN  NUMBER
1731 ,   p_base_uom_code                 IN  VARCHAR2
1732 ,   p_comments                      IN  VARCHAR2
1733 ,   p_context                       IN  VARCHAR2
1734 ,   p_created_by                    IN  NUMBER
1735 ,   p_creation_date                 IN  DATE
1736 ,   p_effective_period_uom          IN  VARCHAR2
1737 ,   p_end_date_active               IN  DATE
1738 ,   p_estim_accrual_rate            IN  NUMBER
1739 ,   p_generate_using_formula_id     IN  NUMBER
1740 ,   p_inventory_item_id             IN  NUMBER
1741 ,   p_last_updated_by               IN  NUMBER
1742 ,   p_last_update_date              IN  DATE
1743 ,   p_last_update_login             IN  NUMBER
1744 ,   p_list_header_id                IN  NUMBER
1745 ,   p_list_line_id                  IN  NUMBER
1746 ,   p_list_line_type_code           IN  VARCHAR2
1747 ,   p_list_price                    IN  NUMBER
1748 ,   p_product_precedence            IN  NUMBER
1749 ,   p_modifier_level_code           IN  VARCHAR2
1750 ,   p_number_effective_periods      IN  NUMBER
1751 ,   p_operand                       IN  NUMBER
1752 ,   p_organization_id               IN  NUMBER
1753 ,   p_override_flag                 IN  VARCHAR2
1754 ,   p_percent_price                 IN  NUMBER
1755 ,   p_price_break_type_code         IN  VARCHAR2
1756 ,   p_price_by_formula_id           IN  NUMBER
1757 ,   p_primary_uom_flag              IN  VARCHAR2
1758 ,   p_print_on_invoice_flag         IN  VARCHAR2
1759 ,   p_program_application_id        IN  NUMBER
1760 ,   p_program_id                    IN  NUMBER
1761 ,   p_program_update_date           IN  DATE
1762 ,   p_rebate_trxn_type_code         IN  VARCHAR2
1763 ,   p_related_item_id               IN  NUMBER
1764 ,   p_relationship_type_id          IN  NUMBER
1765 ,   p_reprice_flag                  IN  VARCHAR2
1766 ,   p_request_id                    IN  NUMBER
1767 ,   p_revision                      IN  VARCHAR2
1768 ,   p_revision_date                 IN  DATE
1769 ,   p_revision_reason_code          IN  VARCHAR2
1770 ,   p_start_date_active             IN  DATE
1771 ,   p_substitution_attribute        IN  VARCHAR2
1772 ,   p_substitution_context          IN  VARCHAR2
1773 ,   p_substitution_value            IN  VARCHAR2
1774 ,   p_recurring_value               IN  NUMBER -- block pricing
1775 ,   p_customer_item_id              IN  NUMBER
1776 ,   p_break_uom_code                IN  VARCHAR2 -- OKS proration
1777 ,   p_break_uom_context             IN  VARCHAR2 -- OKS
1778 ,   p_break_uom_attribute           IN  VARCHAR2 -- OKS proration
1779 ,   p_continuous_price_break_flag       IN  VARCHAR2 --Continuous price breaks
1780 )
1781 IS
1782 l_return_status               VARCHAR2(1);
1783 l_PRICE_LIST_LINE_rec         QP_Price_List_PUB.Price_List_Line_Rec_Type;
1784 l_PRICE_LIST_LINE_tbl         QP_Price_List_PUB.Price_List_Line_Tbl_Type;
1785 l_x_PRICE_LIST_rec            QP_Price_List_PUB.Price_List_Rec_Type;
1786 l_x_PRICE_LIST_LINE_rec       QP_Price_List_PUB.Price_List_Line_Rec_Type;
1787 l_x_PRICE_LIST_LINE_tbl       QP_Price_List_PUB.Price_List_Line_Tbl_Type;
1788 l_x_QUALIFIERS_rec            Qp_Qualifier_Rules_Pub.Qualifiers_Rec_Type;
1789 l_x_QUALIFIERS_tbl            Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
1790 l_x_PRICING_ATTR_rec          QP_Price_List_PUB.Pricing_Attr_Rec_Type;
1791 l_x_PRICING_ATTR_tbl          QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
1792 BEGIN
1793 
1794     oe_debug_pub.add('inside lock price list - form 1');
1795 
1796     --  Load PRICE_LIST_LINE record
1797 
1798     l_PRICE_LIST_LINE_rec.accrual_qty := p_accrual_qty;
1799     l_PRICE_LIST_LINE_rec.accrual_uom_code := p_accrual_uom_code;
1800     l_PRICE_LIST_LINE_rec.arithmetic_operator := p_arithmetic_operator;
1801     l_PRICE_LIST_LINE_rec.attribute1 := p_attribute1;
1802     l_PRICE_LIST_LINE_rec.attribute10 := p_attribute10;
1803     l_PRICE_LIST_LINE_rec.attribute11 := p_attribute11;
1804     l_PRICE_LIST_LINE_rec.attribute12 := p_attribute12;
1805     l_PRICE_LIST_LINE_rec.attribute13 := p_attribute13;
1806     l_PRICE_LIST_LINE_rec.attribute14 := p_attribute14;
1807     l_PRICE_LIST_LINE_rec.attribute15 := p_attribute15;
1808     l_PRICE_LIST_LINE_rec.attribute2 := p_attribute2;
1809     l_PRICE_LIST_LINE_rec.attribute3 := p_attribute3;
1810     l_PRICE_LIST_LINE_rec.attribute4 := p_attribute4;
1811     l_PRICE_LIST_LINE_rec.attribute5 := p_attribute5;
1812     l_PRICE_LIST_LINE_rec.attribute6 := p_attribute6;
1813     l_PRICE_LIST_LINE_rec.attribute7 := p_attribute7;
1814     l_PRICE_LIST_LINE_rec.attribute8 := p_attribute8;
1815     l_PRICE_LIST_LINE_rec.attribute9 := p_attribute9;
1816     l_PRICE_LIST_LINE_rec.automatic_flag := p_automatic_flag;
1817     l_PRICE_LIST_LINE_rec.base_qty := p_base_qty;
1818     l_PRICE_LIST_LINE_rec.base_uom_code := p_base_uom_code;
1819     l_PRICE_LIST_LINE_rec.comments := p_comments;
1820     l_PRICE_LIST_LINE_rec.context  := p_context;
1821     l_PRICE_LIST_LINE_rec.created_by := p_created_by;
1822     l_PRICE_LIST_LINE_rec.creation_date := p_creation_date;
1823     l_PRICE_LIST_LINE_rec.effective_period_uom := p_effective_period_uom;
1824     l_PRICE_LIST_LINE_rec.end_date_active := p_end_date_active;
1825     l_PRICE_LIST_LINE_rec.estim_accrual_rate := p_estim_accrual_rate;
1826     l_PRICE_LIST_LINE_rec.generate_using_formula_id := p_generate_using_formula_id;
1827     l_PRICE_LIST_LINE_rec.inventory_item_id := p_inventory_item_id;
1828     l_PRICE_LIST_LINE_rec.last_updated_by := p_last_updated_by;
1829     l_PRICE_LIST_LINE_rec.last_update_date := p_last_update_date;
1830     l_PRICE_LIST_LINE_rec.last_update_login := p_last_update_login;
1831     l_PRICE_LIST_LINE_rec.list_header_id := p_list_header_id;
1832     l_PRICE_LIST_LINE_rec.list_line_id := p_list_line_id;
1833     l_PRICE_LIST_LINE_rec.list_line_type_code := p_list_line_type_code;
1834     l_PRICE_LIST_LINE_rec.list_price := p_list_price;
1835     l_PRICE_LIST_LINE_rec.product_precedence := p_product_precedence;
1836     l_PRICE_LIST_LINE_rec.modifier_level_code := p_modifier_level_code;
1837     l_PRICE_LIST_LINE_rec.number_effective_periods := p_number_effective_periods;
1838     l_PRICE_LIST_LINE_rec.operand  := p_operand;
1839     l_PRICE_LIST_LINE_rec.organization_id := p_organization_id;
1840     l_PRICE_LIST_LINE_rec.override_flag := p_override_flag;
1841     l_PRICE_LIST_LINE_rec.percent_price := p_percent_price;
1842     l_PRICE_LIST_LINE_rec.price_break_type_code := p_price_break_type_code;
1843     l_PRICE_LIST_LINE_rec.price_by_formula_id := p_price_by_formula_id;
1844     l_PRICE_LIST_LINE_rec.primary_uom_flag := p_primary_uom_flag;
1845     l_PRICE_LIST_LINE_rec.print_on_invoice_flag := p_print_on_invoice_flag;
1846     l_PRICE_LIST_LINE_rec.program_application_id := p_program_application_id;
1847     l_PRICE_LIST_LINE_rec.program_id := p_program_id;
1848     l_PRICE_LIST_LINE_rec.program_update_date := p_program_update_date;
1849     l_PRICE_LIST_LINE_rec.rebate_trxn_type_code := p_rebate_trxn_type_code;
1850     l_PRICE_LIST_LINE_rec.related_item_id := p_related_item_id;
1851     l_PRICE_LIST_LINE_rec.relationship_type_id := p_relationship_type_id;
1852     l_PRICE_LIST_LINE_rec.reprice_flag := p_reprice_flag;
1853     l_PRICE_LIST_LINE_rec.request_id := p_request_id;
1854     l_PRICE_LIST_LINE_rec.revision := p_revision;
1855     l_PRICE_LIST_LINE_rec.revision_date := p_revision_date;
1856     l_PRICE_LIST_LINE_rec.revision_reason_code := p_revision_reason_code;
1857     l_PRICE_LIST_LINE_rec.start_date_active := p_start_date_active;
1858     l_PRICE_LIST_LINE_rec.substitution_attribute := p_substitution_attribute;
1859     l_PRICE_LIST_LINE_rec.substitution_context := p_substitution_context;
1860     l_PRICE_LIST_LINE_rec.substitution_value := p_substitution_value;
1861     l_PRICE_LIST_LINE_rec.operation := QP_GLOBALS.G_OPR_LOCK;
1862     l_PRICE_LIST_LINE_rec.recurring_value := p_recurring_value; -- block pricing
1863     l_PRICE_LIST_LINE_rec.customer_item_id := p_customer_item_id;
1864     l_PRICE_LIST_LINE_rec.break_uom_code  := p_break_uom_code;
1865     l_PRICE_LIST_LINE_rec.break_uom_context  := p_break_uom_context;
1866     l_PRICE_LIST_LINE_rec.break_uom_attribute := p_break_uom_attribute;
1867     l_PRICE_LIST_LINE_rec.continuous_price_break_flag := p_continuous_price_break_flag;--Continuous price breaks
1868 
1869     if (p_recurring_value IS NOT NULL) THEN
1870       oe_msg_pub.Add_Exc_Msg(G_PKG_NAME, 'Lock_Row');
1871     end if;
1872 
1873     --  Populate PRICE_LIST_LINE table
1874 
1875     l_PRICE_LIST_LINE_tbl(1) := l_PRICE_LIST_LINE_rec;
1876 
1877     --  Call QP_LIST_HEADERS_PVT.Lock_PRICE_LIST
1878 
1879    oe_debug_pub.add('before calling lock price list');
1880 
1881     QP_LIST_HEADERS_PVT.Lock_PRICE_LIST
1882     (   p_api_version_number          => 1.0
1883     ,   p_init_msg_list               => FND_API.G_TRUE
1884     ,   x_return_status               => l_return_status
1885     ,   x_msg_count                   => x_msg_count
1886     ,   x_msg_data                    => x_msg_data
1887     ,   p_PRICE_LIST_LINE_tbl         => l_PRICE_LIST_LINE_tbl
1888     ,   x_PRICE_LIST_rec              => l_x_PRICE_LIST_rec
1889     ,   x_PRICE_LIST_LINE_tbl         => l_x_PRICE_LIST_LINE_tbl
1890     ,   x_QUALIFIERS_tbl              => l_x_QUALIFIERS_tbl
1891     ,   x_PRICING_ATTR_tbl            => l_x_PRICING_ATTR_tbl
1892     );
1893 
1894      oe_debug_pub.add('after calling lock price list');
1895 
1896     IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
1897 
1898         --  Set DB flag and write record to cache.
1899 
1900         l_x_PRICE_LIST_LINE_rec.db_flag := FND_API.G_TRUE;
1901 
1902         Write_PRICE_LIST_LINE
1903         (   p_PRICE_LIST_LINE_rec         => l_x_PRICE_LIST_LINE_rec
1904         ,   p_db_record                   => TRUE
1905         );
1906 
1907     END IF;
1908 
1909     --  Set return status.
1910 
1911     x_return_status := l_return_status;
1912 
1913     --  Get message count and data
1914 
1915     oe_msg_pub.Count_And_Get
1916     (   p_count                       => x_msg_count
1917     ,   p_data                        => x_msg_data
1918     );
1919 
1920     oe_debug_pub.add('mesg data in lock row : ' || x_msg_data);
1921 
1922 
1923 EXCEPTION
1924 
1925     WHEN OTHERS THEN
1926 
1927         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
1928         THEN
1929             oe_msg_pub.Add_Exc_Msg
1930             (   G_PKG_NAME
1931             ,   'Lock_Row'
1932             );
1933         END IF;
1934 
1935         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1936 
1937         --  Get message count and data
1938 
1939         oe_msg_pub.Count_And_Get
1940         (   p_count                       => x_msg_count
1941         ,   p_data                        => x_msg_data
1942         );
1943 
1944 
1945 
1946 END Lock_Row;
1947 
1948 --  Procedures maintaining PRICE_LIST_LINE record cache.
1949 
1950 PROCEDURE Write_PRICE_LIST_LINE
1951 (   p_PRICE_LIST_LINE_rec           IN  QP_Price_List_PUB.Price_List_Line_Rec_Type
1952 ,   p_db_record                     IN  BOOLEAN := FALSE
1953 )
1954 IS
1955 BEGIN
1956 
1957     g_PRICE_LIST_LINE_rec := p_PRICE_LIST_LINE_rec;
1958 
1959     IF p_db_record THEN
1960 
1961         g_db_PRICE_LIST_LINE_rec := p_PRICE_LIST_LINE_rec;
1962 
1963     END IF;
1964 
1965 END Write_Price_List_Line;
1966 
1967 FUNCTION Get_PRICE_LIST_LINE
1968 (   p_db_record                     IN  BOOLEAN := FALSE
1969 ,   p_list_line_id                  IN  NUMBER
1970 )
1971 RETURN QP_Price_List_PUB.Price_List_Line_Rec_Type
1972 IS
1973 BEGIN
1974     IF  p_list_line_id <> g_PRICE_LIST_LINE_rec.list_line_id
1975     THEN
1976 
1977         --  Query row from DB
1978 
1979 	   oe_debug_pub.add('gpll - query row from db ca 1');
1980 
1981         g_PRICE_LIST_LINE_rec := QP_Price_List_Line_Util.Query_Row
1982         (   p_list_line_id                => p_list_line_id
1983         );
1984 
1985         g_PRICE_LIST_LINE_rec.db_flag  := FND_API.G_TRUE;
1986 
1987         --  Load DB record
1988 
1989         g_db_PRICE_LIST_LINE_rec       := g_PRICE_LIST_LINE_rec;
1990 
1991     END IF;
1992 
1993     IF p_db_record THEN
1994 
1995         RETURN g_db_PRICE_LIST_LINE_rec;
1996 
1997     ELSE
1998 
1999         RETURN g_PRICE_LIST_LINE_rec;
2000 
2001     END IF;
2002 
2003 END Get_Price_List_Line;
2004 
2005 PROCEDURE Clear_Price_List_Line
2006 IS
2007 BEGIN
2008 
2009     g_PRICE_LIST_LINE_rec          := QP_Price_List_PUB.G_MISS_PRICE_LIST_LINE_REC;
2010     g_db_PRICE_LIST_LINE_rec       := QP_Price_List_PUB.G_MISS_PRICE_LIST_LINE_REC;
2011 
2012 END Clear_Price_List_Line;
2013 
2014 -- This procedure will be called from the client when the user
2015 -- clears a record
2016 Procedure Clear_Record
2017 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
2018 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
2019 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
2020 ,   p_list_line_id                  IN  NUMBER
2021 )
2022 IS
2023 l_return_status                     Varchar2(30);
2024 BEGIN
2025      OE_MSG_PUB.initialize;
2026  	x_return_status := FND_API.G_RET_STS_SUCCESS;
2027        QP_DELAYED_REQUESTS_PVT.Delete_Reqs_for_Deleted_Entity(
2028 					p_entity_code  => QP_GLOBALS.G_ENTITY_PRICE_LIST_LINE
2029 					,p_entity_id    => p_list_line_id
2030 				     ,x_return_status => l_return_status);
2031 
2032         OE_MSG_PUB.Count_And_Get
2033         (   p_count                       => x_msg_count
2034         ,   p_data                        => x_msg_data
2035         );
2036 
2037 -- Clear the controller cache
2038 	Clear_Price_List_Line;
2039 
2040 EXCEPTION
2041     WHEN OTHERS THEN
2042         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2043         THEN
2044             OE_MSG_PUB.Add_Exc_Msg
2045             (   G_PKG_NAME
2046             ,   'Clear_Record'
2047             );
2048         END IF;
2049         --  Get message count and data
2050         OE_MSG_PUB.Count_And_Get
2051         (   p_count                       => x_msg_count
2052         ,   p_data                        => x_msg_data
2053         );
2054         x_return_status := FND_API.G_RET_STS_ERROR;
2055 
2056 END Clear_Record;
2057 
2058 
2059 -- This procedure will be called from the client when the user
2060 -- clears a block or Form
2061 Procedure Delete_All_Requests
2062 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
2063 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
2064 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
2065 )
2066 IS
2067 l_return_status                     Varchar2(30);
2068 BEGIN
2069      OE_MSG_PUB.initialize;
2070  	x_return_status := FND_API.G_RET_STS_SUCCESS;
2071        QP_DELAYED_REQUESTS_PVT.Clear_Request(
2072 				     x_return_status => l_return_status);
2073 
2074 EXCEPTION
2075     WHEN OTHERS THEN
2076         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2077         THEN
2078             OE_MSG_PUB.Add_Exc_Msg
2079             (   G_PKG_NAME
2080             ,   'Delete_All_Requests'
2081             );
2082         END IF;
2083         --  Get message count and data
2084         OE_MSG_PUB.Count_And_Get
2085         (   p_count                       => x_msg_count
2086         ,   p_data                        => x_msg_data
2087         );
2088         x_return_status := FND_API.G_RET_STS_ERROR;
2089 
2090 END Delete_All_Requests;
2091 
2092 
2093 END QP_QP_Form_Price_List_Line;