DBA Data[Home] [Help]

PACKAGE BODY: APPS.QP_QP_PRL_FORM_QUALIFIERS

Source


1 PACKAGE BODY QP_QP_PRL_Form_Qualifiers AS
2 /* $Header: QPXFPLQB.pls 120.2 2005/08/31 18:06:39 srashmi noship $ */
3 
4 --  Global constant holding the package name
5 
6 G_PKG_NAME                    CONSTANT VARCHAR2(30) := 'QP_QP_PRL_Form_Qualifiers';
7 
8 --  Global variables holding cached record.
9 
10 g_QUALIFIERS_rec              QP_Qualifier_Rules_PUB.Qualifiers_Rec_Type;
11 g_db_QUALIFIERS_rec           QP_Qualifier_Rules_PUB.Qualifiers_Rec_Type;
12 
13 --  Forward declaration of procedures maintaining entity record cache.
14 
15 PROCEDURE Write_QUALIFIERS
16 (   p_QUALIFIERS_rec                IN  QP_Qualifier_Rules_PUB.Qualifiers_Rec_Type
17 ,   p_db_record                     IN  BOOLEAN := FALSE
18 );
19 
20 FUNCTION Get_QUALIFIERS
21 (   p_db_record                     IN  BOOLEAN := FALSE
22 ,   p_qualifier_id                  IN  NUMBER
23 )
24 RETURN QP_Qualifier_Rules_PUB.Qualifiers_Rec_Type;
25 
26 PROCEDURE Clear_QUALIFIERS;
27 
28 --  Global variable holding performed operations.
29 
30 g_opr__tbl                    QP_Qualifier_Rules_PUB.Qualifiers_Tbl_Type;
31 
32 --  Procedure : Default_Attributes
33 --
34 
35 PROCEDURE Default_Attributes
36 (   p_qualifier_rule_id             IN  NUMBER := FND_API.G_MISS_NUM
37 ,   p_list_header_id                IN  NUMBER := FND_API.G_MISS_NUM
38 ,   p_qualifier_context             IN  VARCHAR2 := FND_API.G_MISS_CHAR
39 ,   p_qualifier_attribute           IN  VARCHAR2 := FND_API.G_MISS_CHAR
40 ,   p_qualifier_attr_value          IN  VARCHAR2 := FND_API.G_MISS_CHAR
41 ,   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
42 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
43 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
44 ,   x_attribute1                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
45 ,   x_attribute10                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
46 ,   x_attribute11                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
47 ,   x_attribute12                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
48 ,   x_attribute13                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
49 ,   x_attribute14                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
50 ,   x_attribute15                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
51 ,   x_attribute2                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
52 ,   x_attribute3                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
53 ,   x_attribute4                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
54 ,   x_attribute5                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
55 ,   x_attribute6                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
56 ,   x_attribute7                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
57 ,   x_attribute8                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
58 ,   x_attribute9                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
59 ,   x_comparison_operator_code      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
60 ,   x_context                       OUT NOCOPY /* file.sql.39 change */ VARCHAR2
61 ,   x_created_from_rule_id          OUT NOCOPY /* file.sql.39 change */ NUMBER
62 ,   x_end_date_active               OUT NOCOPY /* file.sql.39 change */ DATE
63 ,   x_excluder_flag                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
64 ,   x_list_header_id                OUT NOCOPY /* file.sql.39 change */ NUMBER
65 ,   x_list_line_id                  OUT NOCOPY /* file.sql.39 change */ NUMBER
66 ,   x_qualifier_attribute           OUT NOCOPY /* file.sql.39 change */ VARCHAR2
67 ,   x_qualifier_attr_value          OUT NOCOPY /* file.sql.39 change */ VARCHAR2
68 ,   x_qualifier_attr_value_to       OUT NOCOPY /* file.sql.39 change */ VARCHAR2
69 ,   x_qualifier_context             OUT NOCOPY /* file.sql.39 change */ VARCHAR2
70 ,   x_qualifier_datatype            OUT NOCOPY /* file.sql.39 change */ VARCHAR2
71 --,   x_qualifier_date_format         OUT NOCOPY /* file.sql.39 change */ VARCHAR2
72 ,   x_qualifier_grouping_no         OUT NOCOPY /* file.sql.39 change */ NUMBER
73 ,   x_qualifier_id                  OUT NOCOPY /* file.sql.39 change */ NUMBER
74 --,   x_qualifier_number_format       OUT NOCOPY /* file.sql.39 change */ VARCHAR2
75 ,   x_qualifier_precedence          OUT NOCOPY /* file.sql.39 change */ NUMBER
76 ,   x_qualifier_rule_id             OUT NOCOPY /* file.sql.39 change */ NUMBER
77 ,   x_start_date_active             OUT NOCOPY /* file.sql.39 change */ DATE
78 --,   x_comparison_operator           OUT NOCOPY /* file.sql.39 change */ VARCHAR2
79 ,   x_created_from_rule             OUT NOCOPY /* file.sql.39 change */ VARCHAR2
80 --,   x_excluder                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
81 ,   x_list_header                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
82 ,   x_list_line                     OUT NOCOPY /* file.sql.39 change */ VARCHAR2
83 --,   x_qualifier                     OUT NOCOPY /* file.sql.39 change */ VARCHAR2
84 ,   x_qualifier_rule                OUT NOCOPY /* file.sql.39 change */ VARCHAR2
85 ,   x_qualify_hier_descendent_flag OUT NOCOPY VARCHAR2   -- Added for TCA
86 )
87 IS
88 l_QUALIFIERS_rec              QP_Qualifier_Rules_PUB.Qualifiers_Rec_Type;
89 l_QUALIFIERS_val_rec          QP_Qualifier_Rules_PUB.Qualifiers_Val_Rec_Type;
90 l_QUALIFIERS_tbl              QP_Qualifier_Rules_PUB.Qualifiers_Tbl_Type;
91 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
92 l_return_status               VARCHAR2(1);
93 l_x_PRICE_LIST_rec            QP_Price_List_PUB.Price_List_Rec_Type;
94 l_x_PRICE_LIST_LINE_rec       QP_Price_List_PUB.Price_List_Line_Rec_Type;
95 l_x_PRICE_LIST_LINE_tbl       QP_Price_List_PUB.Price_List_Line_Tbl_Type;
96 l_x_QUALIFIERS_rec            Qp_Qualifier_Rules_Pub.Qualifiers_Rec_Type;
97 l_x_QUALIFIERS_tbl            Qp_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
98 l_x_PRICING_ATTR_rec          QP_Price_List_PUB.Pricing_Attr_Rec_Type;
99 l_x_PRICING_ATTR_tbl          QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
100 l_x_QUALIFIER_RULES_rec       QP_Qualifier_Rules_PUB.Qualifier_Rules_Rec_Type;
101 l_qualifier_group_no          number := -1;
102 BEGIN
103 
104     --  Set control flags.
105 
106     oe_debug_pub.add('Ren: inside default attr of qualifiers 1');
107 
108     l_control_rec.controlled_operation := TRUE;
109     l_control_rec.default_attributes   := TRUE;
110 
111     l_control_rec.change_attributes    := FALSE;
112     l_control_rec.validate_entity      := FALSE;
113     l_control_rec.write_to_DB          := FALSE;
114     l_control_rec.process              := FALSE;
115 
116     --  Instruct API to retain its caches
117 
118     l_control_rec.clear_api_cache      := FALSE;
119     l_control_rec.clear_api_requests   := FALSE;
120 
121     --  Load IN parameters if any exist
122 
123 
124     l_QUALIFIERS_rec.list_header_id              := p_list_header_id;
125     l_QUALIFIERS_rec.qualifier_rule_id           := p_qualifier_rule_id;
126     l_QUALIFIERS_rec.qualifier_context           := p_qualifier_context;
127     l_QUALIFIERS_rec.qualifier_attribute         := p_qualifier_attribute;
128     l_QUALIFIERS_rec.qualifier_attr_value        := p_qualifier_attr_value;
129     l_QUALIFIERS_rec.qualifier_grouping_no       := l_qualifier_group_no;
130 
131     --  Defaulting of flex values is currently done by the form.
132     --  Set flex attributes to NULL in order to avoid defaulting them.
133 
134     l_QUALIFIERS_rec.attribute1                   := NULL;
135     l_QUALIFIERS_rec.attribute10                  := NULL;
136     l_QUALIFIERS_rec.attribute11                  := NULL;
137     l_QUALIFIERS_rec.attribute12                  := NULL;
138     l_QUALIFIERS_rec.attribute13                  := NULL;
139     l_QUALIFIERS_rec.attribute14                  := NULL;
140     l_QUALIFIERS_rec.attribute15                  := NULL;
141     l_QUALIFIERS_rec.attribute2                   := NULL;
142     l_QUALIFIERS_rec.attribute3                   := NULL;
143     l_QUALIFIERS_rec.attribute4                   := NULL;
144     l_QUALIFIERS_rec.attribute5                   := NULL;
145     l_QUALIFIERS_rec.attribute6                   := NULL;
146     l_QUALIFIERS_rec.attribute7                   := NULL;
147     l_QUALIFIERS_rec.attribute8                   := NULL;
148     l_QUALIFIERS_rec.attribute9                   := NULL;
149     l_QUALIFIERS_rec.context                      := NULL;
150 
151     --  Set Operation to Create
152 
153     l_QUALIFIERS_rec.operation := QP_GLOBALS.G_OPR_CREATE;
154 
155     --  Populate QUALIFIERS table
156 
157     l_QUALIFIERS_tbl(1) := l_QUALIFIERS_rec;
158 
159     --  Call QP_Qualifier_Rules_PVT.Process_QUALIFIER_RULES
160 
161     QP_LIST_HEADERS_PVT.Process_PRICE_LIST
162     (   p_api_version_number          => 1.0
163     ,   p_init_msg_list               => FND_API.G_TRUE
164     ,   x_return_status               => l_return_status
165     ,   x_msg_count                   => x_msg_count
166     ,   x_msg_data                    => x_msg_data
167     ,   p_control_rec                 => l_control_rec
168     ,   p_QUALIFIERS_tbl              => l_QUALIFIERS_tbl
169     ,   x_PRICE_LIST_rec              => l_x_PRICE_LIST_rec
170     ,   x_PRICE_LIST_LINE_tbl         => l_x_PRICE_LIST_LINE_tbl
171     ,   x_QUALIFIERS_tbl              => l_x_QUALIFIERS_tbl
172     ,   x_PRICING_ATTR_tbl            => l_x_PRICING_ATTR_tbl
173     );
174 
175   /*
176     QP_Qualifier_Rules_PVT.Process_QUALIFIER_RULES
177     (   p_api_version_number          => 1.0
178     ,   p_init_msg_list               => FND_API.G_TRUE
179     ,   x_return_status               => l_return_status
180     ,   x_msg_count                   => x_msg_count
181     ,   x_msg_data                    => x_msg_data
182     ,   p_control_rec                 => l_control_rec
183     ,   p_QUALIFIERS_tbl              => l_QUALIFIERS_tbl
184     ,   x_QUALIFIER_RULES_rec         => l_x_QUALIFIER_RULES_rec
185     ,   x_QUALIFIERS_tbl              => l_x_QUALIFIERS_tbl
186     );
187 
188     */
189 
190 
191     oe_debug_pub.add('Ren: after process qualifier rules');
192 
193     oe_debug_pub.add('return status is : ' || l_return_status);
194 
195     oe_debug_pub.add('ren : msg data is : ' || x_msg_data);
196 
197     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
198         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
199     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
200         RAISE FND_API.G_EXC_ERROR;
201     END IF;
202 
203 
204     --  Unload out tbl
205 
206     l_x_QUALIFIERS_rec := l_x_QUALIFIERS_tbl(1);
207 
208     --  Load OUT parameters.
209 
210     x_attribute1                   := l_x_QUALIFIERS_rec.attribute1;
211     x_attribute10                  := l_x_QUALIFIERS_rec.attribute10;
212     x_attribute11                  := l_x_QUALIFIERS_rec.attribute11;
213     x_attribute12                  := l_x_QUALIFIERS_rec.attribute12;
214     x_attribute13                  := l_x_QUALIFIERS_rec.attribute13;
215     x_attribute14                  := l_x_QUALIFIERS_rec.attribute14;
216     x_attribute15                  := l_x_QUALIFIERS_rec.attribute15;
217     x_attribute2                   := l_x_QUALIFIERS_rec.attribute2;
218     x_attribute3                   := l_x_QUALIFIERS_rec.attribute3;
219     x_attribute4                   := l_x_QUALIFIERS_rec.attribute4;
220     x_attribute5                   := l_x_QUALIFIERS_rec.attribute5;
221     x_attribute6                   := l_x_QUALIFIERS_rec.attribute6;
222     x_attribute7                   := l_x_QUALIFIERS_rec.attribute7;
223     x_attribute8                   := l_x_QUALIFIERS_rec.attribute8;
224     x_attribute9                   := l_x_QUALIFIERS_rec.attribute9;
225     x_comparison_operator_code     := l_x_QUALIFIERS_rec.comparison_operator_code;
226     x_context                      := l_x_QUALIFIERS_rec.context;
227     x_created_from_rule_id         := l_x_QUALIFIERS_rec.created_from_rule_id;
228     x_end_date_active              := l_x_QUALIFIERS_rec.end_date_active;
229     x_excluder_flag                := l_x_QUALIFIERS_rec.excluder_flag;
230     x_list_header_id               := l_x_QUALIFIERS_rec.list_header_id;
231     x_list_line_id                 := l_x_QUALIFIERS_rec.list_line_id;
232     x_qualifier_attribute          := l_x_QUALIFIERS_rec.qualifier_attribute;
233     x_qualifier_attr_value         := l_x_QUALIFIERS_rec.qualifier_attr_value;
234     x_qualifier_attr_value_to    := l_x_QUALIFIERS_rec.qualifier_attr_value_to;
235     x_qualifier_context            := l_x_QUALIFIERS_rec.qualifier_context;
236     x_qualifier_datatype           := l_x_QUALIFIERS_rec.qualifier_datatype;
237     --x_qualifier_date_format        := l_x_QUALIFIERS_rec.qualifier_date_format;
238     x_qualifier_grouping_no        := l_x_QUALIFIERS_rec.qualifier_grouping_no;
239     x_qualifier_id                 := l_x_QUALIFIERS_rec.qualifier_id;
240     --x_qualifier_number_format      := l_x_QUALIFIERS_rec.qualifier_number_format;
241     x_qualifier_precedence         := l_x_QUALIFIERS_rec.qualifier_precedence;
242     x_qualifier_rule_id            := l_x_QUALIFIERS_rec.qualifier_rule_id;
243     x_start_date_active            := l_x_QUALIFIERS_rec.start_date_active;
244     x_qualify_hier_descendent_flag := l_x_QUALIFIERS_rec.qualify_hier_descendent_flag ;  -- Added for TCA
245 
246     --  Load display out parameters if any
247 
248     oe_debug_pub.add('Ren: before get_values');
249     oe_debug_pub.add('ren : msg data 0.5 is : ' || x_msg_data);
250 
251     l_QUALIFIERS_val_rec := QP_Qualifiers_Util.Get_Values
252     (   p_QUALIFIERS_rec              => l_x_QUALIFIERS_rec
253     );
254     --x_comparison_operator          := l_QUALIFIERS_val_rec.comparison_operator;
255     x_created_from_rule            := l_QUALIFIERS_val_rec.created_from_rule;
256     --x_excluder                     := l_QUALIFIERS_val_rec.excluder;
257     x_list_header                  := l_QUALIFIERS_val_rec.list_header;
258     x_list_line                    := l_QUALIFIERS_val_rec.list_line;
259    -- x_qualifier                    := l_QUALIFIERS_val_rec.qualifier;
260     x_qualifier_rule               := l_QUALIFIERS_val_rec.qualifier_rule;
261 
262     oe_debug_pub.add('Ren: after get_values ');
263 
264     --  Write to cache.
265     --  Set db_flag to False before writing to cache
266 
267     l_x_QUALIFIERS_rec.db_flag := FND_API.G_FALSE;
268 
269     oe_debug_pub.add('Ren: before write qualifiers');
270     oe_debug_pub.add('Ren: msg data 1 is :' || x_msg_data);
271 
272     Write_QUALIFIERS
273     (   p_QUALIFIERS_rec              => l_x_QUALIFIERS_rec
274     );
275     oe_debug_pub.add('Ren: msg data 2 is :' || x_msg_data);
276 
277     --  Set return status.
278 
279     x_return_status := FND_API.G_RET_STS_SUCCESS;
280 
281     oe_debug_pub.add('Ren: msg data 2.5 is :' || x_msg_data);
282 
283     --  Get message count and data
284 
285     oe_msg_pub.Count_And_Get
286     (   p_count                       => x_msg_count
287     ,   p_data                        => x_msg_data
288     );
289 
290     oe_debug_pub.add('Ren: msg data 3 is :' || x_msg_data);
291 
292 EXCEPTION
293 
294     WHEN FND_API.G_EXC_ERROR THEN
295 
296         x_return_status := FND_API.G_RET_STS_ERROR;
297 
298         --  Get message count and data
299 
300         oe_msg_pub.Count_And_Get
301         (   p_count                       => x_msg_count
302         ,   p_data                        => x_msg_data
303         );
304 
305     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
306 
307         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
308 
309         --  Get message count and data
310 
311         oe_msg_pub.Count_And_Get
312         (   p_count                       => x_msg_count
313         ,   p_data                        => x_msg_data
314         );
315 
316     WHEN OTHERS THEN
317 
318         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
319 
320         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
321         THEN
322             oe_msg_pub.Add_Exc_Msg
323             (   G_PKG_NAME
324             ,   'Default_Attributes'
325             );
326         END IF;
327 
328         --  Get message count and data
329 
330         oe_msg_pub.Count_And_Get
331         (   p_count                       => x_msg_count
332         ,   p_data                        => x_msg_data
333         );
334 
335 END Default_Attributes;
336 
337 --  Procedure   :   Change_Attribute
338 --
339 
340 PROCEDURE Change_Attribute
341 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
342 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
343 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
344 ,   p_qualifier_id                  IN  NUMBER
345 ,   p_attr_id                       IN  NUMBER
346 ,   p_attr_value                    IN  VARCHAR2
347 ,   p_attribute1                    IN  VARCHAR2
348 ,   p_attribute10                   IN  VARCHAR2
349 ,   p_attribute11                   IN  VARCHAR2
350 ,   p_attribute12                   IN  VARCHAR2
351 ,   p_attribute13                   IN  VARCHAR2
352 ,   p_attribute14                   IN  VARCHAR2
353 ,   p_attribute15                   IN  VARCHAR2
354 ,   p_attribute2                    IN  VARCHAR2
355 ,   p_attribute3                    IN  VARCHAR2
356 ,   p_attribute4                    IN  VARCHAR2
357 ,   p_attribute5                    IN  VARCHAR2
358 ,   p_attribute6                    IN  VARCHAR2
359 ,   p_attribute7                    IN  VARCHAR2
360 ,   p_attribute8                    IN  VARCHAR2
361 ,   p_attribute9                    IN  VARCHAR2
362 ,   p_context                       IN  VARCHAR2
363 ,   x_attribute1                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
364 ,   x_attribute10                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
365 ,   x_attribute11                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
366 ,   x_attribute12                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
367 ,   x_attribute13                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
368 ,   x_attribute14                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
369 ,   x_attribute15                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
370 ,   x_attribute2                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
371 ,   x_attribute3                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
372 ,   x_attribute4                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
373 ,   x_attribute5                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
374 ,   x_attribute6                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
375 ,   x_attribute7                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
376 ,   x_attribute8                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
377 ,   x_attribute9                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
378 ,   x_comparison_operator_code      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
379 ,   x_context                       OUT NOCOPY /* file.sql.39 change */ VARCHAR2
380 ,   x_created_from_rule_id          OUT NOCOPY /* file.sql.39 change */ NUMBER
381 ,   x_end_date_active               OUT NOCOPY /* file.sql.39 change */ DATE
382 ,   x_excluder_flag                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
383 ,   x_list_header_id                OUT NOCOPY /* file.sql.39 change */ NUMBER
384 ,   x_list_line_id                  OUT NOCOPY /* file.sql.39 change */ NUMBER
385 ,   x_qualifier_attribute           OUT NOCOPY /* file.sql.39 change */ VARCHAR2
386 ,   x_qualifier_attr_value          OUT NOCOPY /* file.sql.39 change */ VARCHAR2
387 ,   x_qualifier_attr_value_to       OUT NOCOPY /* file.sql.39 change */ VARCHAR2
388 ,   x_qualifier_context             OUT NOCOPY /* file.sql.39 change */ VARCHAR2
389 ,   x_qualifier_datatype            OUT NOCOPY /* file.sql.39 change */ VARCHAR2
390 --,   x_qualifier_date_format         OUT NOCOPY /* file.sql.39 change */ VARCHAR2
391 ,   x_qualifier_grouping_no         OUT NOCOPY /* file.sql.39 change */ NUMBER
392 ,   x_qualifier_id                  OUT NOCOPY /* file.sql.39 change */ NUMBER
393 --,   x_qualifier_number_format       OUT NOCOPY /* file.sql.39 change */ VARCHAR2
394 ,   x_qualifier_precedence          OUT NOCOPY /* file.sql.39 change */ NUMBER
395 ,   x_qualifier_rule_id             OUT NOCOPY /* file.sql.39 change */ NUMBER
396 ,   x_start_date_active             OUT NOCOPY /* file.sql.39 change */ DATE
397 --,   x_comparison_operator           OUT NOCOPY /* file.sql.39 change */ VARCHAR2
398 ,   x_created_from_rule             OUT NOCOPY /* file.sql.39 change */ VARCHAR2
399 --,   x_excluder                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
400 ,   x_list_header                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
401 ,   x_list_line                     OUT NOCOPY /* file.sql.39 change */ VARCHAR2
402 --,   x_qualifier                     OUT NOCOPY /* file.sql.39 change */ VARCHAR2
403 ,   x_qualifier_rule                OUT NOCOPY /* file.sql.39 change */ VARCHAR2
404 ,   x_qualify_hier_descendent_flag OUT NOCOPY VARCHAR2  -- Added for TCA
405 )
406 IS
407 l_QUALIFIERS_rec              QP_Qualifier_Rules_PUB.Qualifiers_Rec_Type;
408 l_old_QUALIFIERS_rec          QP_Qualifier_Rules_PUB.Qualifiers_Rec_Type;
409 l_QUALIFIERS_val_rec          QP_Qualifier_Rules_PUB.Qualifiers_Val_Rec_Type;
410 l_QUALIFIERS_tbl              QP_Qualifier_Rules_PUB.Qualifiers_Tbl_Type;
411 l_old_QUALIFIERS_tbl          QP_Qualifier_Rules_PUB.Qualifiers_Tbl_Type;
412 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
413 l_return_status               VARCHAR2(1);
414 l_x_QUALIFIER_RULES_rec       QP_Qualifier_Rules_PUB.Qualifier_Rules_Rec_Type;
415 l_x_QUALIFIERS_rec            QP_Qualifier_Rules_PUB.Qualifiers_Rec_Type;
416 l_x_QUALIFIERS_tbl            QP_Qualifier_Rules_PUB.Qualifiers_Tbl_Type;
417 l_x_PRICE_LIST_rec            QP_Price_List_PUB.Price_List_Rec_Type;
418 l_x_PRICE_LIST_LINE_rec       QP_Price_List_PUB.Price_List_Line_Rec_Type;
419 l_x_PRICE_LIST_LINE_tbl       QP_Price_List_PUB.Price_List_Line_Tbl_Type;
420 l_x_PRICING_ATTR_rec          QP_Price_List_PUB.Pricing_Attr_Rec_Type;
421 l_x_PRICING_ATTR_tbl          QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
422 BEGIN
423 
424     --  Set control flags.
425 
426     l_control_rec.controlled_operation := TRUE;
427     l_control_rec.change_attributes    := TRUE;
428 
429     l_control_rec.default_attributes   := FALSE;
430     l_control_rec.validate_entity      := FALSE;
431     l_control_rec.write_to_DB          := FALSE;
432     l_control_rec.process              := FALSE;
433 
434     --  Instruct API to retain its caches
435 
436     l_control_rec.clear_api_cache      := FALSE;
437     l_control_rec.clear_api_requests   := FALSE;
438 
439     --  Read QUALIFIERS from cache
440 
441     l_QUALIFIERS_rec := Get_QUALIFIERS
442     (   p_db_record                   => FALSE
443     ,   p_qualifier_id                => p_qualifier_id
444     );
445 
446     l_old_QUALIFIERS_rec           := l_QUALIFIERS_rec;
447 
448     IF p_attr_id = QP_Qualifiers_Util.G_COMPARISON_OPERATOR THEN
449         l_QUALIFIERS_rec.comparison_operator_code := p_attr_value;
450     ELSIF p_attr_id = QP_Qualifiers_Util.G_CREATED_FROM_RULE THEN
451         l_QUALIFIERS_rec.created_from_rule_id := TO_NUMBER(p_attr_value);
452     ELSIF p_attr_id = QP_Qualifiers_Util.G_END_DATE_ACTIVE THEN
453         l_QUALIFIERS_rec.end_date_active := TO_DATE(p_attr_value,'DD/MM/YYYY');
454     ELSIF p_attr_id = QP_Qualifiers_Util.G_EXCLUDER THEN
455         l_QUALIFIERS_rec.excluder_flag := p_attr_value;
456     ELSIF p_attr_id = QP_Qualifiers_Util.G_LIST_HEADER THEN
457         l_QUALIFIERS_rec.list_header_id := TO_NUMBER(p_attr_value);
458     ELSIF p_attr_id = QP_Qualifiers_Util.G_LIST_LINE THEN
459         l_QUALIFIERS_rec.list_line_id := TO_NUMBER(p_attr_value);
460     ELSIF p_attr_id = QP_Qualifiers_Util.G_QUALIFIER_ATTRIBUTE THEN
461         l_QUALIFIERS_rec.qualifier_attribute := p_attr_value;
462     ELSIF p_attr_id = QP_Qualifiers_Util.G_QUALIFIER_ATTR_VALUE THEN
463         l_QUALIFIERS_rec.qualifier_attr_value := p_attr_value;
464     ELSIF p_attr_id = QP_Qualifiers_Util.G_QUALIFIER_ATTR_VALUE_TO THEN
465         l_QUALIFIERS_rec.qualifier_attr_value_to := p_attr_value;
466     ELSIF p_attr_id = QP_Qualifiers_Util.G_QUALIFIER_CONTEXT THEN
467         l_QUALIFIERS_rec.qualifier_context := p_attr_value;
468     ELSIF p_attr_id = QP_Qualifiers_Util.G_QUALIFIER_DATATYPE THEN
469         l_QUALIFIERS_rec.qualifier_datatype := p_attr_value;
470     --ELSIF p_attr_id = QP_Qualifiers_Util.G_QUALIFIER_DATE_FORMAT THEN
471     --    l_QUALIFIERS_rec.qualifier_date_format := p_attr_value;
472     ELSIF p_attr_id = QP_Qualifiers_Util.G_QUALIFIER_GROUPING_NO THEN
473         l_QUALIFIERS_rec.qualifier_grouping_no := TO_NUMBER(p_attr_value);
474     ELSIF p_attr_id = QP_Qualifiers_Util.G_QUALIFIER THEN
475         l_QUALIFIERS_rec.qualifier_id := TO_NUMBER(p_attr_value);
476     --ELSIF p_attr_id = QP_Qualifiers_Util.G_QUALIFIER_NUMBER_FORMAT THEN
477     --    l_QUALIFIERS_rec.qualifier_number_format := p_attr_value;
478     ELSIF p_attr_id = QP_Qualifiers_Util.G_QUALIFIER_PRECEDENCE THEN
479         l_QUALIFIERS_rec.qualifier_precedence := TO_NUMBER(p_attr_value);
480     ELSIF p_attr_id = QP_Qualifiers_Util.G_QUALIFIER_RULE THEN
481         l_QUALIFIERS_rec.qualifier_rule_id := TO_NUMBER(p_attr_value);
482     ELSIF p_attr_id = QP_Qualifiers_Util.G_START_DATE_ACTIVE THEN
483         l_QUALIFIERS_rec.start_date_active := TO_DATE(p_attr_value,'DD/MM/YYYY');
484 -- Added for TCA
485     ELSIF p_attr_id = QP_Qualifiers_Util.G_QUALIFY_HIER_DESCENDENT_FLAG THEN
486         l_QUALIFIERS_rec.qualify_hier_descendent_flag := p_attr_value;
487     ELSIF p_attr_id = QP_Qualifiers_Util.G_ATTRIBUTE1
488     OR     p_attr_id = QP_Qualifiers_Util.G_ATTRIBUTE10
489     OR     p_attr_id = QP_Qualifiers_Util.G_ATTRIBUTE11
490     OR     p_attr_id = QP_Qualifiers_Util.G_ATTRIBUTE12
491     OR     p_attr_id = QP_Qualifiers_Util.G_ATTRIBUTE13
492     OR     p_attr_id = QP_Qualifiers_Util.G_ATTRIBUTE14
493     OR     p_attr_id = QP_Qualifiers_Util.G_ATTRIBUTE15
494     OR     p_attr_id = QP_Qualifiers_Util.G_ATTRIBUTE2
495     OR     p_attr_id = QP_Qualifiers_Util.G_ATTRIBUTE3
496     OR     p_attr_id = QP_Qualifiers_Util.G_ATTRIBUTE4
497     OR     p_attr_id = QP_Qualifiers_Util.G_ATTRIBUTE5
498     OR     p_attr_id = QP_Qualifiers_Util.G_ATTRIBUTE6
499     OR     p_attr_id = QP_Qualifiers_Util.G_ATTRIBUTE7
500     OR     p_attr_id = QP_Qualifiers_Util.G_ATTRIBUTE8
501     OR     p_attr_id = QP_Qualifiers_Util.G_ATTRIBUTE9
502     OR     p_attr_id = QP_Qualifiers_Util.G_CONTEXT
503     THEN
504 
505         l_QUALIFIERS_rec.attribute1    := p_attribute1;
506         l_QUALIFIERS_rec.attribute10   := p_attribute10;
507         l_QUALIFIERS_rec.attribute11   := p_attribute11;
508         l_QUALIFIERS_rec.attribute12   := p_attribute12;
509         l_QUALIFIERS_rec.attribute13   := p_attribute13;
510         l_QUALIFIERS_rec.attribute14   := p_attribute14;
511         l_QUALIFIERS_rec.attribute15   := p_attribute15;
512         l_QUALIFIERS_rec.attribute2    := p_attribute2;
513         l_QUALIFIERS_rec.attribute3    := p_attribute3;
514         l_QUALIFIERS_rec.attribute4    := p_attribute4;
515         l_QUALIFIERS_rec.attribute5    := p_attribute5;
516         l_QUALIFIERS_rec.attribute6    := p_attribute6;
517         l_QUALIFIERS_rec.attribute7    := p_attribute7;
518         l_QUALIFIERS_rec.attribute8    := p_attribute8;
519         l_QUALIFIERS_rec.attribute9    := p_attribute9;
520         l_QUALIFIERS_rec.context       := p_context;
521 
522     ELSE
523 
524         --  Unexpected error, unrecognized attribute
525 
526         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
527         THEN
528             oe_msg_pub.Add_Exc_Msg
529             (   G_PKG_NAME
530             ,   'Change_Attribute'
531             ,   'Unrecognized attribute'
532             );
533         END IF;
534 
535         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
536 
537     END IF;
538 
539     --  Set Operation.
540 
541     IF FND_API.To_Boolean(l_QUALIFIERS_rec.db_flag) THEN
542         l_QUALIFIERS_rec.operation := QP_GLOBALS.G_OPR_UPDATE;
543     ELSE
544         l_QUALIFIERS_rec.operation := QP_GLOBALS.G_OPR_CREATE;
545     END IF;
546 
547     --  Populate QUALIFIERS table
548 
549     l_QUALIFIERS_tbl(1) := l_QUALIFIERS_rec;
550     l_old_QUALIFIERS_tbl(1) := l_old_QUALIFIERS_rec;
551 
552     --  Call QP_Qualifier_Rules_PVT.Process_QUALIFIER_RULES
553 
554     QP_LIST_HEADERS_PVT.Process_PRICE_LIST
555     (   p_api_version_number          => 1.0
556     ,   p_init_msg_list               => FND_API.G_TRUE
557     ,   p_validation_level            => FND_API.G_VALID_LEVEL_NONE
558     ,   x_return_status               => l_return_status
559     ,   x_msg_count                   => x_msg_count
560     ,   x_msg_data                    => x_msg_data
561     ,   p_control_rec                 => l_control_rec
562     ,   p_QUALIFIERS_tbl              => l_QUALIFIERS_tbl
563     ,   p_old_QUALIFIERS_tbl          => l_old_QUALIFIERS_tbl
564     ,   x_PRICE_LIST_rec              => l_x_PRICE_LIST_rec
565     ,   x_PRICE_LIST_LINE_tbl         => l_x_PRICE_LIST_LINE_tbl
566     ,   x_QUALIFIERS_tbl              => l_x_QUALIFIERS_tbl
567     ,   x_PRICING_ATTR_tbl            => l_x_PRICING_ATTR_tbl
568     );
569 
570 /*
571     QP_Qualifier_Rules_PVT.Process_QUALIFIER_RULES
572     (   p_api_version_number          => 1.0
573     ,   p_init_msg_list               => FND_API.G_TRUE
574     ,   p_validation_level            => FND_API.G_VALID_LEVEL_NONE
575     ,   x_return_status               => l_return_status
576     ,   x_msg_count                   => x_msg_count
577     ,   x_msg_data                    => x_msg_data
578     ,   p_control_rec                 => l_control_rec
579     ,   p_QUALIFIERS_tbl              => l_QUALIFIERS_tbl
580     ,   p_old_QUALIFIERS_tbl          => l_old_QUALIFIERS_tbl
581     ,   x_QUALIFIER_RULES_rec         => l_x_QUALIFIER_RULES_rec
582     ,   x_QUALIFIERS_tbl              => l_x_QUALIFIERS_tbl
583     );
584 
585 */
586 
587     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
588         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
589     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
590         RAISE FND_API.G_EXC_ERROR;
591     END IF;
592 
593 
594     --  Unload out tbl
595 
596     l_x_QUALIFIERS_rec := l_x_QUALIFIERS_tbl(1);
597 
598     --  Init OUT parameters to missing.
599 
600     x_attribute1                   := FND_API.G_MISS_CHAR;
601     x_attribute10                  := FND_API.G_MISS_CHAR;
602     x_attribute11                  := FND_API.G_MISS_CHAR;
603     x_attribute12                  := FND_API.G_MISS_CHAR;
604     x_attribute13                  := FND_API.G_MISS_CHAR;
605     x_attribute14                  := FND_API.G_MISS_CHAR;
606     x_attribute15                  := FND_API.G_MISS_CHAR;
607     x_attribute2                   := FND_API.G_MISS_CHAR;
608     x_attribute3                   := FND_API.G_MISS_CHAR;
609     x_attribute4                   := FND_API.G_MISS_CHAR;
610     x_attribute5                   := FND_API.G_MISS_CHAR;
611     x_attribute6                   := FND_API.G_MISS_CHAR;
612     x_attribute7                   := FND_API.G_MISS_CHAR;
613     x_attribute8                   := FND_API.G_MISS_CHAR;
614     x_attribute9                   := FND_API.G_MISS_CHAR;
615     x_comparison_operator_code     := FND_API.G_MISS_CHAR;
616     x_context                      := FND_API.G_MISS_CHAR;
617     x_created_from_rule_id         := FND_API.G_MISS_NUM;
618     x_end_date_active              := FND_API.G_MISS_DATE;
619     x_excluder_flag                := FND_API.G_MISS_CHAR;
620     x_list_header_id               := FND_API.G_MISS_NUM;
621     x_list_line_id                 := FND_API.G_MISS_NUM;
622     x_qualifier_attribute          := FND_API.G_MISS_CHAR;
623     x_qualifier_attr_value         := FND_API.G_MISS_CHAR;
624     x_qualifier_attr_value_to      := FND_API.G_MISS_CHAR;
625     x_qualifier_context            := FND_API.G_MISS_CHAR;
626     x_qualifier_datatype           := FND_API.G_MISS_CHAR;
627     --x_qualifier_date_format        := FND_API.G_MISS_CHAR;
628     x_qualifier_grouping_no        := FND_API.G_MISS_NUM;
629     x_qualifier_id                 := FND_API.G_MISS_NUM;
630     --x_qualifier_number_format      := FND_API.G_MISS_CHAR;
631     x_qualifier_precedence         := FND_API.G_MISS_NUM;
632     x_qualifier_rule_id            := FND_API.G_MISS_NUM;
633     x_start_date_active            := FND_API.G_MISS_DATE;
634     --x_comparison_operator          := FND_API.G_MISS_CHAR;
635     x_created_from_rule            := FND_API.G_MISS_CHAR;
636     --x_excluder                     := FND_API.G_MISS_CHAR;
637     x_list_header                  := FND_API.G_MISS_CHAR;
638     x_list_line                    := FND_API.G_MISS_CHAR;
639     --x_qualifier                    := FND_API.G_MISS_CHAR;
640     x_qualifier_rule               := FND_API.G_MISS_CHAR;
641     x_qualify_hier_descendent_flag := FND_API.G_MISS_CHAR; -- Added for TCA
642 
643     --  Load display out parameters if any
644 
645     l_QUALIFIERS_val_rec := QP_Qualifiers_Util.Get_Values
646     (   p_QUALIFIERS_rec              => l_x_QUALIFIERS_rec
647     ,   p_old_QUALIFIERS_rec          => l_QUALIFIERS_rec
648     );
649 
650     --  Return changed attributes.
651 
652     IF NOT QP_GLOBALS.Equal(l_x_QUALIFIERS_rec.attribute1,
653                             l_QUALIFIERS_rec.attribute1)
654     THEN
655         x_attribute1 := l_x_QUALIFIERS_rec.attribute1;
656     END IF;
657 
658     IF NOT QP_GLOBALS.Equal(l_x_QUALIFIERS_rec.attribute10,
659                             l_QUALIFIERS_rec.attribute10)
660     THEN
661         x_attribute10 := l_x_QUALIFIERS_rec.attribute10;
662     END IF;
663 
664     IF NOT QP_GLOBALS.Equal(l_x_QUALIFIERS_rec.attribute11,
665                             l_QUALIFIERS_rec.attribute11)
666     THEN
667         x_attribute11 := l_x_QUALIFIERS_rec.attribute11;
668     END IF;
669 
670     IF NOT QP_GLOBALS.Equal(l_x_QUALIFIERS_rec.attribute12,
671                             l_QUALIFIERS_rec.attribute12)
672     THEN
673         x_attribute12 := l_x_QUALIFIERS_rec.attribute12;
674     END IF;
675 
676     IF NOT QP_GLOBALS.Equal(l_x_QUALIFIERS_rec.attribute13,
677                             l_QUALIFIERS_rec.attribute13)
678     THEN
679         x_attribute13 := l_x_QUALIFIERS_rec.attribute13;
680     END IF;
681 
682     IF NOT QP_GLOBALS.Equal(l_x_QUALIFIERS_rec.attribute14,
683                             l_QUALIFIERS_rec.attribute14)
684     THEN
685         x_attribute14 := l_x_QUALIFIERS_rec.attribute14;
686     END IF;
687 
688     IF NOT QP_GLOBALS.Equal(l_x_QUALIFIERS_rec.attribute15,
689                             l_QUALIFIERS_rec.attribute15)
690     THEN
691         x_attribute15 := l_x_QUALIFIERS_rec.attribute15;
692     END IF;
693 
694     IF NOT QP_GLOBALS.Equal(l_x_QUALIFIERS_rec.attribute2,
695                             l_QUALIFIERS_rec.attribute2)
696     THEN
697         x_attribute2 := l_x_QUALIFIERS_rec.attribute2;
698     END IF;
699 
700     IF NOT QP_GLOBALS.Equal(l_x_QUALIFIERS_rec.attribute3,
701                             l_QUALIFIERS_rec.attribute3)
702     THEN
703         x_attribute3 := l_x_QUALIFIERS_rec.attribute3;
704     END IF;
705 
706     IF NOT QP_GLOBALS.Equal(l_x_QUALIFIERS_rec.attribute4,
707                             l_QUALIFIERS_rec.attribute4)
708     THEN
709         x_attribute4 := l_x_QUALIFIERS_rec.attribute4;
710     END IF;
711 
712     IF NOT QP_GLOBALS.Equal(l_x_QUALIFIERS_rec.attribute5,
713                             l_QUALIFIERS_rec.attribute5)
714     THEN
715         x_attribute5 := l_x_QUALIFIERS_rec.attribute5;
716     END IF;
717 
718     IF NOT QP_GLOBALS.Equal(l_x_QUALIFIERS_rec.attribute6,
719                             l_QUALIFIERS_rec.attribute6)
720     THEN
721         x_attribute6 := l_x_QUALIFIERS_rec.attribute6;
722     END IF;
723 
724     IF NOT QP_GLOBALS.Equal(l_x_QUALIFIERS_rec.attribute7,
725                             l_QUALIFIERS_rec.attribute7)
726     THEN
727         x_attribute7 := l_x_QUALIFIERS_rec.attribute7;
728     END IF;
729 
730     IF NOT QP_GLOBALS.Equal(l_x_QUALIFIERS_rec.attribute8,
731                             l_QUALIFIERS_rec.attribute8)
732     THEN
733         x_attribute8 := l_x_QUALIFIERS_rec.attribute8;
734     END IF;
735 
736     IF NOT QP_GLOBALS.Equal(l_x_QUALIFIERS_rec.attribute9,
737                             l_QUALIFIERS_rec.attribute9)
738     THEN
739         x_attribute9 := l_x_QUALIFIERS_rec.attribute9;
740     END IF;
741 
742     IF NOT QP_GLOBALS.Equal(l_x_QUALIFIERS_rec.comparison_operator_code,
743                             l_QUALIFIERS_rec.comparison_operator_code)
744     THEN
745         x_comparison_operator_code := l_x_QUALIFIERS_rec.comparison_operator_code;
746      -- x_comparison_operator := l_QUALIFIERS_val_rec.comparison_operator;
747     END IF;
748 
749     IF NOT QP_GLOBALS.Equal(l_x_QUALIFIERS_rec.context,
750                             l_QUALIFIERS_rec.context)
751     THEN
752         x_context := l_x_QUALIFIERS_rec.context;
753     END IF;
754 
755     IF NOT QP_GLOBALS.Equal(l_x_QUALIFIERS_rec.created_from_rule_id,
756                             l_QUALIFIERS_rec.created_from_rule_id)
757     THEN
758         x_created_from_rule_id := l_x_QUALIFIERS_rec.created_from_rule_id;
759         x_created_from_rule := l_QUALIFIERS_val_rec.created_from_rule;
760     END IF;
761 
762     IF NOT QP_GLOBALS.Equal(l_x_QUALIFIERS_rec.end_date_active,
763                             l_QUALIFIERS_rec.end_date_active)
764     THEN
765         x_end_date_active := l_x_QUALIFIERS_rec.end_date_active;
766     END IF;
767 
768     IF NOT QP_GLOBALS.Equal(l_x_QUALIFIERS_rec.excluder_flag,
769                             l_QUALIFIERS_rec.excluder_flag)
770     THEN
771         x_excluder_flag := l_x_QUALIFIERS_rec.excluder_flag;
772         --x_excluder := l_QUALIFIERS_val_rec.excluder;
773     END IF;
774 
775     IF NOT QP_GLOBALS.Equal(l_x_QUALIFIERS_rec.list_header_id,
776                             l_QUALIFIERS_rec.list_header_id)
777     THEN
778         x_list_header_id := l_x_QUALIFIERS_rec.list_header_id;
779         x_list_header := l_QUALIFIERS_val_rec.list_header;
780     END IF;
781 
782     IF NOT QP_GLOBALS.Equal(l_x_QUALIFIERS_rec.list_line_id,
783                             l_QUALIFIERS_rec.list_line_id)
784     THEN
785         x_list_line_id := l_x_QUALIFIERS_rec.list_line_id;
786         x_list_line := l_QUALIFIERS_val_rec.list_line;
787     END IF;
788 
789     IF NOT QP_GLOBALS.Equal(l_x_QUALIFIERS_rec.qualifier_attribute,
790                             l_QUALIFIERS_rec.qualifier_attribute)
791     THEN
792         x_qualifier_attribute := l_x_QUALIFIERS_rec.qualifier_attribute;
793     END IF;
794 
795     IF NOT QP_GLOBALS.Equal(l_x_QUALIFIERS_rec.qualifier_attr_value,
796                             l_QUALIFIERS_rec.qualifier_attr_value)
797     THEN
798         x_qualifier_attr_value := l_x_QUALIFIERS_rec.qualifier_attr_value;
799     END IF;
800     IF NOT QP_GLOBALS.Equal(l_x_QUALIFIERS_rec.qualifier_attr_value_to,
801                             l_QUALIFIERS_rec.qualifier_attr_value_to)
802     THEN
803        x_qualifier_attr_value_to := l_x_QUALIFIERS_rec.qualifier_attr_value_to;
804     END IF;
805 
806     IF NOT QP_GLOBALS.Equal(l_x_QUALIFIERS_rec.qualifier_context,
807                             l_QUALIFIERS_rec.qualifier_context)
808     THEN
809         x_qualifier_context := l_x_QUALIFIERS_rec.qualifier_context;
810     END IF;
811 
812     IF NOT QP_GLOBALS.Equal(l_x_QUALIFIERS_rec.qualifier_datatype,
813                             l_QUALIFIERS_rec.qualifier_datatype)
814     THEN
815         x_qualifier_datatype := l_x_QUALIFIERS_rec.qualifier_datatype;
816     END IF;
817 
818     /*IF NOT QP_GLOBALS.Equal(l_x_QUALIFIERS_rec.qualifier_date_format,
819                             l_QUALIFIERS_rec.qualifier_date_format)
820     THEN
821         x_qualifier_date_format := l_x_QUALIFIERS_rec.qualifier_date_format;
822     END IF;*/
823 
824     IF NOT QP_GLOBALS.Equal(l_x_QUALIFIERS_rec.qualifier_grouping_no,
825                             l_QUALIFIERS_rec.qualifier_grouping_no)
826     THEN
827         x_qualifier_grouping_no := l_x_QUALIFIERS_rec.qualifier_grouping_no;
828     END IF;
829 
830     IF NOT QP_GLOBALS.Equal(l_x_QUALIFIERS_rec.qualifier_id,
831                             l_QUALIFIERS_rec.qualifier_id)
832     THEN
833         x_qualifier_id := l_x_QUALIFIERS_rec.qualifier_id;
834         --x_qualifier := l_QUALIFIERS_val_rec.qualifier;
835     END IF;
836 
837     /*IF NOT QP_GLOBALS.Equal(l_x_QUALIFIERS_rec.qualifier_number_format,
838                             l_QUALIFIERS_rec.qualifier_number_format)
839     THEN
840         x_qualifier_number_format := l_x_QUALIFIERS_rec.qualifier_number_format;
841     END IF;*/
842 
843     IF NOT QP_GLOBALS.Equal(l_x_QUALIFIERS_rec.qualifier_precedence,
844                             l_QUALIFIERS_rec.qualifier_precedence)
845     THEN
846         x_qualifier_precedence := l_x_QUALIFIERS_rec.qualifier_precedence;
847     END IF;
848 
849     IF NOT QP_GLOBALS.Equal(l_x_QUALIFIERS_rec.qualifier_rule_id,
850                             l_QUALIFIERS_rec.qualifier_rule_id)
851     THEN
852         x_qualifier_rule_id := l_x_QUALIFIERS_rec.qualifier_rule_id;
853         x_qualifier_rule := l_QUALIFIERS_val_rec.qualifier_rule;
854     END IF;
855 
856     IF NOT QP_GLOBALS.Equal(l_x_QUALIFIERS_rec.start_date_active,
857                             l_QUALIFIERS_rec.start_date_active)
858     THEN
859         x_start_date_active := l_x_QUALIFIERS_rec.start_date_active;
860     END IF;
861    -- Added for TCA
862     IF NOT QP_GLOBALS.Equal(l_x_QUALIFIERS_rec.qualify_hier_descendent_flag,
863                             l_QUALIFIERS_rec.qualify_hier_descendent_flag)
864     THEN
865         x_qualify_hier_descendent_flag := l_x_QUALIFIERS_rec.qualify_hier_descendent_flag;
866     END IF;
867 
868 
869     --  Write to cache.
870 
871     Write_QUALIFIERS
872     (   p_QUALIFIERS_rec              => l_x_QUALIFIERS_rec
873     );
874 
875     --  Set return status.
876 
877     x_return_status := FND_API.G_RET_STS_SUCCESS;
878 
879     --  Get message count and data
880 
881     oe_msg_pub.Count_And_Get
882     (   p_count                       => x_msg_count
883     ,   p_data                        => x_msg_data
884     );
885 
886 
887 EXCEPTION
888 
889     WHEN FND_API.G_EXC_ERROR THEN
890 
891         x_return_status := FND_API.G_RET_STS_ERROR;
892 
893         --  Get message count and data
894 
895         oe_msg_pub.Count_And_Get
896         (   p_count                       => x_msg_count
897         ,   p_data                        => x_msg_data
898         );
899 
900     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
901 
902         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
903 
904         --  Get message count and data
905 
906         oe_msg_pub.Count_And_Get
907         (   p_count                       => x_msg_count
908         ,   p_data                        => x_msg_data
909         );
910 
911     WHEN OTHERS THEN
912 
913         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
914 
915         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
916         THEN
917             oe_msg_pub.Add_Exc_Msg
918             (   G_PKG_NAME
919             ,   'Change_Attribute'
920             );
921         END IF;
922 
923         --  Get message count and data
924 
925         oe_msg_pub.Count_And_Get
926         (   p_count                       => x_msg_count
927         ,   p_data                        => x_msg_data
928         );
929 
930 END Change_Attribute;
931 
932 --  Procedure       Validate_And_Write
933 --
934 
935 PROCEDURE Validate_And_Write
936 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
937 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
938 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
939 ,   p_qualifier_id                  IN  NUMBER
940 ,   x_creation_date                 OUT NOCOPY /* file.sql.39 change */ DATE
941 ,   x_created_by                    OUT NOCOPY /* file.sql.39 change */ NUMBER
942 ,   x_last_update_date              OUT NOCOPY /* file.sql.39 change */ DATE
943 ,   x_last_updated_by               OUT NOCOPY /* file.sql.39 change */ NUMBER
944 ,   x_last_update_login             OUT NOCOPY /* file.sql.39 change */ NUMBER
945 ,   x_program_application_id        OUT NOCOPY /* file.sql.39 change */ NUMBER
946 ,   x_program_id                    OUT NOCOPY /* file.sql.39 change */ NUMBER
947 ,   x_program_update_date           OUT NOCOPY /* file.sql.39 change */ DATE
948 ,   x_request_id                    OUT NOCOPY /* file.sql.39 change */ NUMBER
949 )
950 IS
951 l_QUALIFIERS_rec              QP_Qualifier_Rules_PUB.Qualifiers_Rec_Type;
952 l_old_QUALIFIERS_rec          QP_Qualifier_Rules_PUB.Qualifiers_Rec_Type;
953 l_QUALIFIERS_tbl              QP_Qualifier_Rules_PUB.Qualifiers_Tbl_Type;
954 l_old_QUALIFIERS_tbl          QP_Qualifier_Rules_PUB.Qualifiers_Tbl_Type;
955 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
956 l_return_status               VARCHAR2(1);
957 l_x_QUALIFIER_RULES_rec       QP_Qualifier_Rules_PUB.Qualifier_Rules_Rec_Type;
958 l_x_QUALIFIERS_rec            QP_Qualifier_Rules_PUB.Qualifiers_Rec_Type;
959 l_x_QUALIFIERS_tbl            QP_Qualifier_Rules_PUB.Qualifiers_Tbl_Type;
960 l_x_PRICE_LIST_rec            QP_Price_List_PUB.Price_List_Rec_Type;
961 l_x_PRICE_LIST_LINE_rec       QP_Price_List_PUB.Price_List_Line_Rec_Type;
962 l_x_PRICE_LIST_LINE_tbl       QP_Price_List_PUB.Price_List_Line_Tbl_Type;
963 l_x_PRICING_ATTR_rec          QP_Price_List_PUB.Pricing_Attr_Rec_Type;
964 l_x_PRICING_ATTR_tbl          QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
965 BEGIN
966 
967    oe_debug_pub.add('in v and write 1');
968 
969     --  Set control flags.
970 
971     l_control_rec.controlled_operation := TRUE;
972     l_control_rec.validate_entity      := TRUE;
973     l_control_rec.write_to_DB          := TRUE;
974 
975     l_control_rec.default_attributes   := FALSE;
976     l_control_rec.change_attributes    := FALSE;
977     l_control_rec.process              := FALSE;
978 
979     --  Instruct API to retain its caches
980 
981     l_control_rec.clear_api_cache      := FALSE;
982     l_control_rec.clear_api_requests   := FALSE;
983 
984     --  Read QUALIFIERS from cache
985 
986    oe_debug_pub.add('in v and write 2');
987     l_old_QUALIFIERS_rec := Get_QUALIFIERS
988     (   p_db_record                   => TRUE
989     ,   p_qualifier_id                => p_qualifier_id
990     );
991    oe_debug_pub.add('in v and write 3');
992 
993     l_QUALIFIERS_rec := Get_QUALIFIERS
994     (   p_db_record                   => FALSE
995     ,   p_qualifier_id                => p_qualifier_id
996     );
997    oe_debug_pub.add('in v and write 4');
998 
999     --  Set Operation.
1000 
1001     IF FND_API.To_Boolean(l_QUALIFIERS_rec.db_flag) THEN
1002         l_QUALIFIERS_rec.operation := QP_GLOBALS.G_OPR_UPDATE;
1003     ELSE
1004         l_QUALIFIERS_rec.operation := QP_GLOBALS.G_OPR_CREATE;
1005     END IF;
1006 
1007     --  Populate QUALIFIERS table
1008 
1009     l_QUALIFIERS_tbl(1) := l_QUALIFIERS_rec;
1010     l_old_QUALIFIERS_tbl(1) := l_old_QUALIFIERS_rec;
1011 
1012     --  Call QP_Qualifier_Rules_PVT.Process_QUALIFIER_RULES
1013    oe_debug_pub.add('in v and write 5');
1014 
1015     QP_LIST_HEADERS_PVT.Process_PRICE_LIST
1016     (   p_api_version_number          => 1.0
1017     ,   p_init_msg_list               => FND_API.G_TRUE
1018     ,   x_return_status               => l_return_status
1019     ,   x_msg_count                   => x_msg_count
1020     ,   x_msg_data                    => x_msg_data
1021     ,   p_control_rec                 => l_control_rec
1022     ,   p_QUALIFIERS_tbl              => l_QUALIFIERS_tbl
1023     ,   p_old_QUALIFIERS_tbl          => l_old_QUALIFIERS_tbl
1024     ,   x_PRICE_LIST_rec              => l_x_PRICE_LIST_rec
1025     ,   x_PRICE_LIST_LINE_tbl         => l_x_PRICE_LIST_LINE_tbl
1026     ,   x_QUALIFIERS_tbl              => l_x_QUALIFIERS_tbl
1027     ,   x_PRICING_ATTR_tbl            => l_x_PRICING_ATTR_tbl
1028     );
1029    oe_debug_pub.add('in v and write 6');
1030 
1031     /*
1032 
1033     QP_Qualifier_Rules_PVT.Process_QUALIFIER_RULES
1034     (   p_api_version_number          => 1.0
1035     ,   p_init_msg_list               => FND_API.G_TRUE
1036     ,   x_return_status               => l_return_status
1037     ,   x_msg_count                   => x_msg_count
1038     ,   x_msg_data                    => x_msg_data
1039     ,   p_control_rec                 => l_control_rec
1040     ,   p_QUALIFIERS_tbl              => l_QUALIFIERS_tbl
1041     ,   p_old_QUALIFIERS_tbl          => l_old_QUALIFIERS_tbl
1042     ,   x_QUALIFIER_RULES_rec         => l_x_QUALIFIER_RULES_rec
1043     ,   x_QUALIFIERS_tbl              => l_x_QUALIFIERS_tbl
1044     );
1045 
1046     */
1047 
1048     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1049    oe_debug_pub.add('in v and write 7');
1050         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1051     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1052    oe_debug_pub.add('in v and write 8');
1053         RAISE FND_API.G_EXC_ERROR;
1054     END IF;
1055 
1056 
1057     --  Load OUT parameters.
1058 
1059     l_x_QUALIFIERS_rec := l_x_QUALIFIERS_tbl(1);
1060 
1061     x_creation_date                := l_x_QUALIFIERS_rec.creation_date;
1062     x_created_by                   := l_x_QUALIFIERS_rec.created_by;
1063     x_last_update_date             := l_x_QUALIFIERS_rec.last_update_date;
1064     x_last_updated_by              := l_x_QUALIFIERS_rec.last_updated_by;
1065     x_last_update_login            := l_x_QUALIFIERS_rec.last_update_login;
1066     x_program_application_id       := l_x_QUALIFIERS_rec.program_application_id;
1067     x_program_id                   := l_x_QUALIFIERS_rec.program_id;
1068     x_program_update_date          := l_x_QUALIFIERS_rec.program_update_date;
1069     x_request_id                   := l_x_QUALIFIERS_rec.request_id;
1070 
1071     --  Clear QUALIFIERS record cache
1072 
1073    oe_debug_pub.add('in v and write 9');
1074     Clear_QUALIFIERS;
1075 
1076     --  Keep track of performed operations.
1077 
1078     l_old_QUALIFIERS_rec.operation := l_QUALIFIERS_rec.operation;
1079 
1080 
1081     --  Set return status.
1082 
1083     x_return_status := FND_API.G_RET_STS_SUCCESS;
1084 
1085     --  Get message count and data
1086    oe_debug_pub.add('in v and write 10; msg is : ' || x_msg_data);
1087 
1088     oe_msg_pub.Count_And_Get
1089     (   p_count                       => x_msg_count
1090     ,   p_data                        => x_msg_data
1091     );
1092    oe_debug_pub.add('in v and write 11; msg is : ' || x_msg_data);
1093 
1094 
1095 EXCEPTION
1096 
1097     WHEN FND_API.G_EXC_ERROR THEN
1098 
1099         x_return_status := FND_API.G_RET_STS_ERROR;
1100 
1101         --  Get message count and data
1102 
1103         oe_msg_pub.Count_And_Get
1104         (   p_count                       => x_msg_count
1105         ,   p_data                        => x_msg_data
1106         );
1107 
1108     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1109 
1110         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1111 
1112         --  Get message count and data
1113 
1114         oe_msg_pub.Count_And_Get
1115         (   p_count                       => x_msg_count
1116         ,   p_data                        => x_msg_data
1117         );
1118 
1119     WHEN OTHERS THEN
1120 
1121         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1122 
1123         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
1124         THEN
1125             oe_msg_pub.Add_Exc_Msg
1126             (   G_PKG_NAME
1127             ,   'Validate_And_Write'
1128             );
1129         END IF;
1130 
1131         --  Get message count and data
1132 
1133         oe_msg_pub.Count_And_Get
1134         (   p_count                       => x_msg_count
1135         ,   p_data                        => x_msg_data
1136         );
1137 
1138 END Validate_And_Write;
1139 
1140 --  Procedure       Delete_Row
1141 --
1142 
1143 PROCEDURE Delete_Row
1144 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1145 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
1146 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1147 ,   p_qualifier_id                  IN  NUMBER
1148 )
1149 IS
1150 l_QUALIFIERS_rec              QP_Qualifier_Rules_PUB.Qualifiers_Rec_Type;
1151 l_QUALIFIERS_tbl              QP_Qualifier_Rules_PUB.Qualifiers_Tbl_Type;
1152 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
1153 l_return_status               VARCHAR2(1);
1154 l_x_QUALIFIER_RULES_rec       QP_Qualifier_Rules_PUB.Qualifier_Rules_Rec_Type;
1155 l_x_QUALIFIERS_rec            QP_Qualifier_Rules_PUB.Qualifiers_Rec_Type;
1156 l_x_QUALIFIERS_tbl            QP_Qualifier_Rules_PUB.Qualifiers_Tbl_Type;
1157 l_x_PRICE_LIST_rec            QP_Price_List_PUB.Price_List_Rec_Type;
1158 l_x_PRICE_LIST_LINE_rec       QP_Price_List_PUB.Price_List_Line_Rec_Type;
1159 l_x_PRICE_LIST_LINE_tbl       QP_Price_List_PUB.Price_List_Line_Tbl_Type;
1160 l_x_PRICING_ATTR_rec          QP_Price_List_PUB.Pricing_Attr_Rec_Type;
1161 l_x_PRICING_ATTR_tbl          QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
1162 BEGIN
1163 
1164     --  Set control flags.
1165 
1166     l_control_rec.controlled_operation := TRUE;
1167     l_control_rec.validate_entity      := TRUE;
1168     l_control_rec.write_to_DB          := TRUE;
1169 
1170     l_control_rec.default_attributes   := FALSE;
1171     l_control_rec.change_attributes    := FALSE;
1172     l_control_rec.process              := FALSE;
1173 
1174     --  Instruct API to retain its caches
1175 
1176     l_control_rec.clear_api_cache      := FALSE;
1177     l_control_rec.clear_api_requests   := FALSE;
1178 
1179     --  Read DB record from cache
1180 
1181     l_QUALIFIERS_rec := Get_QUALIFIERS
1182     (   p_db_record                   => TRUE
1183     ,   p_qualifier_id                => p_qualifier_id
1184     );
1185 
1186     --  Set Operation.
1187 
1188     l_QUALIFIERS_rec.operation := QP_GLOBALS.G_OPR_DELETE;
1189 
1190     --  Populate QUALIFIERS table
1191 
1192     l_QUALIFIERS_tbl(1) := l_QUALIFIERS_rec;
1193 
1194     --  Call QP_Qualifier_Rules_PVT.Process_QUALIFIER_RULES
1195 
1196     QP_LIST_HEADERS_PVT.Process_PRICE_LIST
1197     (   p_api_version_number          => 1.0
1198     ,   p_init_msg_list               => FND_API.G_TRUE
1199     ,   x_return_status               => l_return_status
1200     ,   x_msg_count                   => x_msg_count
1201     ,   x_msg_data                    => x_msg_data
1202     ,   p_control_rec                 => l_control_rec
1203     ,   p_QUALIFIERS_tbl              => l_QUALIFIERS_tbl
1204     ,   x_PRICE_LIST_rec              => l_x_PRICE_LIST_rec
1205     ,   x_PRICE_LIST_LINE_tbl         => l_x_PRICE_LIST_LINE_tbl
1206     ,   x_QUALIFIERS_tbl              => l_x_QUALIFIERS_tbl
1207     ,   x_PRICING_ATTR_tbl            => l_x_PRICING_ATTR_tbl
1208     );
1209 
1210    /*
1211 
1212     QP_Qualifier_Rules_PVT.Process_QUALIFIER_RULES
1213     (   p_api_version_number          => 1.0
1214     ,   p_init_msg_list               => FND_API.G_TRUE
1215     ,   x_return_status               => l_return_status
1216     ,   x_msg_count                   => x_msg_count
1217     ,   x_msg_data                    => x_msg_data
1218     ,   p_control_rec                 => l_control_rec
1219     ,   p_QUALIFIERS_tbl              => l_QUALIFIERS_tbl
1220     ,   x_QUALIFIER_RULES_rec         => l_x_QUALIFIER_RULES_rec
1221     ,   x_QUALIFIERS_tbl              => l_x_QUALIFIERS_tbl
1222     );
1223 
1224     */
1225 
1226     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1227         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1228     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1229         RAISE FND_API.G_EXC_ERROR;
1230     END IF;
1231 
1232 
1233     --  Clear QUALIFIERS record cache
1234 
1235     Clear_QUALIFIERS;
1236 
1237     --  Set return status.
1238 
1239     x_return_status := FND_API.G_RET_STS_SUCCESS;
1240 
1241     --  Get message count and data
1242 
1243     oe_msg_pub.Count_And_Get
1244     (   p_count                       => x_msg_count
1245     ,   p_data                        => x_msg_data
1246     );
1247 
1248 
1249 EXCEPTION
1250 
1251     WHEN FND_API.G_EXC_ERROR THEN
1252 
1253         x_return_status := FND_API.G_RET_STS_ERROR;
1254 
1255         --  Get message count and data
1256 
1257         oe_msg_pub.Count_And_Get
1258         (   p_count                       => x_msg_count
1259         ,   p_data                        => x_msg_data
1260         );
1261 
1262     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1263 
1264         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
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     WHEN OTHERS THEN
1274 
1275         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1276 
1277         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
1278         THEN
1279             oe_msg_pub.Add_Exc_Msg
1280             (   G_PKG_NAME
1281             ,   'Delete_Row'
1282             );
1283         END IF;
1284 
1285         --  Get message count and data
1286 
1287         oe_msg_pub.Count_And_Get
1288         (   p_count                       => x_msg_count
1289         ,   p_data                        => x_msg_data
1290         );
1291 
1292 END Delete_Row;
1293 
1294 --  Procedure       Process_Entity
1295 --
1296 
1297 PROCEDURE Process_Entity
1298 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1299 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
1300 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1301 )
1302 IS
1303 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
1304 l_return_status               VARCHAR2(1);
1305 l_x_QUALIFIER_RULES_rec       QP_Qualifier_Rules_PUB.Qualifier_Rules_Rec_Type;
1306 l_x_QUALIFIERS_rec            QP_Qualifier_Rules_PUB.Qualifiers_Rec_Type;
1307 l_x_QUALIFIERS_tbl            QP_Qualifier_Rules_PUB.Qualifiers_Tbl_Type;
1308 l_x_PRICE_LIST_rec            QP_Price_List_PUB.Price_List_Rec_Type;
1309 l_x_PRICE_LIST_LINE_rec       QP_Price_List_PUB.Price_List_Line_Rec_Type;
1310 l_x_PRICE_LIST_LINE_tbl       QP_Price_List_PUB.Price_List_Line_Tbl_Type;
1311 l_x_PRICING_ATTR_rec          QP_Price_List_PUB.Pricing_Attr_Rec_Type;
1312 l_x_PRICING_ATTR_tbl          QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
1313 BEGIN
1314 
1315     --  Set control flags.
1316 
1317     l_control_rec.controlled_operation := TRUE;
1318     l_control_rec.process              := TRUE;
1319     l_control_rec.process_entity       := QP_GLOBALS.G_ENTITY_QUALIFIERS;
1320 
1321     l_control_rec.default_attributes   := FALSE;
1322     l_control_rec.change_attributes    := FALSE;
1323     l_control_rec.validate_entity      := FALSE;
1324     l_control_rec.write_to_DB          := FALSE;
1325 
1326     --  Instruct API to clear its request table
1327 
1328     l_control_rec.clear_api_cache      := FALSE;
1329     l_control_rec.clear_api_requests   := FALSE;
1330 
1331     --  Call QP_Qualifier_Rules_PVT.Process_QUALIFIER_RULES
1332 
1333     QP_LIST_HEADERS_PVT.Process_PRICE_LIST
1334     (   p_api_version_number          => 1.0
1335     ,   p_init_msg_list               => FND_API.G_TRUE
1336     ,   x_return_status               => l_return_status
1337     ,   x_msg_count                   => x_msg_count
1338     ,   x_msg_data                    => x_msg_data
1339     ,   p_control_rec                 => l_control_rec
1340     ,   x_PRICE_LIST_rec              => l_x_PRICE_LIST_rec
1341     ,   x_PRICE_LIST_LINE_tbl         => l_x_PRICE_LIST_LINE_tbl
1342     ,   x_QUALIFIERS_tbl              => l_x_QUALIFIERS_tbl
1343     ,   x_PRICING_ATTR_tbl            => l_x_PRICING_ATTR_tbl
1344     );
1345 
1346 /*
1347 
1348     QP_Qualifier_Rules_PVT.Process_QUALIFIER_RULES
1349     (   p_api_version_number          => 1.0
1350     ,   p_init_msg_list               => FND_API.G_TRUE
1351     ,   x_return_status               => l_return_status
1352     ,   x_msg_count                   => x_msg_count
1353     ,   x_msg_data                    => x_msg_data
1354     ,   p_control_rec                 => l_control_rec
1355     ,   x_QUALIFIER_RULES_rec         => l_x_QUALIFIER_RULES_rec
1356     ,   x_QUALIFIERS_tbl              => l_x_QUALIFIERS_tbl
1357     );
1358 
1359 */
1360 
1361     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1362         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1363     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1364         RAISE FND_API.G_EXC_ERROR;
1365     END IF;
1366 
1367 
1368     --  Set return status.
1369 
1370     x_return_status := FND_API.G_RET_STS_SUCCESS;
1371 
1372     --  Get message count and data
1373 
1374     oe_msg_pub.Count_And_Get
1375     (   p_count                       => x_msg_count
1376     ,   p_data                        => x_msg_data
1377     );
1378 
1379 
1380 EXCEPTION
1381 
1382     WHEN FND_API.G_EXC_ERROR THEN
1383 
1384         x_return_status := FND_API.G_RET_STS_ERROR;
1385 
1386         --  Get message count and data
1387 
1388         oe_msg_pub.Count_And_Get
1389         (   p_count                       => x_msg_count
1390         ,   p_data                        => x_msg_data
1391         );
1392 
1393     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1394 
1395         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1396 
1397         --  Get message count and data
1398 
1399         oe_msg_pub.Count_And_Get
1400         (   p_count                       => x_msg_count
1401         ,   p_data                        => x_msg_data
1402         );
1403 
1404     WHEN OTHERS THEN
1405 
1406         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1407 
1408         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
1409         THEN
1410             oe_msg_pub.Add_Exc_Msg
1411             (   G_PKG_NAME
1412             ,   'Process_Entity'
1413             );
1414         END IF;
1415 
1416         --  Get message count and data
1417 
1418         oe_msg_pub.Count_And_Get
1419         (   p_count                       => x_msg_count
1420         ,   p_data                        => x_msg_data
1421         );
1422 
1423 END Process_Entity;
1424 
1425 --  Procedure       lock_Row
1426 --
1427 
1428 PROCEDURE Lock_Row
1429 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1430 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
1431 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1432 ,   p_attribute1                    IN  VARCHAR2
1433 ,   p_attribute10                   IN  VARCHAR2
1434 ,   p_attribute11                   IN  VARCHAR2
1435 ,   p_attribute12                   IN  VARCHAR2
1436 ,   p_attribute13                   IN  VARCHAR2
1437 ,   p_attribute14                   IN  VARCHAR2
1438 ,   p_attribute15                   IN  VARCHAR2
1439 ,   p_attribute2                    IN  VARCHAR2
1440 ,   p_attribute3                    IN  VARCHAR2
1441 ,   p_attribute4                    IN  VARCHAR2
1442 ,   p_attribute5                    IN  VARCHAR2
1443 ,   p_attribute6                    IN  VARCHAR2
1444 ,   p_attribute7                    IN  VARCHAR2
1445 ,   p_attribute8                    IN  VARCHAR2
1446 ,   p_attribute9                    IN  VARCHAR2
1447 ,   p_comparison_operator_code      IN  VARCHAR2
1448 ,   p_context                       IN  VARCHAR2
1449 ,   p_created_by                    IN  NUMBER
1450 ,   p_created_from_rule_id          IN  NUMBER
1451 ,   p_creation_date                 IN  DATE
1452 ,   p_end_date_active               IN  DATE
1453 ,   p_excluder_flag                 IN  VARCHAR2
1454 ,   p_last_updated_by               IN  NUMBER
1455 ,   p_last_update_date              IN  DATE
1456 ,   p_last_update_login             IN  NUMBER
1457 ,   p_list_header_id                IN  NUMBER
1458 ,   p_list_line_id                  IN  NUMBER
1459 ,   p_program_application_id        IN  NUMBER
1460 ,   p_program_id                    IN  NUMBER
1461 ,   p_program_update_date           IN  DATE
1462 ,   p_qualifier_attribute           IN  VARCHAR2
1463 ,   p_qualifier_attr_value          IN  VARCHAR2
1464 ,   p_qualifier_attr_value_to       IN  VARCHAR2
1465 ,   p_qualifier_context             IN  VARCHAR2
1466 ,   p_qualifier_datatype            IN  VARCHAR2
1467 --,   p_qualifier_date_format         IN  VARCHAR2
1468 ,   p_qualifier_grouping_no         IN  NUMBER
1469 ,   p_qualifier_id                  IN  NUMBER
1470 --,   p_qualifier_number_format       IN  VARCHAR2
1471 ,   p_qualifier_precedence          IN  NUMBER
1472 ,   p_qualifier_rule_id             IN  NUMBER
1473 ,   p_request_id                    IN  NUMBER
1474 ,   p_start_date_active             IN  DATE
1475 ,   p_qualify_hier_descendent_flag IN VARCHAR2   -- Added for TCA
1476 )
1477 IS
1478 l_return_status               VARCHAR2(1);
1479 l_QUALIFIERS_rec              QP_Qualifier_Rules_PUB.Qualifiers_Rec_Type;
1480 l_QUALIFIERS_tbl              QP_Qualifier_Rules_PUB.Qualifiers_Tbl_Type;
1481 l_x_QUALIFIER_RULES_rec       QP_Qualifier_Rules_PUB.Qualifier_Rules_Rec_Type;
1482 l_x_QUALIFIERS_rec            QP_Qualifier_Rules_PUB.Qualifiers_Rec_Type;
1483 l_x_QUALIFIERS_tbl            QP_Qualifier_Rules_PUB.Qualifiers_Tbl_Type;
1484 l_x_PRICE_LIST_rec            QP_Price_List_PUB.Price_List_Rec_Type;
1485 l_x_PRICE_LIST_LINE_rec       QP_Price_List_PUB.Price_List_Line_Rec_Type;
1486 l_x_PRICE_LIST_LINE_tbl       QP_Price_List_PUB.Price_List_Line_Tbl_Type;
1487 l_x_PRICING_ATTR_rec          QP_Price_List_PUB.Pricing_Attr_Rec_Type;
1488 l_x_PRICING_ATTR_tbl          QP_Price_List_PUB.Pricing_Attr_Tbl_Type;
1489 BEGIN
1490 
1491     --  Load QUALIFIERS record
1492 
1493     l_QUALIFIERS_rec.attribute1    := p_attribute1;
1494     l_QUALIFIERS_rec.attribute10   := p_attribute10;
1495     l_QUALIFIERS_rec.attribute11   := p_attribute11;
1496     l_QUALIFIERS_rec.attribute12   := p_attribute12;
1497     l_QUALIFIERS_rec.attribute13   := p_attribute13;
1498     l_QUALIFIERS_rec.attribute14   := p_attribute14;
1499     l_QUALIFIERS_rec.attribute15   := p_attribute15;
1500     l_QUALIFIERS_rec.attribute2    := p_attribute2;
1501     l_QUALIFIERS_rec.attribute3    := p_attribute3;
1502     l_QUALIFIERS_rec.attribute4    := p_attribute4;
1503     l_QUALIFIERS_rec.attribute5    := p_attribute5;
1504     l_QUALIFIERS_rec.attribute6    := p_attribute6;
1505     l_QUALIFIERS_rec.attribute7    := p_attribute7;
1506     l_QUALIFIERS_rec.attribute8    := p_attribute8;
1507     l_QUALIFIERS_rec.attribute9    := p_attribute9;
1508     l_QUALIFIERS_rec.comparison_operator_code := p_comparison_operator_code;
1509     l_QUALIFIERS_rec.context       := p_context;
1510     l_QUALIFIERS_rec.created_by    := p_created_by;
1511     l_QUALIFIERS_rec.created_from_rule_id := p_created_from_rule_id;
1512     l_QUALIFIERS_rec.creation_date := p_creation_date;
1513     l_QUALIFIERS_rec.end_date_active := p_end_date_active;
1514     l_QUALIFIERS_rec.excluder_flag := p_excluder_flag;
1515     l_QUALIFIERS_rec.last_updated_by := p_last_updated_by;
1516     l_QUALIFIERS_rec.last_update_date := p_last_update_date;
1517     l_QUALIFIERS_rec.last_update_login := p_last_update_login;
1518     l_QUALIFIERS_rec.list_header_id := p_list_header_id;
1519     l_QUALIFIERS_rec.list_line_id  := p_list_line_id;
1520     l_QUALIFIERS_rec.program_application_id := p_program_application_id;
1521     l_QUALIFIERS_rec.program_id    := p_program_id;
1522     l_QUALIFIERS_rec.program_update_date := p_program_update_date;
1523     l_QUALIFIERS_rec.qualifier_attribute := p_qualifier_attribute;
1524     l_QUALIFIERS_rec.qualifier_attr_value := p_qualifier_attr_value;
1525     l_QUALIFIERS_rec.qualifier_attr_value_to := p_qualifier_attr_value_to;
1526     l_QUALIFIERS_rec.qualifier_context := p_qualifier_context;
1527     l_QUALIFIERS_rec.qualifier_datatype := p_qualifier_datatype;
1528     --l_QUALIFIERS_rec.qualifier_date_format := p_qualifier_date_format;
1529     l_QUALIFIERS_rec.qualifier_grouping_no := p_qualifier_grouping_no;
1530     l_QUALIFIERS_rec.qualifier_id  := p_qualifier_id;
1531     --l_QUALIFIERS_rec.qualifier_number_format := p_qualifier_number_format;
1532     l_QUALIFIERS_rec.qualifier_precedence := p_qualifier_precedence;
1533     l_QUALIFIERS_rec.qualifier_rule_id := p_qualifier_rule_id;
1534     l_QUALIFIERS_rec.request_id    := p_request_id;
1535     l_QUALIFIERS_rec.start_date_active := p_start_date_active;
1536     l_QUALIFIERS_rec.operation := QP_GLOBALS.G_OPR_LOCK;
1537     l_QUALIFIERS_rec.qualify_hier_descendent_flag := p_qualify_hier_descendent_flag;  -- Added for TCA
1538 
1539     --  Populate QUALIFIERS table
1540 
1541     l_QUALIFIERS_tbl(1) := l_QUALIFIERS_rec;
1542 
1543     --  Call QP_Qualifier_Rules_PVT.Lock_QUALIFIER_RULES
1544 
1545     QP_LIST_HEADERS_PVT.Lock_PRICE_LIST
1546     (   p_api_version_number          => 1.0
1547     ,   p_init_msg_list               => FND_API.G_TRUE
1548     ,   x_return_status               => l_return_status
1549     ,   x_msg_count                   => x_msg_count
1550     ,   x_msg_data                    => x_msg_data
1551     ,   p_QUALIFIERS_tbl              => l_QUALIFIERS_tbl
1552     ,   x_PRICE_LIST_rec              => l_x_PRICE_LIST_rec
1553     ,   x_PRICE_LIST_LINE_tbl         => l_x_PRICE_LIST_LINE_tbl
1554     ,   x_QUALIFIERS_tbl              => l_x_QUALIFIERS_tbl
1555     ,   x_PRICING_ATTR_tbl            => l_x_PRICING_ATTR_tbl
1556     );
1557 
1558    /*
1559 
1560     QP_Qualifier_Rules_PVT.Lock_QUALIFIER_RULES
1561     (   p_api_version_number          => 1.0
1562     ,   p_init_msg_list               => FND_API.G_TRUE
1563     ,   x_return_status               => l_return_status
1564     ,   x_msg_count                   => x_msg_count
1565     ,   x_msg_data                    => x_msg_data
1566     ,   p_QUALIFIERS_tbl              => l_QUALIFIERS_tbl
1567     ,   x_QUALIFIER_RULES_rec         => l_x_QUALIFIER_RULES_rec
1568     ,   x_QUALIFIERS_tbl              => l_x_QUALIFIERS_tbl
1569     );
1570 
1571     */
1572 
1573     IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
1574 
1575         --  Set DB flag and write record to cache.
1576 
1577         l_x_QUALIFIERS_rec.db_flag := FND_API.G_TRUE;
1578 
1579         Write_QUALIFIERS
1580         (   p_QUALIFIERS_rec              => l_x_QUALIFIERS_rec
1581         ,   p_db_record                   => TRUE
1582         );
1583 
1584     END IF;
1585 
1586     --  Set return status.
1587 
1588     x_return_status := l_return_status;
1589 
1590     --  Get message count and data
1591 
1592     oe_msg_pub.Count_And_Get
1593     (   p_count                       => x_msg_count
1594     ,   p_data                        => x_msg_data
1595     );
1596 
1597 
1598 EXCEPTION
1599 
1600     WHEN OTHERS THEN
1601 
1602         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
1603         THEN
1604             oe_msg_pub.Add_Exc_Msg
1605             (   G_PKG_NAME
1606             ,   'Lock_Row'
1607             );
1608         END IF;
1609 
1610         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1611 
1612         --  Get message count and data
1613 
1614         oe_msg_pub.Count_And_Get
1615         (   p_count                       => x_msg_count
1616         ,   p_data                        => x_msg_data
1617         );
1618 
1619 
1620 
1621 END Lock_Row;
1622 
1623 --  Procedures maintaining QUALIFIERS record cache.
1624 
1625 PROCEDURE Write_QUALIFIERS
1626 (   p_QUALIFIERS_rec                IN  QP_Qualifier_Rules_PUB.Qualifiers_Rec_Type
1627 ,   p_db_record                     IN  BOOLEAN := FALSE
1628 )
1629 IS
1630 BEGIN
1631 
1632     g_QUALIFIERS_rec := p_QUALIFIERS_rec;
1633 
1634     IF p_db_record THEN
1635 
1636         g_db_QUALIFIERS_rec := p_QUALIFIERS_rec;
1637 
1638     END IF;
1639 
1640 END Write_Qualifiers;
1641 
1642 FUNCTION Get_QUALIFIERS
1643 (   p_db_record                     IN  BOOLEAN := FALSE
1644 ,   p_qualifier_id                  IN  NUMBER
1645 )
1646 RETURN QP_Qualifier_Rules_PUB.Qualifiers_Rec_Type
1647 IS
1648 BEGIN
1649 
1650     IF  p_qualifier_id <> g_QUALIFIERS_rec.qualifier_id
1651     THEN
1652 
1653         --  Query row from DB
1654 
1655         g_QUALIFIERS_rec := QP_Qualifiers_Util.Query_Row
1656         (   p_qualifier_id                => p_qualifier_id
1657         );
1658 
1659         g_QUALIFIERS_rec.db_flag       := FND_API.G_TRUE;
1660 
1661         --  Load DB record
1662 
1663         g_db_QUALIFIERS_rec            := g_QUALIFIERS_rec;
1664 
1665     END IF;
1666 
1667     IF p_db_record THEN
1668 
1669         RETURN g_db_QUALIFIERS_rec;
1670 
1671     ELSE
1672 
1673         RETURN g_QUALIFIERS_rec;
1674 
1675     END IF;
1676 
1677 END Get_Qualifiers;
1678 
1679 PROCEDURE Clear_Qualifiers
1680 IS
1681 BEGIN
1682 
1683     g_QUALIFIERS_rec               := QP_Qualifier_Rules_PUB.G_MISS_QUALIFIERS_REC;
1684     g_db_QUALIFIERS_rec            := QP_Qualifier_Rules_PUB.G_MISS_QUALIFIERS_REC;
1685 
1686 END Clear_Qualifiers;
1687 
1688 --spgopal  added out parameters to error out when copy failed
1689 --and also display the number of qualifier records processed
1690 PROCEDURE Get_Rules(p_qualifier_rule_id IN NUMBER,
1691                     p_list_header_id IN NUMBER,
1692 				p_list_line_id IN NUMBER := NULL, -- -1,  --2422176
1693 				p_group_condition IN VARCHAR2 DEFAULT 'AND',
1694 				x_processed_qual_count OUT NOCOPY /* file.sql.39 change */ NUMBER,
1695 				x_msg_count    OUT NOCOPY /* file.sql.39 change */ NUMBER,
1696 				x_msg_data     OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
1697 				x_return_status OUT NOCOPY /* file.sql.39 change */ VARCHAR2)
1698 IS
1699 --x_msg_count  NUMBER;
1700 --x_msg_data  VARCHAR2(2000);
1701 l_return_status  VARCHAR2(1);
1702 l_qualifier_rule_id number;
1703 l_list_header_id number;
1704 l_list_line_id number;
1705 l_max_grouping_no NUMBER;
1706 l_list_type_code  VARCHAR2(30);
1707 
1708 l_QUALIFIER_RULES_rec          QP_Qualifier_Rules_pub.Qualifier_Rules_Rec_Type;
1709 l_QUALIFIER_RULES_val_rec      QP_Qualifier_Rules_pub.Qualifier_Rules_Val_Rec_Type;
1710 l_QUALIFIERS_tbl               QP_Qualifier_Rules_pub.Qualifiers_Tbl_Type;
1711 l_QUALIFIERS_val_tbl           QP_Qualifier_Rules_pub.Qualifiers_Val_Tbl_Type;
1712 l_x_qualifiers_tbl             QP_Qualifier_Rules_pub.Qualifiers_Tbl_Type;
1713 l_x_qualifier_rules_rec        QP_Qualifier_Rules_pub.Qualifier_rules_rec_type;
1714 l_x_qualifier_rules_val_rec    QP_Qualifier_Rules_pub.Qualifier_rules_val_rec_type;
1715 l_x_qualifiers_val_tbl         QP_Qualifier_Rules_pub.Qualifiers_val_tbl_type;
1716 
1717 BEGIN
1718 
1719   l_qualifier_rule_id := p_qualifier_rule_id;
1720   l_list_header_id := p_list_header_id;
1721   l_list_line_id := p_list_line_id;
1722 
1723   BEGIN
1724     select list_type_code
1725     into   l_list_type_code
1726     from   qp_list_headers_b
1727     where  list_header_id = p_list_header_id;
1728   EXCEPTION
1729     WHEN OTHERS THEN
1730 	 l_list_type_code := '';
1731   END;
1732 
1733   qp_qualifier_rules_pub.get_qualifier_rules(
1734 		p_api_version_number => 1.0,
1735 		p_init_msg_list => 'F',
1736 		p_return_values => 'F',
1737 		x_return_status => l_return_status,
1738 		x_msg_count => x_msg_count,
1739 		x_msg_data => x_msg_data,
1740                 p_qualifier_rule_id => l_qualifier_rule_id,
1741  		x_qualifier_rules_rec => l_qualifier_rules_rec,
1742 		x_qualifier_rules_val_rec => l_qualifier_rules_val_rec,
1743 		x_qualifiers_tbl => l_qualifiers_tbl,
1744 		x_qualifiers_val_tbl => l_qualifiers_val_tbl);
1745 
1746    oe_debug_pub.add('count of qualifiers table 1 : '  || l_qualifiers_tbl.count);
1747 
1748   IF p_group_condition = 'AND' THEN
1749     SELECT NVL(MAX(ABS(qualifier_grouping_no)),-1)
1750       INTO l_max_grouping_no
1751       FROM qp_qualifiers
1752      WHERE list_header_id = l_list_header_id;
1753 
1754 /* In the case where grp no is 0, we need to add more than max) */
1755     l_max_grouping_no := l_max_grouping_no + 1;
1756 oe_debug_pub.add('max grp no = '||l_max_grouping_no);
1757     FOR k IN 1..l_qualifiers_tbl.COUNT LOOP
1758 		l_qualifiers_tbl(k).list_header_id := l_list_header_id;
1759 		l_qualifiers_tbl(k).list_line_id := l_list_line_id;
1760 		l_qualifiers_tbl(k).qualifier_rule_id := NULL;
1761 		l_qualifiers_tbl(k).qualifier_id := FND_API.G_MISS_NUM;
1762 		l_qualifiers_tbl(k).created_from_rule_id := l_qualifier_rule_id;
1763 
1764 	 IF l_qualifiers_tbl(K).qualifier_grouping_no < 0 THEN
1765 		IF l_qualifiers_tbl(K).qualifier_grouping_no = -1 THEN
1766 		--we want to retain -1 group as it is
1767 		NULL;
1768 		ELSE
1769 	   		l_qualifiers_tbl(K).qualifier_grouping_no := l_qualifiers_tbl(K).qualifier_grouping_no - l_max_grouping_no;
1770 		oe_debug_pub.add('chg grp no = '||l_qualifiers_tbl(K).qualifier_grouping_no);
1771 		END IF;
1772       ELSE
1773 	   l_qualifiers_tbl(K).qualifier_grouping_no := l_qualifiers_tbl(K).qualifier_grouping_no + l_max_grouping_no;
1774 oe_debug_pub.add('chg grp no = '||l_qualifiers_tbl(K).qualifier_grouping_no);
1775 	 END IF;
1776 
1777 	 IF NOT (l_list_type_code IN ('PRL','AGR') AND
1778 		    l_qualifiers_tbl(K).qualifier_context = 'VOLUME' AND
1779 		    l_qualifiers_tbl(K).qualifier_attribute = 'QUALIFIER_ATTRIBUTE10')
1780        --Qualifier Attribute of 'Order Amount' under qualifier context 'Volume'.
1781 	 THEN
1782 	   l_qualifiers_tbl(K).operation := 'CREATE';
1783 	 ELSE
1784 	   l_qualifiers_tbl(K).operation := '';
1785 	 END IF;
1786 
1787 
1788 /* Added for Bug 1754116 */
1789         If l_list_type_code = 'PRL' AND
1790            l_qualifiers_tbl(K).qualifier_context = 'MODLIST' AND
1791            l_qualifiers_tbl(K).qualifier_attribute = 'QUALIFIER_ATTRIBUTE4' Then
1792          l_qualifiers_tbl(K).operation := '';
1793         End If;
1794 /* End of 1754116 */
1795 
1796         IF l_list_type_code IN ('PRL', 'AGR') AND
1797            QP_UTIL.Get_Segment_Level(l_list_header_id,
1798                              l_qualifiers_tbl(K).qualifier_context,
1799                              l_qualifiers_tbl(K).qualifier_attribute
1800                              ) = 'ORDER'
1801         THEN
1802 	  l_qualifiers_tbl(K).operation := 'CREATE';
1803         END IF;
1804 
1805     END LOOP;
1806   ELSIF p_group_condition = 'OR' THEN
1807     FOR k IN 1..l_qualifiers_tbl.COUNT LOOP
1808 	 l_qualifiers_tbl(k).list_header_id := l_list_header_id;
1809 	 l_qualifiers_tbl(k).list_line_id := l_list_line_id;
1810 	 l_qualifiers_tbl(k).qualifier_rule_id := NULL;
1811 	 l_qualifiers_tbl(k).qualifier_id := FND_API.G_MISS_NUM;
1812 	 l_qualifiers_tbl(k).created_from_rule_id := l_qualifier_rule_id;
1813 	 IF NOT (l_list_type_code IN ('PRL','AGR') AND
1814 		    l_qualifiers_tbl(K).qualifier_context = 'VOLUME' AND
1815 		    l_qualifiers_tbl(K).qualifier_attribute = 'QUALIFIER_ATTRIBUTE10')
1816        --Qualifier Attribute of 'Order Amount' under qualifier context 'Volume'.
1817 	 THEN
1818 	   l_qualifiers_tbl(k).operation := 'CREATE';
1819 	 ELSE
1820 	   l_qualifiers_tbl(K).operation := '';
1821 	 END IF;
1822 
1823          IF l_list_type_code IN ('PRL', 'AGR') AND
1824             QP_UTIL.Get_Segment_Level(l_list_header_id,
1825                               l_qualifiers_tbl(K).qualifier_context,
1826                               l_qualifiers_tbl(K).qualifier_attribute
1827                               ) = 'ORDER'
1828          THEN
1829  	   l_qualifiers_tbl(K).operation := '';
1830          END IF;
1831 
1832     END LOOP;
1833   END IF;
1834 
1835 oe_debug_pub.add('before copy qual_rules');
1836 
1837   QP_QUALIFIER_RULES_PVT.PROCESS_QUALIFIER_RULES(
1838 		  p_api_version_number => 1.0,
1839 		  x_return_status => l_return_status,
1840 		  x_msg_count => x_msg_count,
1841 		  x_msg_data => x_msg_data,
1842 		  p_qualifiers_tbl => l_qualifiers_tbl,
1843 		  x_qualifier_rules_rec => l_x_qualifier_rules_rec,
1844 		  x_qualifiers_tbl => l_x_qualifiers_tbl);
1845 
1846 oe_debug_pub.add('after copy qual_rules');
1847 
1848 	x_processed_qual_count := l_QUALIFIERS_tbl.COUNT;
1849 	x_return_status := l_return_status;
1850 
1851     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1852         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1853     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1854         RAISE FND_API.G_EXC_ERROR;
1855     END IF;
1856 
1857 EXCEPTION
1858 
1859     WHEN FND_API.G_EXC_ERROR THEN
1860 
1861       --  x_return_status := FND_API.G_RET_STS_ERROR;
1862 
1863         --  Get message count and data
1864 
1865         oe_msg_pub.Count_And_Get
1866         (   p_count                       => x_msg_count
1867         ,   p_data                        => x_msg_data
1868         );
1869 
1870     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1871 
1872      --   x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1873 
1874         --  Get message count and data
1875 
1876         oe_msg_pub.Count_And_Get
1877         (   p_count                       => x_msg_count
1878         ,   p_data                        => x_msg_data
1879         );
1880 
1881     WHEN OTHERS THEN
1882 
1883         x_return_status := FND_API.G_RET_STS_ERROR ;
1884 
1885         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
1886         THEN
1887             oe_msg_pub.Add_Exc_Msg
1888             (   G_PKG_NAME
1889             ,   'Get_Rules'
1890             );
1891         END IF;
1892 
1893         --  Get message count and data
1894 
1895         oe_msg_pub.Count_And_Get
1896         (   p_count                       => x_msg_count
1897         ,   p_data                        => x_msg_data
1898         );
1899 
1900 
1901 
1902 
1903 END Get_Rules;
1904 
1905 -- This procedure will be called from the client when the user
1906 -- clears a record
1907 Procedure Clear_Record
1908 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1909 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
1910 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1911 ,   p_qualifier_id                  IN  NUMBER
1912 )
1913 IS
1914 l_return_status                     Varchar2(30);
1915 BEGIN
1916      OE_MSG_PUB.initialize;
1917  	x_return_status := FND_API.G_RET_STS_SUCCESS;
1918        QP_DELAYED_REQUESTS_PVT.Delete_Reqs_for_Deleted_Entity(
1919 					p_entity_code  => QP_GLOBALS.G_ENTITY_QUALIFIERS
1920 					,p_entity_id    => p_qualifier_id
1921 				     ,x_return_status => l_return_status);
1922 
1923         OE_MSG_PUB.Count_And_Get
1924         (   p_count                       => x_msg_count
1925         ,   p_data                        => x_msg_data
1926         );
1927 
1928 -- Clear the controller cache
1929 	Clear_qualifiers;
1930 
1931 EXCEPTION
1932     WHEN OTHERS THEN
1933         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1934         THEN
1935             OE_MSG_PUB.Add_Exc_Msg
1936             (   G_PKG_NAME
1937             ,   'Clear_Record'
1938             );
1939         END IF;
1940         --  Get message count and data
1941         OE_MSG_PUB.Count_And_Get
1942         (   p_count                       => x_msg_count
1943         ,   p_data                        => x_msg_data
1944         );
1945         x_return_status := FND_API.G_RET_STS_ERROR;
1946 
1947 END Clear_Record;
1948 
1949 
1950 -- This procedure will be called from the client when the user
1951 -- clears a block or Form
1952 Procedure Delete_All_Requests
1953 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1954 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
1955 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1956 )
1957 IS
1958 l_return_status                     Varchar2(30);
1959 BEGIN
1960      OE_MSG_PUB.initialize;
1961  	x_return_status := FND_API.G_RET_STS_SUCCESS;
1962        QP_DELAYED_REQUESTS_PVT.Clear_Request(
1963 				     x_return_status => l_return_status);
1964 
1965 EXCEPTION
1966     WHEN OTHERS THEN
1967         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1968         THEN
1969             OE_MSG_PUB.Add_Exc_Msg
1970             (   G_PKG_NAME
1971             ,   'Delete_All_Requests'
1972             );
1973         END IF;
1974         --  Get message count and data
1975         OE_MSG_PUB.Count_And_Get
1976         (   p_count                       => x_msg_count
1977         ,   p_data                        => x_msg_data
1978         );
1979         x_return_status := FND_API.G_RET_STS_ERROR;
1980 
1981 END Delete_All_Requests;
1982 
1983 
1984 END QP_QP_PRL_Form_Qualifiers;