DBA Data[Home] [Help]
Skip to content

PACKAGE BODY: APPS.QP_QP_FORM_CURR_LISTS

Source


1 PACKAGE BODY QP_QP_Form_Curr_Lists AS
2 /* $Header: QPXFCURB.pls 120.1 2005/06/13 00:35:52 appldev  $ */
3 
4 --  Global constant holding the package name
5 
6 G_PKG_NAME                    CONSTANT VARCHAR2(30) := 'QP_QP_Form_Curr_Lists';
7 
8 --  Global variables holding cached record.
9 
10 g_CURR_LISTS_rec              QP_Currency_PUB.Curr_Lists_Rec_Type;
11 g_db_CURR_LISTS_rec           QP_Currency_PUB.Curr_Lists_Rec_Type;
12 
13 --  Forward declaration of procedures maintaining entity record cache.
14 
15 PROCEDURE Write_CURR_LISTS
16 (   p_CURR_LISTS_rec                IN  QP_Currency_PUB.Curr_Lists_Rec_Type
17 ,   p_db_record                     IN  BOOLEAN := FALSE
18 );
19 
20 FUNCTION Get_CURR_LISTS
21 (   p_db_record                     IN  BOOLEAN := FALSE
22 ,   p_currency_header_id            IN  NUMBER
23 )
24 RETURN QP_Currency_PUB.Curr_Lists_Rec_Type;
25 
26 PROCEDURE Clear_CURR_LISTS;
27 
28 --  Global variable holding performed operations.
29 
30 g_opr__tbl                    QP_Currency_PUB.Curr_Lists_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 ,   x_attribute1                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
40 ,   x_attribute10                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
41 ,   x_attribute11                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
42 ,   x_attribute12                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
43 ,   x_attribute13                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
44 ,   x_attribute14                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
45 ,   x_attribute15                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
46 ,   x_attribute2                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
47 ,   x_attribute3                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
48 ,   x_attribute4                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
49 ,   x_attribute5                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
50 ,   x_attribute6                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
51 ,   x_attribute7                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
52 ,   x_attribute8                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
53 ,   x_attribute9                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
54 ,   x_base_currency_code            OUT NOCOPY /* file.sql.39 change */ VARCHAR2
55 ,   x_context                       OUT NOCOPY /* file.sql.39 change */ VARCHAR2
56 ,   x_currency_header_id            OUT NOCOPY /* file.sql.39 change */ NUMBER
57 ,   x_description                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
58 ,   x_name                          OUT NOCOPY /* file.sql.39 change */ VARCHAR2
59 -- ,   x_row_id                        OUT NOCOPY /* file.sql.39 change */ ROWID  -- Commented by Sunil
60 ,   x_base_currency                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
61 ,   x_currency_header               OUT NOCOPY /* file.sql.39 change */ VARCHAR2
62 ,   x_base_rounding_factor          OUT NOCOPY /* file.sql.39 change */ NUMBER
63 ,   x_base_markup_operator          OUT NOCOPY /* file.sql.39 change */ VARCHAR2
64 ,   x_base_markup_value             OUT NOCOPY /* file.sql.39 change */ NUMBER
65 ,   x_base_markup_formula           OUT NOCOPY /* file.sql.39 change */ VARCHAR2
66 ,   x_base_markup_formula_id        OUT NOCOPY /* file.sql.39 change */ NUMBER
67 -- ,   x_row                           OUT NOCOPY /* file.sql.39 change */ VARCHAR2
68 )
69 IS
70 l_CURR_LISTS_rec              QP_Currency_PUB.Curr_Lists_Rec_Type;
71 l_CURR_LISTS_val_rec          QP_Currency_PUB.Curr_Lists_Val_Rec_Type;
72 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
73 l_return_status               VARCHAR2(1);
74 l_x_CURR_LISTS_rec            QP_Currency_PUB.Curr_Lists_Rec_Type;
75 l_x_CURR_DETAILS_rec          QP_Currency_PUB.Curr_Details_Rec_Type;
76 l_x_CURR_DETAILS_tbl          QP_Currency_PUB.Curr_Details_Tbl_Type;
77 BEGIN
78 
79     --  Set control flags.
80 
81     l_control_rec.controlled_operation := TRUE;
82     l_control_rec.default_attributes   := TRUE;
83 
84     l_control_rec.change_attributes    := FALSE;
85     l_control_rec.validate_entity      := FALSE;
86     l_control_rec.write_to_DB          := FALSE;
87     l_control_rec.process              := FALSE;
88 
89     --  Instruct API to retain its caches
90 
91     l_control_rec.clear_api_cache      := FALSE;
92     l_control_rec.clear_api_requests   := FALSE;
93 
94     --  Load IN parameters if any exist
95 
96 
97     --  Defaulting of flex values is currently done by the form.
98     --  Set flex attributes to NULL in order to avoid defaulting them.
99 
100     l_CURR_LISTS_rec.attribute1                   := NULL;
101     l_CURR_LISTS_rec.attribute10                  := NULL;
102     l_CURR_LISTS_rec.attribute11                  := NULL;
103     l_CURR_LISTS_rec.attribute12                  := NULL;
104     l_CURR_LISTS_rec.attribute13                  := NULL;
105     l_CURR_LISTS_rec.attribute14                  := NULL;
106     l_CURR_LISTS_rec.attribute15                  := NULL;
107     l_CURR_LISTS_rec.attribute2                   := NULL;
108     l_CURR_LISTS_rec.attribute3                   := NULL;
109     l_CURR_LISTS_rec.attribute4                   := NULL;
110     l_CURR_LISTS_rec.attribute5                   := NULL;
111     l_CURR_LISTS_rec.attribute6                   := NULL;
112     l_CURR_LISTS_rec.attribute7                   := NULL;
113     l_CURR_LISTS_rec.attribute8                   := NULL;
114     l_CURR_LISTS_rec.attribute9                   := NULL;
115     l_CURR_LISTS_rec.context                      := NULL;
116 
117     --  Set Operation to Create
118 
119     l_CURR_LISTS_rec.operation := QP_GLOBALS.G_OPR_CREATE;
120 
121     -- oe_debug_pub.add('Calling  QP_Currency_PVT.Process_Currency from F package; Default_Attributes');
122     --  Call QP_Currency_PVT.Process_Currency
123 
124     QP_Currency_PVT.Process_Currency
125     (   p_api_version_number          => 1.0
126     ,   p_init_msg_list               => FND_API.G_TRUE
127     ,   x_return_status               => l_return_status
128     ,   x_msg_count                   => x_msg_count
129     ,   x_msg_data                    => x_msg_data
130     ,   p_control_rec                 => l_control_rec
131     ,   p_CURR_LISTS_rec              => l_CURR_LISTS_rec
132     ,   x_CURR_LISTS_rec              => l_x_CURR_LISTS_rec
133     ,   x_CURR_DETAILS_tbl            => l_x_CURR_DETAILS_tbl
134     );
135     -- oe_debug_pub.add('AFTER Calling  QP_Currency_PVT.Process_Currency from F package; Default_Attributes');
136 
137     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
138         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
139     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
140         RAISE FND_API.G_EXC_ERROR;
141     END IF;
142 
143 
144     --  Load OUT parameters.
145 
146     x_attribute1                   := l_x_CURR_LISTS_rec.attribute1;
147     x_attribute10                  := l_x_CURR_LISTS_rec.attribute10;
148     x_attribute11                  := l_x_CURR_LISTS_rec.attribute11;
149     x_attribute12                  := l_x_CURR_LISTS_rec.attribute12;
150     x_attribute13                  := l_x_CURR_LISTS_rec.attribute13;
151     x_attribute14                  := l_x_CURR_LISTS_rec.attribute14;
152     x_attribute15                  := l_x_CURR_LISTS_rec.attribute15;
153     x_attribute2                   := l_x_CURR_LISTS_rec.attribute2;
154     x_attribute3                   := l_x_CURR_LISTS_rec.attribute3;
155     x_attribute4                   := l_x_CURR_LISTS_rec.attribute4;
156     x_attribute5                   := l_x_CURR_LISTS_rec.attribute5;
157     x_attribute6                   := l_x_CURR_LISTS_rec.attribute6;
158     x_attribute7                   := l_x_CURR_LISTS_rec.attribute7;
159     x_attribute8                   := l_x_CURR_LISTS_rec.attribute8;
160     x_attribute9                   := l_x_CURR_LISTS_rec.attribute9;
161     x_base_currency_code           := l_x_CURR_LISTS_rec.base_currency_code;
162     x_context                      := l_x_CURR_LISTS_rec.context;
163     x_currency_header_id           := l_x_CURR_LISTS_rec.currency_header_id;
164     x_description                  := l_x_CURR_LISTS_rec.description;
165     x_name                         := l_x_CURR_LISTS_rec.name;
166     x_base_rounding_factor         := l_x_CURR_LISTS_rec.base_rounding_factor;
167     x_base_markup_operator         := l_x_CURR_LISTS_rec.base_markup_operator;
168     x_base_markup_value            := l_x_CURR_LISTS_rec.base_markup_value;
169     x_base_markup_formula_id       := l_x_CURR_LISTS_rec.base_markup_formula_id;
170     -- x_row_id                       := l_x_CURR_LISTS_rec.row_id; -- Commented by Sunil
171 
172     --  Load display out parameters if any
173 
174     l_CURR_LISTS_val_rec := QP_Curr_Lists_Util.Get_Values
175     (   p_CURR_LISTS_rec              => l_x_CURR_LISTS_rec
176     );
177     x_base_currency                := l_CURR_LISTS_val_rec.base_currency;
178     x_currency_header              := l_CURR_LISTS_val_rec.currency_header;
179     x_base_markup_formula          := l_CURR_LISTS_val_rec.base_markup_formula;
180     -- x_row                          := l_CURR_LISTS_val_rec.row;
181 
182     --  Write to cache.
183     --  Set db_flag to False before writing to cache
184 
185     l_x_CURR_LISTS_rec.db_flag := FND_API.G_FALSE;
186 
187     Write_CURR_LISTS
188     (   p_CURR_LISTS_rec              => l_x_CURR_LISTS_rec
189     );
190 
191     --  Set return status.
192 
193     x_return_status := FND_API.G_RET_STS_SUCCESS;
194 
195     --  Get message count and data
196 
197     OE_MSG_PUB.Count_And_Get
198     (   p_count                       => x_msg_count
199     ,   p_data                        => x_msg_data
200     );
201 
202 
203 EXCEPTION
204 
205     WHEN FND_API.G_EXC_ERROR THEN
206 
207         x_return_status := FND_API.G_RET_STS_ERROR;
208 
209         --  Get message count and data
210 
211         OE_MSG_PUB.Count_And_Get
212         (   p_count                       => x_msg_count
213         ,   p_data                        => x_msg_data
214         );
215 
216     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
217 
218         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
219 
220         --  Get message count and data
221 
222         OE_MSG_PUB.Count_And_Get
223         (   p_count                       => x_msg_count
224         ,   p_data                        => x_msg_data
225         );
226 
227     WHEN OTHERS THEN
228 
229         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
230 
231         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
232         THEN
233             OE_MSG_PUB.Add_Exc_Msg
234             (   G_PKG_NAME
235             ,   'Default_Attributes'
236             );
237         END IF;
238 
239         --  Get message count and data
240 
241         OE_MSG_PUB.Count_And_Get
242         (   p_count                       => x_msg_count
243         ,   p_data                        => x_msg_data
244         );
245 
246 END Default_Attributes;
247 
248 --  Procedure   :   Change_Attribute
249 --
250 
251 PROCEDURE Change_Attribute
252 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
253 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
254 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
255 ,   p_currency_header_id            IN  NUMBER
256 ,   p_attr_id                       IN  NUMBER
257 ,   p_attr_value                    IN  VARCHAR2
258 ,   p_attribute1                    IN  VARCHAR2
262 ,   p_attribute13                   IN  VARCHAR2
259 ,   p_attribute10                   IN  VARCHAR2
260 ,   p_attribute11                   IN  VARCHAR2
261 ,   p_attribute12                   IN  VARCHAR2
263 ,   p_attribute14                   IN  VARCHAR2
264 ,   p_attribute15                   IN  VARCHAR2
265 ,   p_attribute2                    IN  VARCHAR2
266 ,   p_attribute3                    IN  VARCHAR2
267 ,   p_attribute4                    IN  VARCHAR2
268 ,   p_attribute5                    IN  VARCHAR2
269 ,   p_attribute6                    IN  VARCHAR2
270 ,   p_attribute7                    IN  VARCHAR2
271 ,   p_attribute8                    IN  VARCHAR2
272 ,   p_attribute9                    IN  VARCHAR2
273 ,   p_context                       IN  VARCHAR2
274 ,   x_attribute1                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
275 ,   x_attribute10                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
276 ,   x_attribute11                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
277 ,   x_attribute12                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
278 ,   x_attribute13                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
279 ,   x_attribute14                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
280 ,   x_attribute15                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
281 ,   x_attribute2                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
282 ,   x_attribute3                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
283 ,   x_attribute4                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
284 ,   x_attribute5                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
285 ,   x_attribute6                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
286 ,   x_attribute7                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
287 ,   x_attribute8                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
288 ,   x_attribute9                    OUT NOCOPY /* file.sql.39 change */ VARCHAR2
289 ,   x_base_currency_code            OUT NOCOPY /* file.sql.39 change */ VARCHAR2
290 ,   x_context                       OUT NOCOPY /* file.sql.39 change */ VARCHAR2
291 ,   x_currency_header_id            OUT NOCOPY /* file.sql.39 change */ NUMBER
292 ,   x_description                   OUT NOCOPY /* file.sql.39 change */ VARCHAR2
293 ,   x_name                          OUT NOCOPY /* file.sql.39 change */ VARCHAR2
294 -- ,   x_row_id                        OUT NOCOPY /* file.sql.39 change */ ROWID -- Commented by Sunil
295 ,   x_base_currency                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
296 ,   x_currency_header               OUT NOCOPY /* file.sql.39 change */ VARCHAR2
297 ,   x_base_rounding_factor          OUT NOCOPY /* file.sql.39 change */ NUMBER
298 ,   x_base_markup_operator          OUT NOCOPY /* file.sql.39 change */ VARCHAR2
299 ,   x_base_markup_value             OUT NOCOPY /* file.sql.39 change */ NUMBER
300 ,   x_base_markup_formula           OUT NOCOPY /* file.sql.39 change */ VARCHAR2
301 ,   x_base_markup_formula_id        OUT NOCOPY /* file.sql.39 change */ NUMBER
302 -- ,   x_row                           OUT NOCOPY /* file.sql.39 change */ VARCHAR2
303 )
304 IS
305 l_CURR_LISTS_rec              QP_Currency_PUB.Curr_Lists_Rec_Type;
306 l_old_CURR_LISTS_rec          QP_Currency_PUB.Curr_Lists_Rec_Type;
307 l_CURR_LISTS_val_rec          QP_Currency_PUB.Curr_Lists_Val_Rec_Type;
308 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
309 l_return_status               VARCHAR2(1);
310 l_x_CURR_LISTS_rec            QP_Currency_PUB.Curr_Lists_Rec_Type;
311 l_x_CURR_DETAILS_rec          QP_Currency_PUB.Curr_Details_Rec_Type;
312 l_x_CURR_DETAILS_tbl          QP_Currency_PUB.Curr_Details_Tbl_Type;
313 BEGIN
314 
315     --  Set control flags.
316 
317     l_control_rec.controlled_operation := TRUE;
318     l_control_rec.change_attributes    := TRUE;
319 
320     l_control_rec.default_attributes   := FALSE;
321     l_control_rec.validate_entity      := FALSE;
322     l_control_rec.write_to_DB          := FALSE;
323     l_control_rec.process              := FALSE;
324 
325     --  Instruct API to retain its caches
326 
327     l_control_rec.clear_api_cache      := FALSE;
328     l_control_rec.clear_api_requests   := FALSE;
329 
330     --  Read CURR_LISTS from cache
331 
332     -- oe_debug_pub.add('BEFORE CALLING Get_CURR_LISTS in Change_Attribute');
333     l_CURR_LISTS_rec := Get_CURR_LISTS
334     (   p_db_record                   => FALSE
335     ,   p_currency_header_id          => p_currency_header_id
336     );
337 
338     -- oe_debug_pub.add('Cache HDR_ID: '||NVL(g_CURR_LISTS_rec.currency_header_id, -999999));
339     -- oe_debug_pub.add('Passed HDR_ID: '||p_currency_header_id);
340     -- oe_debug_pub.add('Passed Attribute_id: '||p_attr_id);
341     -- oe_debug_pub.add('Passed Attribute_id: '||p_attr_value);
342     -- oe_debug_pub.add('DB_FLAG:'|| l_CURR_LISTS_rec.db_flag );
343 
344     l_old_CURR_LISTS_rec           := l_CURR_LISTS_rec;
345 
346     IF p_attr_id = QP_Curr_Lists_Util.G_BASE_CURRENCY THEN
347         l_CURR_LISTS_rec.base_currency_code := p_attr_value;
348     ELSIF p_attr_id = QP_Curr_Lists_Util.G_CURRENCY_HEADER THEN
349         l_CURR_LISTS_rec.currency_header_id := TO_NUMBER(p_attr_value);
350     ELSIF p_attr_id = QP_Curr_Lists_Util.G_DESCRIPTION THEN
351         l_CURR_LISTS_rec.description := p_attr_value;
352     ELSIF p_attr_id = QP_Curr_Lists_Util.G_NAME THEN
353         l_CURR_LISTS_rec.name := p_attr_value;
354     ELSIF p_attr_id = QP_Curr_Lists_Util.G_base_rounding_factor THEN
355         l_CURR_LISTS_rec.base_rounding_factor := TO_NUMBER(p_attr_value);
356     ELSIF p_attr_id = QP_Curr_Lists_Util.G_base_markup_operator THEN
357         l_CURR_LISTS_rec.base_markup_operator := p_attr_value;
358     ELSIF p_attr_id = QP_Curr_Lists_Util.G_base_markup_value THEN
359         -- oe_debug_pub.add('Assigning Base Markup Value');
360         l_CURR_LISTS_rec.base_markup_value := TO_NUMBER(p_attr_value);
364         -- l_CURR_LISTS_rec.row_idELSIF
361     ELSIF p_attr_id = QP_Curr_Lists_Util.G_base_markup_formula THEN
362         l_CURR_LISTS_rec.base_markup_formula_id := TO_NUMBER(p_attr_value);
363     -- ELSIF p_attr_id = QP_Curr_Lists_Util.G_ROW THEN
365     ELSIF p_attr_id = QP_Curr_Lists_Util.G_ATTRIBUTE1
366     OR     p_attr_id = QP_Curr_Lists_Util.G_ATTRIBUTE10
367     OR     p_attr_id = QP_Curr_Lists_Util.G_ATTRIBUTE11
368     OR     p_attr_id = QP_Curr_Lists_Util.G_ATTRIBUTE12
369     OR     p_attr_id = QP_Curr_Lists_Util.G_ATTRIBUTE13
370     OR     p_attr_id = QP_Curr_Lists_Util.G_ATTRIBUTE14
371     OR     p_attr_id = QP_Curr_Lists_Util.G_ATTRIBUTE15
372     OR     p_attr_id = QP_Curr_Lists_Util.G_ATTRIBUTE2
373     OR     p_attr_id = QP_Curr_Lists_Util.G_ATTRIBUTE3
374     OR     p_attr_id = QP_Curr_Lists_Util.G_ATTRIBUTE4
375     OR     p_attr_id = QP_Curr_Lists_Util.G_ATTRIBUTE5
376     OR     p_attr_id = QP_Curr_Lists_Util.G_ATTRIBUTE6
377     OR     p_attr_id = QP_Curr_Lists_Util.G_ATTRIBUTE7
378     OR     p_attr_id = QP_Curr_Lists_Util.G_ATTRIBUTE8
379     OR     p_attr_id = QP_Curr_Lists_Util.G_ATTRIBUTE9
380     OR     p_attr_id = QP_Curr_Lists_Util.G_CONTEXT
381     THEN
382 
383         l_CURR_LISTS_rec.attribute1    := p_attribute1;
384         l_CURR_LISTS_rec.attribute10   := p_attribute10;
385         l_CURR_LISTS_rec.attribute11   := p_attribute11;
386         l_CURR_LISTS_rec.attribute12   := p_attribute12;
387         l_CURR_LISTS_rec.attribute13   := p_attribute13;
388         l_CURR_LISTS_rec.attribute14   := p_attribute14;
389         l_CURR_LISTS_rec.attribute15   := p_attribute15;
390         l_CURR_LISTS_rec.attribute2    := p_attribute2;
391         l_CURR_LISTS_rec.attribute3    := p_attribute3;
392         l_CURR_LISTS_rec.attribute4    := p_attribute4;
393         l_CURR_LISTS_rec.attribute5    := p_attribute5;
394         l_CURR_LISTS_rec.attribute6    := p_attribute6;
395         l_CURR_LISTS_rec.attribute7    := p_attribute7;
396         l_CURR_LISTS_rec.attribute8    := p_attribute8;
397         l_CURR_LISTS_rec.attribute9    := p_attribute9;
398         l_CURR_LISTS_rec.context       := p_context;
399 
400     ELSE
401 
402         --  Unexpected error, unrecognized attribute
403 
404         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
405         THEN
406             OE_MSG_PUB.Add_Exc_Msg
407             (   G_PKG_NAME
408             ,   'Change_Attribute'
409             ,   'Unrecognized attribute'
410             );
411         END IF;
412 
413         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
414 
415     END IF;
416 
417     --  Set Operation.
418 
419     IF FND_API.To_Boolean(l_CURR_LISTS_rec.db_flag) THEN
420         l_CURR_LISTS_rec.operation := QP_GLOBALS.G_OPR_UPDATE;
421     ELSE
422         l_CURR_LISTS_rec.operation := QP_GLOBALS.G_OPR_CREATE;
423     END IF;
424 
425     --  Call QP_Currency_PVT.Process_Currency
426     -- oe_debug_pub.add('Calling  QP_Currency_PVT.Process_Currency from F package; Change_Attribute');
427 
428     QP_Currency_PVT.Process_Currency
429     (   p_api_version_number          => 1.0
430     ,   p_init_msg_list               => FND_API.G_TRUE
431     ,   p_validation_level            => FND_API.G_VALID_LEVEL_NONE
432     ,   x_return_status               => l_return_status
433     ,   x_msg_count                   => x_msg_count
434     ,   x_msg_data                    => x_msg_data
435     ,   p_control_rec                 => l_control_rec
436     ,   p_CURR_LISTS_rec              => l_CURR_LISTS_rec
437     ,   p_old_CURR_LISTS_rec          => l_old_CURR_LISTS_rec
438     ,   x_CURR_LISTS_rec              => l_x_CURR_LISTS_rec
439     ,   x_CURR_DETAILS_tbl            => l_x_CURR_DETAILS_tbl
440     );
441     -- oe_debug_pub.add('AFTER Calling  QP_Currency_PVT.Process_Currency from F package; Change_Attribute');
442     -- oe_debug_pub.add('AFTER Calling  QP_Currency_PVT.Process_Currency from F package; Change_Attribute; l_x_CURR_LISTS_rec.base_markup_value: '||l_x_CURR_LISTS_rec.base_markup_value);
443     -- oe_debug_pub.add('AFTER Calling  QP_Currency_PVT.Process_Currency from F package; Change_Attribute; l_x_CURR_LISTS_rec.Description: '||l_x_CURR_LISTS_rec.Description);
444 
445     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
446         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
447     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
448         RAISE FND_API.G_EXC_ERROR;
449     END IF;
450 
451 
452     --  Init OUT parameters to missing.
453 
454     x_attribute1                   := FND_API.G_MISS_CHAR;
455     x_attribute10                  := FND_API.G_MISS_CHAR;
456     x_attribute11                  := FND_API.G_MISS_CHAR;
457     x_attribute12                  := FND_API.G_MISS_CHAR;
458     x_attribute13                  := FND_API.G_MISS_CHAR;
459     x_attribute14                  := FND_API.G_MISS_CHAR;
460     x_attribute15                  := FND_API.G_MISS_CHAR;
461     x_attribute2                   := FND_API.G_MISS_CHAR;
462     x_attribute3                   := FND_API.G_MISS_CHAR;
463     x_attribute4                   := FND_API.G_MISS_CHAR;
464     x_attribute5                   := FND_API.G_MISS_CHAR;
465     x_attribute6                   := FND_API.G_MISS_CHAR;
466     x_attribute7                   := FND_API.G_MISS_CHAR;
467     x_attribute8                   := FND_API.G_MISS_CHAR;
468     x_attribute9                   := FND_API.G_MISS_CHAR;
469     x_base_currency_code           := FND_API.G_MISS_CHAR;
470     x_context                      := FND_API.G_MISS_CHAR;
471     x_currency_header_id           := FND_API.G_MISS_NUM;
472     x_description                  := FND_API.G_MISS_CHAR;
473     x_name                         := FND_API.G_MISS_CHAR;
474     -- x_row_id                       := FND_API.G_MISS_CHAR; -- Commented by Sunil
475     x_base_currency                := FND_API.G_MISS_CHAR;
479     x_base_markup_operator         := FND_API.G_MISS_CHAR;
476     x_currency_header              := FND_API.G_MISS_CHAR;
477     -- x_row                          := FND_API.G_MISS_CHAR;
478     x_base_rounding_factor         := FND_API.G_MISS_NUM;
480     x_base_markup_value            := FND_API.G_MISS_NUM;
481     x_base_markup_formula_id       := FND_API.G_MISS_NUM;
482     x_base_markup_formula          := FND_API.G_MISS_CHAR;
483 
484 
485     -- oe_debug_pub.add('%%Inside F- Change_Attribute; CHECK-POINT-1');
486     --  Load display out parameters if any
487 
488     l_CURR_LISTS_val_rec := QP_Curr_Lists_Util.Get_Values
489     (   p_CURR_LISTS_rec              => l_x_CURR_LISTS_rec
490     ,   p_old_CURR_LISTS_rec          => l_CURR_LISTS_rec
491     );
492 
493     -- oe_debug_pub.add('%%Inside F- Change_Attribute; CHECK-POINT-2');
494     --  Return changed attributes.
495 
496     IF NOT QP_GLOBALS.Equal(l_x_CURR_LISTS_rec.attribute1,
497                             l_CURR_LISTS_rec.attribute1)
498     THEN
499         x_attribute1 := l_x_CURR_LISTS_rec.attribute1;
500     END IF;
501 
502     IF NOT QP_GLOBALS.Equal(l_x_CURR_LISTS_rec.attribute10,
503                             l_CURR_LISTS_rec.attribute10)
504     THEN
505         x_attribute10 := l_x_CURR_LISTS_rec.attribute10;
506     END IF;
507 
508     IF NOT QP_GLOBALS.Equal(l_x_CURR_LISTS_rec.attribute11,
509                             l_CURR_LISTS_rec.attribute11)
510     THEN
511         x_attribute11 := l_x_CURR_LISTS_rec.attribute11;
512     END IF;
513 
514     IF NOT QP_GLOBALS.Equal(l_x_CURR_LISTS_rec.attribute12,
515                             l_CURR_LISTS_rec.attribute12)
516     THEN
517         x_attribute12 := l_x_CURR_LISTS_rec.attribute12;
518     END IF;
519 
520     IF NOT QP_GLOBALS.Equal(l_x_CURR_LISTS_rec.attribute13,
521                             l_CURR_LISTS_rec.attribute13)
522     THEN
523         x_attribute13 := l_x_CURR_LISTS_rec.attribute13;
524     END IF;
525 
526     IF NOT QP_GLOBALS.Equal(l_x_CURR_LISTS_rec.attribute14,
527                             l_CURR_LISTS_rec.attribute14)
528     THEN
529         x_attribute14 := l_x_CURR_LISTS_rec.attribute14;
530     END IF;
531 
532     IF NOT QP_GLOBALS.Equal(l_x_CURR_LISTS_rec.attribute15,
533                             l_CURR_LISTS_rec.attribute15)
534     THEN
535         x_attribute15 := l_x_CURR_LISTS_rec.attribute15;
536     END IF;
537 
538     IF NOT QP_GLOBALS.Equal(l_x_CURR_LISTS_rec.attribute2,
539                             l_CURR_LISTS_rec.attribute2)
540     THEN
541         x_attribute2 := l_x_CURR_LISTS_rec.attribute2;
542     END IF;
543 
544     IF NOT QP_GLOBALS.Equal(l_x_CURR_LISTS_rec.attribute3,
545                             l_CURR_LISTS_rec.attribute3)
546     THEN
547         x_attribute3 := l_x_CURR_LISTS_rec.attribute3;
548     END IF;
549 
550     IF NOT QP_GLOBALS.Equal(l_x_CURR_LISTS_rec.attribute4,
551                             l_CURR_LISTS_rec.attribute4)
552     THEN
553         x_attribute4 := l_x_CURR_LISTS_rec.attribute4;
554     END IF;
555 
556     IF NOT QP_GLOBALS.Equal(l_x_CURR_LISTS_rec.attribute5,
557                             l_CURR_LISTS_rec.attribute5)
558     THEN
559         x_attribute5 := l_x_CURR_LISTS_rec.attribute5;
560     END IF;
561 
562     IF NOT QP_GLOBALS.Equal(l_x_CURR_LISTS_rec.attribute6,
563                             l_CURR_LISTS_rec.attribute6)
564     THEN
565         x_attribute6 := l_x_CURR_LISTS_rec.attribute6;
566     END IF;
567 
568     IF NOT QP_GLOBALS.Equal(l_x_CURR_LISTS_rec.attribute7,
569                             l_CURR_LISTS_rec.attribute7)
570     THEN
571         x_attribute7 := l_x_CURR_LISTS_rec.attribute7;
572     END IF;
573 
574     IF NOT QP_GLOBALS.Equal(l_x_CURR_LISTS_rec.attribute8,
575                             l_CURR_LISTS_rec.attribute8)
576     THEN
577         x_attribute8 := l_x_CURR_LISTS_rec.attribute8;
578     END IF;
579 
580     IF NOT QP_GLOBALS.Equal(l_x_CURR_LISTS_rec.attribute9,
581                             l_CURR_LISTS_rec.attribute9)
582     THEN
583         x_attribute9 := l_x_CURR_LISTS_rec.attribute9;
584     END IF;
585 
586     IF NOT QP_GLOBALS.Equal(l_x_CURR_LISTS_rec.base_currency_code,
587                             l_CURR_LISTS_rec.base_currency_code)
588     THEN
589         x_base_currency_code := l_x_CURR_LISTS_rec.base_currency_code;
590         x_base_currency := l_CURR_LISTS_val_rec.base_currency;
591     END IF;
592 
593     IF NOT QP_GLOBALS.Equal(l_x_CURR_LISTS_rec.context,
594                             l_CURR_LISTS_rec.context)
595     THEN
596         x_context := l_x_CURR_LISTS_rec.context;
597     END IF;
598 
599     IF NOT QP_GLOBALS.Equal(l_x_CURR_LISTS_rec.currency_header_id,
600                             l_CURR_LISTS_rec.currency_header_id)
601     THEN
602         x_currency_header_id := l_x_CURR_LISTS_rec.currency_header_id;
603         x_currency_header := l_CURR_LISTS_val_rec.currency_header;
604     END IF;
605 
606     IF NOT QP_GLOBALS.Equal(l_x_CURR_LISTS_rec.description,
607                             l_CURR_LISTS_rec.description)
608     THEN
609         x_description := l_x_CURR_LISTS_rec.description;
610     END IF;
611 
612     IF NOT QP_GLOBALS.Equal(l_x_CURR_LISTS_rec.name,
613                             l_CURR_LISTS_rec.name)
614     THEN
615         x_name := l_x_CURR_LISTS_rec.name;
616     END IF;
617 
618     IF NOT QP_GLOBALS.Equal(l_x_CURR_LISTS_rec.base_rounding_factor,
619                             l_CURR_LISTS_rec.base_rounding_factor)
620     THEN
621         x_base_rounding_factor := l_x_CURR_LISTS_rec.base_rounding_factor;
625                             l_CURR_LISTS_rec.base_markup_operator)
622     END IF;
623 
624     IF NOT QP_GLOBALS.Equal(l_x_CURR_LISTS_rec.base_markup_operator,
626     THEN
627         x_base_markup_operator := l_x_CURR_LISTS_rec.base_markup_operator;
628     END IF;
629 
630     IF NOT QP_GLOBALS.Equal(l_x_CURR_LISTS_rec.base_markup_value,
631                             l_CURR_LISTS_rec.base_markup_value)
632     THEN
633         x_base_markup_value := l_x_CURR_LISTS_rec.base_markup_value;
634     END IF;
635 
636     IF NOT QP_GLOBALS.Equal(l_x_CURR_LISTS_rec.base_markup_formula_id,
637                             l_CURR_LISTS_rec.base_markup_formula_id)
638     THEN
639         x_base_markup_formula_id := l_x_CURR_LISTS_rec.base_markup_formula_id;
640         x_base_markup_formula := l_CURR_LISTS_val_rec.base_markup_formula;
641     END IF;
642     -- oe_debug_pub.add('%%Inside F- Change_Attribute; CHECK-POINT-3');
643 
644 /* Commented by Sunil
645     IF NOT QP_GLOBALS.Equal(l_x_CURR_LISTS_rec.row_id,
646                             l_CURR_LISTS_rec.row_id)
647     THEN
648         x_row_id := l_x_CURR_LISTS_rec.row_id;
649         x_row := l_CURR_LISTS_val_rec.row;
650     END IF;
651    Commented by Sunil */
652 
653 
654     -- oe_debug_pub.add('%%Inside F- Change_Attribute; l_x_CURR_LISTS_rec.base_markup_value: '||l_x_CURR_LISTS_rec.base_markup_value);
655     -- oe_debug_pub.add('%%Inside F- Change_Attribute; l_x_CURR_LISTS_rec.description: '||l_x_CURR_LISTS_rec.description);
656     --  Write to cache.
657 
658     Write_CURR_LISTS
659     (   p_CURR_LISTS_rec              => l_x_CURR_LISTS_rec
660     );
661 
662     --  Set return status.
663 
664     x_return_status := FND_API.G_RET_STS_SUCCESS;
665 
666     --  Get message count and data
667 
668     OE_MSG_PUB.Count_And_Get
669     (   p_count                       => x_msg_count
670     ,   p_data                        => x_msg_data
671     );
672 
673 
674 EXCEPTION
675 
676     WHEN FND_API.G_EXC_ERROR THEN
677 
678         x_return_status := FND_API.G_RET_STS_ERROR;
679 
680         --  Get message count and data
681 
682         OE_MSG_PUB.Count_And_Get
683         (   p_count                       => x_msg_count
684         ,   p_data                        => x_msg_data
685         );
686 
687     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
688 
689         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
690 
691         --  Get message count and data
692 
693         OE_MSG_PUB.Count_And_Get
694         (   p_count                       => x_msg_count
695         ,   p_data                        => x_msg_data
696         );
697 
698     WHEN OTHERS THEN
699 
700         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
701 
702         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
703         THEN
704             OE_MSG_PUB.Add_Exc_Msg
705             (   G_PKG_NAME
706             ,   'Change_Attribute'
707             );
708         END IF;
709 
710         --  Get message count and data
711 
712         OE_MSG_PUB.Count_And_Get
713         (   p_count                       => x_msg_count
714         ,   p_data                        => x_msg_data
715         );
716 
717 END Change_Attribute;
718 
719 --  Procedure       Validate_And_Write
720 --
721 
722 PROCEDURE Validate_And_Write
723 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
724 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
725 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
726 ,   p_currency_header_id            IN  NUMBER
727 ,   x_creation_date                 OUT NOCOPY /* file.sql.39 change */ DATE
728 ,   x_created_by                    OUT NOCOPY /* file.sql.39 change */ NUMBER
729 ,   x_last_update_date              OUT NOCOPY /* file.sql.39 change */ DATE
730 ,   x_last_updated_by               OUT NOCOPY /* file.sql.39 change */ NUMBER
731 ,   x_last_update_login             OUT NOCOPY /* file.sql.39 change */ NUMBER
732 )
733 IS
734 l_CURR_LISTS_rec              QP_Currency_PUB.Curr_Lists_Rec_Type;
735 l_old_CURR_LISTS_rec          QP_Currency_PUB.Curr_Lists_Rec_Type;
736 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
737 l_return_status               VARCHAR2(1);
738 l_x_CURR_LISTS_rec            QP_Currency_PUB.Curr_Lists_Rec_Type;
739 l_x_CURR_DETAILS_rec          QP_Currency_PUB.Curr_Details_Rec_Type;
740 l_x_CURR_DETAILS_tbl          QP_Currency_PUB.Curr_Details_Tbl_Type;
741 BEGIN
742 
743     --  Set control flags.
744 
745     l_control_rec.controlled_operation := TRUE;
746     l_control_rec.validate_entity      := TRUE;
747     l_control_rec.write_to_DB          := TRUE;
748 
749     l_control_rec.default_attributes   := FALSE;
750     l_control_rec.change_attributes    := FALSE;
751     l_control_rec.process              := FALSE;
752 
753     --  Instruct API to retain its caches
754 
755     l_control_rec.clear_api_cache      := FALSE;
756     l_control_rec.clear_api_requests   := FALSE;
757 
758     --  Read CURR_LISTS from cache
759 
760     l_old_CURR_LISTS_rec := Get_CURR_LISTS
761     (   p_db_record                   => TRUE
762     ,   p_currency_header_id          => p_currency_header_id
763     );
764 
765     l_CURR_LISTS_rec := Get_CURR_LISTS
766     (   p_db_record                   => FALSE
767     ,   p_currency_header_id          => p_currency_header_id
768     );
769 
770     -- oe_debug_pub.add('Inside QPXFCURB; After calling get_curr_lists; l_CURR_LISTS_rec.base_markup_value: '||l_CURR_LISTS_rec.base_markup_value);
774 
771     -- oe_debug_pub.add('Inside QPXFCURB; After calling get_curr_lists; l_CURR_LISTS_rec.description: '||l_CURR_LISTS_rec.description);
772 
773     --  Set Operation.
775     IF FND_API.To_Boolean(l_CURR_LISTS_rec.db_flag) THEN
776         l_CURR_LISTS_rec.operation := QP_GLOBALS.G_OPR_UPDATE;
777     ELSE
778         l_CURR_LISTS_rec.operation := QP_GLOBALS.G_OPR_CREATE;
779     END IF;
780 
781     --  Call QP_Currency_PVT.Process_Currency
782 
783     -- oe_debug_pub.add('Calling  QP_Currency_PVT.Process_Currency from F package; Validate_and_Write');
784     QP_Currency_PVT.Process_Currency
785     (   p_api_version_number          => 1.0
786     ,   p_init_msg_list               => FND_API.G_TRUE
787     ,   x_return_status               => l_return_status
788     ,   x_msg_count                   => x_msg_count
789     ,   x_msg_data                    => x_msg_data
790     ,   p_control_rec                 => l_control_rec
791     ,   p_CURR_LISTS_rec              => l_CURR_LISTS_rec
792     ,   p_old_CURR_LISTS_rec          => l_old_CURR_LISTS_rec
793     ,   x_CURR_LISTS_rec              => l_x_CURR_LISTS_rec
794     ,   x_CURR_DETAILS_tbl            => l_x_CURR_DETAILS_tbl
795     );
796     -- oe_debug_pub.add('AFTER Calling  QP_Currency_PVT.Process_Currency from F package; Validate_and_Write');
797 
798     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
799         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
800     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
801         RAISE FND_API.G_EXC_ERROR;
802     END IF;
803 
804 
805     --  Load OUT parameters.
806 
807 
808     x_creation_date                := l_x_CURR_LISTS_rec.creation_date;
809     x_created_by                   := l_x_CURR_LISTS_rec.created_by;
810     x_last_update_date             := l_x_CURR_LISTS_rec.last_update_date;
811     x_last_updated_by              := l_x_CURR_LISTS_rec.last_updated_by;
812     x_last_update_login            := l_x_CURR_LISTS_rec.last_update_login;
813 
814     --  Clear CURR_LISTS record cache
815 
816     Clear_CURR_LISTS;
817 
818     --  Keep track of performed operations.
819 
820     l_old_CURR_LISTS_rec.operation := l_CURR_LISTS_rec.operation;
821 
822 
823     --  Set return status.
824 
825     x_return_status := FND_API.G_RET_STS_SUCCESS;
826 
827     --  Get message count and data
828 
829     OE_MSG_PUB.Count_And_Get
830     (   p_count                       => x_msg_count
831     ,   p_data                        => x_msg_data
832     );
833 
834 
835 EXCEPTION
836 
837     WHEN FND_API.G_EXC_ERROR THEN
838 
839         x_return_status := FND_API.G_RET_STS_ERROR;
840 
841         --  Get message count and data
842 
843         OE_MSG_PUB.Count_And_Get
844         (   p_count                       => x_msg_count
845         ,   p_data                        => x_msg_data
846         );
847 
848     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
849 
850         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
851 
852         --  Get message count and data
853 
854         OE_MSG_PUB.Count_And_Get
855         (   p_count                       => x_msg_count
856         ,   p_data                        => x_msg_data
857         );
858 
859     WHEN OTHERS THEN
860 
861         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
862 
863         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
864         THEN
865             OE_MSG_PUB.Add_Exc_Msg
866             (   G_PKG_NAME
867             ,   'Validate_And_Write'
868             );
869         END IF;
870 
871         --  Get message count and data
872 
873         OE_MSG_PUB.Count_And_Get
874         (   p_count                       => x_msg_count
875         ,   p_data                        => x_msg_data
876         );
877 
878 END Validate_And_Write;
879 
880 --  Procedure       Delete_Row
881 --
882 
883 PROCEDURE Delete_Row
884 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
885 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
886 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
887 ,   p_currency_header_id            IN  NUMBER
888 )
889 IS
890 l_CURR_LISTS_rec              QP_Currency_PUB.Curr_Lists_Rec_Type;
891 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
892 l_return_status               VARCHAR2(1);
893 l_x_CURR_LISTS_rec            QP_Currency_PUB.Curr_Lists_Rec_Type;
894 l_x_CURR_DETAILS_rec          QP_Currency_PUB.Curr_Details_Rec_Type;
895 l_x_CURR_DETAILS_tbl          QP_Currency_PUB.Curr_Details_Tbl_Type;
896 BEGIN
897 
898     --  Set control flags.
899 
900     l_control_rec.controlled_operation := TRUE;
901     l_control_rec.validate_entity      := TRUE;
902     l_control_rec.write_to_DB          := TRUE;
903 
904     l_control_rec.default_attributes   := FALSE;
905     l_control_rec.change_attributes    := FALSE;
906     l_control_rec.process              := FALSE;
907 
908     --  Instruct API to retain its caches
909 
910     l_control_rec.clear_api_cache      := FALSE;
911     l_control_rec.clear_api_requests   := FALSE;
912 
913     --  Read DB record from cache
914 
915     l_CURR_LISTS_rec := Get_CURR_LISTS
916     (   p_db_record                   => TRUE
917     ,   p_currency_header_id          => p_currency_header_id
918     );
919 
920     --  Set Operation.
921 
922     l_CURR_LISTS_rec.operation := QP_GLOBALS.G_OPR_DELETE;
923 
924     -- oe_debug_pub.add('Calling  QP_Currency_PVT.Process_Currency from F package; Delete_Row');
928     (   p_api_version_number          => 1.0
925     --  Call QP_Currency_PVT.Process_Currency
926 
927     QP_Currency_PVT.Process_Currency
929     ,   p_init_msg_list               => FND_API.G_TRUE
930     ,   x_return_status               => l_return_status
931     ,   x_msg_count                   => x_msg_count
932     ,   x_msg_data                    => x_msg_data
933     ,   p_control_rec                 => l_control_rec
934     ,   p_CURR_LISTS_rec              => l_CURR_LISTS_rec
935     ,   x_CURR_LISTS_rec              => l_x_CURR_LISTS_rec
936     ,   x_CURR_DETAILS_tbl            => l_x_CURR_DETAILS_tbl
937     );
938     -- oe_debug_pub.add('AFTER Calling  QP_Currency_PVT.Process_Currency from F package; Delete_Row');
939 
940     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
941         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
942     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
943         RAISE FND_API.G_EXC_ERROR;
944     END IF;
945 
946 
947     --  Clear CURR_LISTS record cache
948 
949     Clear_CURR_LISTS;
950 
951     --  Set return status.
952 
953     x_return_status := FND_API.G_RET_STS_SUCCESS;
954 
955     --  Get message count and data
956 
957     OE_MSG_PUB.Count_And_Get
958     (   p_count                       => x_msg_count
959     ,   p_data                        => x_msg_data
960     );
961 
962 
963 EXCEPTION
964 
965     WHEN FND_API.G_EXC_ERROR THEN
966 
967         x_return_status := FND_API.G_RET_STS_ERROR;
968 
969         --  Get message count and data
970 
971         OE_MSG_PUB.Count_And_Get
972         (   p_count                       => x_msg_count
973         ,   p_data                        => x_msg_data
974         );
975 
976     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
977 
978         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
979 
980         --  Get message count and data
981 
982         OE_MSG_PUB.Count_And_Get
983         (   p_count                       => x_msg_count
984         ,   p_data                        => x_msg_data
985         );
986 
987     WHEN OTHERS THEN
988 
989         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
990 
991         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
992         THEN
993             OE_MSG_PUB.Add_Exc_Msg
994             (   G_PKG_NAME
995             ,   'Delete_Row'
996             );
997         END IF;
998 
999         --  Get message count and data
1000 
1001         OE_MSG_PUB.Count_And_Get
1002         (   p_count                       => x_msg_count
1003         ,   p_data                        => x_msg_data
1004         );
1005 
1006 END Delete_Row;
1007 
1008 --  Procedure       Process_Entity
1009 --
1010 
1011 PROCEDURE Process_Entity
1012 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1013 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
1014 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1015 )
1016 IS
1017 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
1018 l_return_status               VARCHAR2(1);
1019 l_x_CURR_LISTS_rec            QP_Currency_PUB.Curr_Lists_Rec_Type;
1020 l_x_CURR_DETAILS_rec          QP_Currency_PUB.Curr_Details_Rec_Type;
1021 l_x_CURR_DETAILS_tbl          QP_Currency_PUB.Curr_Details_Tbl_Type;
1022 BEGIN
1023 
1024     --  Set control flags.
1025 
1026     l_control_rec.controlled_operation := TRUE;
1027     l_control_rec.process              := TRUE;
1028     l_control_rec.process_entity       := QP_GLOBALS.G_ENTITY_CURR_LISTS;
1029 
1030     l_control_rec.default_attributes   := FALSE;
1031     l_control_rec.change_attributes    := FALSE;
1032     l_control_rec.validate_entity      := FALSE;
1033     l_control_rec.write_to_DB          := FALSE;
1034 
1035     --  Instruct API to clear its request table
1036 
1037     l_control_rec.clear_api_cache      := FALSE;
1038     l_control_rec.clear_api_requests   := FALSE;
1039 
1040     -- oe_debug_pub.add('Calling  QP_Currency_PVT.Process_Currency from F package; Process_Entity');
1041     --  Call QP_Currency_PVT.Process_Currency
1042 
1043     QP_Currency_PVT.Process_Currency
1044     (   p_api_version_number          => 1.0
1045     ,   p_init_msg_list               => FND_API.G_TRUE
1046     ,   x_return_status               => l_return_status
1047     ,   x_msg_count                   => x_msg_count
1048     ,   x_msg_data                    => x_msg_data
1049     ,   p_control_rec                 => l_control_rec
1050     ,   x_CURR_LISTS_rec              => l_x_CURR_LISTS_rec
1051     ,   x_CURR_DETAILS_tbl            => l_x_CURR_DETAILS_tbl
1052     );
1053     -- oe_debug_pub.add('AFTER Calling  QP_Currency_PVT.Process_Currency from F package; Process_Entity');
1054 
1055     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1056         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1057     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1058         RAISE FND_API.G_EXC_ERROR;
1059     END IF;
1060 
1061 
1062     --  Set return status.
1063 
1064     x_return_status := FND_API.G_RET_STS_SUCCESS;
1065 
1066     --  Get message count and data
1067 
1068     OE_MSG_PUB.Count_And_Get
1069     (   p_count                       => x_msg_count
1070     ,   p_data                        => x_msg_data
1071     );
1072 
1073 
1074 EXCEPTION
1075 
1076     WHEN FND_API.G_EXC_ERROR THEN
1077 
1078         x_return_status := FND_API.G_RET_STS_ERROR;
1079 
1080         --  Get message count and data
1081 
1082         OE_MSG_PUB.Count_And_Get
1086 
1083         (   p_count                       => x_msg_count
1084         ,   p_data                        => x_msg_data
1085         );
1087     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1088 
1089         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1090 
1091         --  Get message count and data
1092 
1093         OE_MSG_PUB.Count_And_Get
1094         (   p_count                       => x_msg_count
1095         ,   p_data                        => x_msg_data
1096         );
1097 
1098     WHEN OTHERS THEN
1099 
1100         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1101 
1102         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1103         THEN
1104             OE_MSG_PUB.Add_Exc_Msg
1105             (   G_PKG_NAME
1106             ,   'Process_Entity'
1107             );
1108         END IF;
1109 
1110         --  Get message count and data
1111 
1112         OE_MSG_PUB.Count_And_Get
1113         (   p_count                       => x_msg_count
1114         ,   p_data                        => x_msg_data
1115         );
1116 
1117 END Process_Entity;
1118 
1119 --  Procedure       Process_Object
1120 --
1121 
1122 PROCEDURE Process_Object
1123 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1124 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
1125 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1126 )
1127 IS
1128 l_control_rec                 QP_GLOBALS.Control_Rec_Type;
1129 l_return_status               VARCHAR2(1);
1130 l_x_CURR_LISTS_rec            QP_Currency_PUB.Curr_Lists_Rec_Type;
1131 l_x_CURR_DETAILS_rec          QP_Currency_PUB.Curr_Details_Rec_Type;
1132 l_x_CURR_DETAILS_tbl          QP_Currency_PUB.Curr_Details_Tbl_Type;
1133 BEGIN
1134 
1135     --  Set control flags.
1136 
1137     l_control_rec.controlled_operation := TRUE;
1138     l_control_rec.process              := TRUE;
1139     l_control_rec.process_entity       := QP_GLOBALS.G_ENTITY_ALL;
1140 
1141     l_control_rec.default_attributes   := FALSE;
1142     l_control_rec.change_attributes    := FALSE;
1143     l_control_rec.validate_entity      := FALSE;
1144     l_control_rec.write_to_DB          := FALSE;
1145 
1146     --  Instruct API to clear its request table
1147 
1148     l_control_rec.clear_api_cache      := FALSE;
1149     l_control_rec.clear_api_requests   := TRUE;
1150 
1151     -- oe_debug_pub.add('Calling  QP_Currency_PVT.Process_Currency from F package; Process_Object');
1152     --  Call QP_Currency_PVT.Process_Currency
1153 
1154     QP_Currency_PVT.Process_Currency
1155     (   p_api_version_number          => 1.0
1156     ,   p_init_msg_list               => FND_API.G_TRUE
1157     ,   x_return_status               => l_return_status
1158     ,   x_msg_count                   => x_msg_count
1159     ,   x_msg_data                    => x_msg_data
1160     ,   p_control_rec                 => l_control_rec
1161     ,   x_CURR_LISTS_rec              => l_x_CURR_LISTS_rec
1162     ,   x_CURR_DETAILS_tbl            => l_x_CURR_DETAILS_tbl
1163     );
1164     -- oe_debug_pub.add('AFTER Calling  QP_Currency_PVT.Process_Currency from F package; Process_Object');
1165 
1166     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1167         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1168     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1169         RAISE FND_API.G_EXC_ERROR;
1170     END IF;
1171 
1172 
1173     --  Set return status.
1174 
1175     x_return_status := FND_API.G_RET_STS_SUCCESS;
1176 
1177     --  Get message count and data
1178 
1179     OE_MSG_PUB.Count_And_Get
1180     (   p_count                       => x_msg_count
1181     ,   p_data                        => x_msg_data
1182     );
1183 
1184 
1185 EXCEPTION
1186 
1187     WHEN FND_API.G_EXC_ERROR THEN
1188 
1189         x_return_status := FND_API.G_RET_STS_ERROR;
1190 
1191         --  Get message count and data
1192 
1193         OE_MSG_PUB.Count_And_Get
1194         (   p_count                       => x_msg_count
1195         ,   p_data                        => x_msg_data
1196         );
1197 
1198     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1199 
1200         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1201 
1202         --  Get message count and data
1203 
1204         OE_MSG_PUB.Count_And_Get
1205         (   p_count                       => x_msg_count
1206         ,   p_data                        => x_msg_data
1207         );
1208 
1209     WHEN OTHERS THEN
1210 
1211         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1212 
1213         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1214         THEN
1215             OE_MSG_PUB.Add_Exc_Msg
1216             (   G_PKG_NAME
1217             ,   'Process_Object'
1218             );
1219         END IF;
1220 
1221         --  Get message count and data
1222 
1223         OE_MSG_PUB.Count_And_Get
1224         (   p_count                       => x_msg_count
1225         ,   p_data                        => x_msg_data
1226         );
1227 
1228 END Process_Object;
1229 
1230 --  Procedure       lock_Row
1231 --
1232 
1233 PROCEDURE Lock_Row
1234 (   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1235 ,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
1236 ,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
1237 ,   p_attribute1                    IN  VARCHAR2
1238 ,   p_attribute10                   IN  VARCHAR2
1239 ,   p_attribute11                   IN  VARCHAR2
1240 ,   p_attribute12                   IN  VARCHAR2
1244 ,   p_attribute2                    IN  VARCHAR2
1241 ,   p_attribute13                   IN  VARCHAR2
1242 ,   p_attribute14                   IN  VARCHAR2
1243 ,   p_attribute15                   IN  VARCHAR2
1245 ,   p_attribute3                    IN  VARCHAR2
1246 ,   p_attribute4                    IN  VARCHAR2
1247 ,   p_attribute5                    IN  VARCHAR2
1248 ,   p_attribute6                    IN  VARCHAR2
1249 ,   p_attribute7                    IN  VARCHAR2
1250 ,   p_attribute8                    IN  VARCHAR2
1251 ,   p_attribute9                    IN  VARCHAR2
1252 ,   p_base_currency_code            IN  VARCHAR2
1253 ,   p_context                       IN  VARCHAR2
1254 ,   p_created_by                    IN  NUMBER
1255 ,   p_creation_date                 IN  DATE
1256 ,   p_currency_header_id            IN  NUMBER
1257 ,   p_description                   IN  VARCHAR2
1258 ,   p_last_updated_by               IN  NUMBER
1259 ,   p_last_update_date              IN  DATE
1260 ,   p_last_update_login             IN  NUMBER
1261 ,   p_name                          IN  VARCHAR2
1262 ,   p_program_application_id        IN  NUMBER
1263 ,   p_program_id                    IN  NUMBER
1264 ,   p_program_update_date           IN  DATE
1265 ,   p_request_id                    IN  NUMBER
1266 ,   p_base_rounding_factor          IN NUMBER
1267 ,   p_base_markup_operator          IN VARCHAR2
1268 ,   p_base_markup_value             IN NUMBER
1269 ,   p_base_markup_formula_id        IN NUMBER
1270 -- ,   p_row_id                        IN  ROWID  -- Commented by Sunil
1271 )
1272 IS
1273 l_return_status               VARCHAR2(1);
1274 l_CURR_LISTS_rec              QP_Currency_PUB.Curr_Lists_Rec_Type;
1275 l_x_CURR_LISTS_rec            QP_Currency_PUB.Curr_Lists_Rec_Type;
1276 l_x_CURR_DETAILS_rec          QP_Currency_PUB.Curr_Details_Rec_Type;
1277 l_x_CURR_DETAILS_tbl          QP_Currency_PUB.Curr_Details_Tbl_Type;
1278 BEGIN
1279 
1280     --  Load CURR_LISTS record
1281 
1282     l_CURR_LISTS_rec.attribute1    := p_attribute1;
1283     l_CURR_LISTS_rec.attribute10   := p_attribute10;
1284     l_CURR_LISTS_rec.attribute11   := p_attribute11;
1285     l_CURR_LISTS_rec.attribute12   := p_attribute12;
1286     l_CURR_LISTS_rec.attribute13   := p_attribute13;
1287     l_CURR_LISTS_rec.attribute14   := p_attribute14;
1288     l_CURR_LISTS_rec.attribute15   := p_attribute15;
1289     l_CURR_LISTS_rec.attribute2    := p_attribute2;
1290     l_CURR_LISTS_rec.attribute3    := p_attribute3;
1291     l_CURR_LISTS_rec.attribute4    := p_attribute4;
1292     l_CURR_LISTS_rec.attribute5    := p_attribute5;
1293     l_CURR_LISTS_rec.attribute6    := p_attribute6;
1294     l_CURR_LISTS_rec.attribute7    := p_attribute7;
1295     l_CURR_LISTS_rec.attribute8    := p_attribute8;
1296     l_CURR_LISTS_rec.attribute9    := p_attribute9;
1297     l_CURR_LISTS_rec.base_currency_code := p_base_currency_code;
1298     l_CURR_LISTS_rec.context       := p_context;
1299     l_CURR_LISTS_rec.created_by    := p_created_by;
1300     l_CURR_LISTS_rec.creation_date := p_creation_date;
1301     l_CURR_LISTS_rec.currency_header_id := p_currency_header_id;
1302     l_CURR_LISTS_rec.description   := p_description;
1303     l_CURR_LISTS_rec.last_updated_by := p_last_updated_by;
1304     l_CURR_LISTS_rec.last_update_date := p_last_update_date;
1305     l_CURR_LISTS_rec.last_update_login := p_last_update_login;
1306     l_CURR_LISTS_rec.name          := p_name;
1307     l_CURR_LISTS_rec.program_application_id := p_program_application_id;
1308     l_CURR_LISTS_rec.program_id    := p_program_id;
1309     l_CURR_LISTS_rec.program_update_date := p_program_update_date;
1310     l_CURR_LISTS_rec.request_id    := p_request_id;
1311     l_CURR_LISTS_rec.base_rounding_factor    := p_base_rounding_factor;
1312     l_CURR_LISTS_rec.base_markup_operator    := p_base_markup_operator;
1313     l_CURR_LISTS_rec.base_markup_value    := p_base_markup_value;
1314     l_CURR_LISTS_rec.base_markup_formula_id    := p_base_markup_formula_id;
1315     -- l_CURR_LISTS_rec.row_id        := p_row_id;  -- Commented by Sunil
1316 
1317     -- oe_debug_pub.add('Inside QPXFCURB Lock_Row; p_base_markup_value: '||p_base_markup_value);
1318     -- oe_debug_pub.add('Inside QPXFCURB Lock_Row; l_CURR_LISTS_rec.operation: '||l_CURR_LISTS_rec.operation);
1319     --  Call QP_Currency_PVT.Lock_Currency
1320 
1321     QP_Currency_PVT.Lock_Currency
1322     (   p_api_version_number          => 1.0
1323     ,   p_init_msg_list               => FND_API.G_TRUE
1324     ,   x_return_status               => l_return_status
1325     ,   x_msg_count                   => x_msg_count
1326     ,   x_msg_data                    => x_msg_data
1327     ,   p_CURR_LISTS_rec              => l_CURR_LISTS_rec
1328     ,   x_CURR_LISTS_rec              => l_x_CURR_LISTS_rec
1329     ,   x_CURR_DETAILS_tbl            => l_x_CURR_DETAILS_tbl
1330     );
1331 
1332     -- oe_debug_pub.add('Inside QPXFCURB Lock_Row; l_return_status: '||l_return_status);
1333 
1334     IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
1335         -- oe_debug_pub.add('Inside QPXFCURB Lock_Row; p_base_markup_value: '||p_base_markup_value);
1336 
1337         --  Set DB flag and write record to cache.
1338 
1339         l_x_CURR_LISTS_rec.db_flag := FND_API.G_TRUE;
1340 
1341         Write_CURR_LISTS
1342         (   p_CURR_LISTS_rec              => l_x_CURR_LISTS_rec
1343         ,   p_db_record                   => TRUE
1344         );
1345 
1346     END IF;
1347         -- oe_debug_pub.add('Inside QPXFCURB Lock_Row; g_CURR_LISTS_rec.base_markup_value: '||g_CURR_LISTS_rec.base_markup_value);
1348         -- oe_debug_pub.add('Inside QPXFCURB Lock_Row; g_CURR_LISTS_rec.description: '||g_CURR_LISTS_rec.description);
1349 
1350     --  Set return status.
1351 
1352     x_return_status := l_return_status;
1353 
1354     --  Get message count and data
1355 
1356     OE_MSG_PUB.Count_And_Get
1357     (   p_count                       => x_msg_count
1358     ,   p_data                        => x_msg_data
1359     );
1360 
1361 
1362 EXCEPTION
1363 
1364     WHEN OTHERS THEN
1365 
1366         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1367         THEN
1368             OE_MSG_PUB.Add_Exc_Msg
1369             (   G_PKG_NAME
1370             ,   'Lock_Row'
1371             );
1372         END IF;
1373 
1374         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1375 
1376         --  Get message count and data
1377 
1378         OE_MSG_PUB.Count_And_Get
1379         (   p_count                       => x_msg_count
1380         ,   p_data                        => x_msg_data
1381         );
1382 
1383 
1384 
1385 END Lock_Row;
1386 
1387 --  Procedures maintaining CURR_LISTS record cache.
1388 
1389 PROCEDURE Write_CURR_LISTS
1390 (   p_CURR_LISTS_rec                IN  QP_Currency_PUB.Curr_Lists_Rec_Type
1391 ,   p_db_record                     IN  BOOLEAN := FALSE
1392 )
1393 IS
1394 BEGIN
1395 
1396     g_CURR_LISTS_rec := p_CURR_LISTS_rec;
1397 
1398     IF p_db_record THEN
1399 
1400         g_db_CURR_LISTS_rec := p_CURR_LISTS_rec;
1401 
1402     END IF;
1403 
1404 END Write_Curr_Lists;
1405 
1406 FUNCTION Get_CURR_LISTS
1407 (   p_db_record                     IN  BOOLEAN := FALSE
1408 ,   p_currency_header_id            IN  NUMBER
1409 )
1410 RETURN QP_Currency_PUB.Curr_Lists_Rec_Type
1411 IS
1412 BEGIN
1413 
1414     -- oe_debug_pub.add('Inside QPXFCURB.Get_CURR_LISTS; p_currency_header_id :'||p_currency_header_id);
1415     -- oe_debug_pub.add('Inside QPXFCURB.Get_CURR_LISTS; g_CURR_LISTS_rec.currency_header_id :'||g_CURR_LISTS_rec.currency_header_id);
1416     -- oe_debug_pub.add('Inside QPXFCURB.Get_CURR_LISTS; g_CURR_LISTS_rec.base_markup_value :'||g_CURR_LISTS_rec.base_markup_value);
1417     -- oe_debug_pub.add('Inside QPXFCURB.Get_CURR_LISTS; g_CURR_LISTS_rec.description :'||g_CURR_LISTS_rec.description);
1418     IF  p_currency_header_id <> g_CURR_LISTS_rec.currency_header_id
1419     THEN
1420 
1421         -- oe_debug_pub.add('BEFORE CALLING QP_Curr_Lists_Util.Query_Row');
1422         --  Query row from DB
1423 
1424         g_CURR_LISTS_rec := QP_Curr_Lists_Util.Query_Row
1425         (   p_currency_header_id          => p_currency_header_id
1426         );
1427 
1428         g_CURR_LISTS_rec.db_flag       := FND_API.G_TRUE;
1429 
1430         --  Load DB record
1431 
1432         g_db_CURR_LISTS_rec            := g_CURR_LISTS_rec;
1433 
1434     END IF;
1435 
1436     IF p_db_record THEN
1437 
1438         RETURN g_db_CURR_LISTS_rec;
1439 
1440     ELSE
1441 
1442         RETURN g_CURR_LISTS_rec;
1443 
1444     END IF;
1445 
1446 END Get_Curr_Lists;
1447 
1448 PROCEDURE Clear_Curr_Lists
1449 IS
1450 BEGIN
1451 
1452     -- oe_debug_pub.add('CLEARING g_CURR_LISTS_rec and g_db_CURR_LISTS_rec from Clear_Curr_Lists');
1453     g_CURR_LISTS_rec               := QP_Currency_PUB.G_MISS_CURR_LISTS_REC;
1454     g_db_CURR_LISTS_rec            := QP_Currency_PUB.G_MISS_CURR_LISTS_REC;
1455 
1456 END Clear_Curr_Lists;
1457 
1458 END QP_QP_Form_Curr_Lists;