DBA Data[Home] [Help]

PACKAGE BODY: APPS.QP_QP_FORM_CURR_DETAILS

Source


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