DBA Data[Home] [Help]

PACKAGE BODY: APPS.OE_OE_FORM_HEADER_PAYMENT

Source


1 PACKAGE BODY OE_OE_Form_Header_Payment AS
2 /* $Header: OEXFHPMB.pls 120.4 2006/07/25 11:51:47 ppnair noship $ */
3 
4 --  Global constant holding the package name
5 
6 G_PKG_NAME                    CONSTANT VARCHAR2(30) := 'OE_OE_Form_Header_Payment';
7 
8 --  Global variables holding cached record.
9 
10 g_Header_Payment_rec          OE_Order_PUB.Header_PAYMENT_Rec_Type;
11 g_db_Header_Payment_rec       OE_Order_PUB.Header_PAYMENT_Rec_Type;
12 
13 --  Forward declaration of procedures maintaining entity record cache.
14 
15 PROCEDURE Write_Header_Payment
16 (   p_Header_Payment_rec            IN  OE_Order_PUB.Header_PAYMENT_Rec_Type
17 ,   p_db_record                     IN  BOOLEAN := FALSE
18 );
19 
20 PROCEDURE Get_Header_Payment
21 (   p_db_record                     IN  BOOLEAN := FALSE
22 ,   p_payment_number                    IN  NUMBER
23 ,   p_header_id                         IN  NUMBER
24 ,   x_header_Payment_rec            OUT NOCOPY OE_Order_PUB.Header_PAYMENT_Rec_Type
25 );
26 
27 PROCEDURE Clear_Header_Payment;
28 
29 --  Global variable holding performed operations.
30 
31 g_opr__tbl                    OE_Order_PUB.Header_Payment_Tbl_Type;
32 
33 --  Procedure : Default_Attributes
34 --
35 
36 PROCEDURE Default_Attributes
37 (   x_return_status                 OUT NOCOPY VARCHAR2
38 ,   x_msg_count                     OUT NOCOPY NUMBER
39 ,   x_msg_data                      OUT NOCOPY VARCHAR2
40 ,   p_payment_number                IN  NUMBER
41 ,   p_header_id                     IN  NUMBER
42 ,   x_payment_number                OUT NOCOPY NUMBER
43 ,   x_attribute1                    OUT NOCOPY VARCHAR2
44 ,   x_attribute2                    OUT NOCOPY VARCHAR2
45 ,   x_attribute3                    OUT NOCOPY VARCHAR2
46 ,   x_attribute4                    OUT NOCOPY VARCHAR2
47 ,   x_attribute5                    OUT NOCOPY VARCHAR2
48 ,   x_attribute6                    OUT NOCOPY VARCHAR2
49 ,   x_attribute7                    OUT NOCOPY VARCHAR2
50 ,   x_attribute8                    OUT NOCOPY VARCHAR2
51 ,   x_attribute9                    OUT NOCOPY VARCHAR2
52 ,   x_attribute10                   OUT NOCOPY VARCHAR2
53 ,   x_attribute11                   OUT NOCOPY VARCHAR2
54 ,   x_attribute12                   OUT NOCOPY VARCHAR2
55 ,   x_attribute13                   OUT NOCOPY VARCHAR2
56 ,   x_attribute14                   OUT NOCOPY VARCHAR2
57 ,   x_attribute15                   OUT NOCOPY VARCHAR2
58 ,   x_context                       OUT NOCOPY VARCHAR2
59 ,   x_header_id                     OUT NOCOPY NUMBER
60 ,   x_line_id                       OUT NOCOPY NUMBER
61 ,   x_check_number                  OUT NOCOPY VARCHAR2
62 ,   x_credit_card_approval_code     OUT NOCOPY VARCHAR2
63 ,   x_credit_card_approval_date     OUT NOCOPY DATE
64 ,   x_credit_card_code              OUT NOCOPY VARCHAR2
65 ,   x_credit_card_expiration_date   OUT NOCOPY DATE
66 ,   x_credit_card_holder_name       OUT NOCOPY VARCHAR2
67 ,   x_credit_card_number            OUT NOCOPY VARCHAR2
68 ,   x_payment_level_code            OUT NOCOPY VARCHAR2
69 ,   x_commitment_applied_amount     OUT NOCOPY NUMBER
70 ,   x_commitment_interfaced_amount  OUT NOCOPY NUMBER
71 ,   x_payment_amount                OUT NOCOPY NUMBER
72 ,   x_payment_collection_event      OUT NOCOPY VARCHAR2
73 ,   x_payment_trx_id                OUT NOCOPY NUMBER
74 ,   x_payment_type_code             OUT NOCOPY VARCHAR2
75 ,   x_payment_set_id                OUT NOCOPY NUMBER
76 ,   x_prepaid_amount                OUT NOCOPY NUMBER
77 ,   x_receipt_method_id             OUT NOCOPY NUMBER
78 ,   x_tangible_id                   OUT NOCOPY VARCHAR2
79 ,   x_receipt_method                 OUT NOCOPY VARCHAR2
80 ,   x_pmt_collection_event_name  OUT NOCOPY VARCHAR2
81 ,   x_payment_type                  OUT NOCOPY VARCHAR2
82 ,   x_defer_processing_flag OUT NOCOPY VARCHAR2
83 ,   x_trxn_extension_id     OUT NOCOPY NUMBER
84 ,   x_instrument_security_code OUT NOCOPY VARCHAR2 --R12 CC Encryption
85 )
86 IS
87 l_Header_Payment_val_rec      OE_Order_PUB.Header_Payment_Val_Rec_Type;
88 l_control_rec                 OE_GLOBALS.Control_Rec_Type;
89 l_return_status               VARCHAR2(1);
90 l_x_Header_Payment_tbl        OE_Order_PUB.Header_Payment_Tbl_Type;
91 l_x_Old_Header_Payment_tbl        OE_Order_PUB.Header_Payment_Tbl_Type;
92 
93 --
94 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
95 --
96 BEGIN
97 
98     IF l_debug_level  > 0 THEN
99         oe_debug_pub.add(  'ENTERING OE_OE_FORM_HEADER_PAYMENT.DEFAULT_ATTRIBUTES' , 1 ) ;
100     END IF;
101 
102     -- Set the UI flag
103     OE_GLOBALS.G_UI_FLAG := TRUE;
104 
105     --  Set control flags.
106 
107     l_control_rec.controlled_operation := TRUE;
108     l_control_rec.check_security       := TRUE;
109     l_control_rec.default_attributes   := TRUE;
110     l_control_rec.change_attributes    := TRUE;
111 
112     l_control_rec.clear_dependents     := FALSE;
113     l_control_rec.validate_entity      := FALSE;
114     l_control_rec.write_to_DB          := FALSE;
115     l_control_rec.process              := FALSE;
116 
117     --  Instruct API to retain its caches
118 
119     l_control_rec.clear_api_cache      := FALSE;
120     l_control_rec.clear_api_requests   := FALSE;
121 
122     --  Load IN parameters if any exist
123     l_x_Header_Payment_tbl(1):=OE_ORDER_PUB.G_MISS_HEADER_PAYMENT_REC;
124     l_x_old_Header_Payment_Tbl(1):=OE_ORDER_PUB.G_MISS_HEADER_PAYMENT_REC;
125 
126     l_x_Header_Payment_tbl(1).header_id                := p_header_id;
127     l_x_Header_Payment_tbl(1).payment_number           := p_payment_number;
128 
129     l_x_Header_Payment_tbl(1).payment_collection_event := 'INVOICE';
130     l_x_Header_Payment_tbl(1).payment_level_code := 'ORDER';
131 
132     --  Defaulting of flex values is currently done by the form.
133     --  Set flex attributes to NULL in order to avoid defaulting them.
134 
135     l_x_header_Payment_tbl(1).attribute1               := NULL;
136     l_x_header_Payment_tbl(1).attribute2               := NULL;
137     l_x_header_Payment_tbl(1).attribute3               := NULL;
138     l_x_header_Payment_tbl(1).attribute4               := NULL;
139     l_x_header_Payment_tbl(1).attribute5               := NULL;
140     l_x_header_Payment_tbl(1).attribute6               := NULL;
141     l_x_header_Payment_tbl(1).attribute7               := NULL;
142     l_x_header_Payment_tbl(1).attribute8               := NULL;
143     l_x_header_Payment_tbl(1).attribute9               := NULL;
144     l_x_header_Payment_tbl(1).attribute10              := NULL;
145     l_x_header_Payment_tbl(1).attribute11              := NULL;
146     l_x_header_Payment_tbl(1).attribute12              := NULL;
147     l_x_header_Payment_tbl(1).attribute13              := NULL;
148     l_x_header_Payment_tbl(1).attribute14              := NULL;
149     l_x_header_Payment_tbl(1).attribute15              := NULL;
150     l_x_header_Payment_tbl(1).context                  := NULL;
151 
152     --  Set Operation to Create
153 
154     l_x_Header_Payment_tbl(1).operation := OE_GLOBALS.G_OPR_CREATE;
155 
156     --  Populate Header_Payment table
157 
158 
159     --  Call OE_Order_PVT.Process_order
160 
161     OE_Order_PVT.Header_Payments
162     (   p_validation_level            => FND_API.G_VALID_LEVEL_NONE
163     ,   p_init_msg_list               => FND_API.G_TRUE
164     ,   p_control_rec                 => l_control_rec
165     ,   p_x_Header_Payment_tbl        => l_x_Header_Payment_tbl
166     ,   p_x_old_Header_Payment_tbl    => l_x_old_Header_Payment_tbl
167     ,   x_return_Status               => l_return_status
168     );
169 
170     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
171         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
172     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
173         RAISE FND_API.G_EXC_ERROR;
174     END IF;
175 
176     --  Load OUT parameters.
177 
178     x_attribute1                   := l_x_header_Payment_tbl(1).attribute1;
179     x_attribute10                  := l_x_header_Payment_tbl(1).attribute10;
180     x_attribute11                  := l_x_header_Payment_tbl(1).attribute11;
181     x_attribute12                  := l_x_header_Payment_tbl(1).attribute12;
182     x_attribute13                  := l_x_header_Payment_tbl(1).attribute13;
183     x_attribute14                  := l_x_header_Payment_tbl(1).attribute14;
184     x_attribute15                  := l_x_header_Payment_tbl(1).attribute15;
185     x_attribute2                   := l_x_header_Payment_tbl(1).attribute2;
186     x_attribute3                   := l_x_header_Payment_tbl(1).attribute3;
187     x_attribute4                   := l_x_header_Payment_tbl(1).attribute4;
188     x_attribute5                   := l_x_header_Payment_tbl(1).attribute5;
189     x_attribute6                   := l_x_header_Payment_tbl(1).attribute6;
190     x_attribute7                   := l_x_header_Payment_tbl(1).attribute7;
191     x_attribute8                   := l_x_header_Payment_tbl(1).attribute8;
192     x_attribute9                   := l_x_header_Payment_tbl(1).attribute9;
193     x_context                      := l_x_header_Payment_tbl(1).context;
194     x_payment_number               := l_x_header_Payment_tbl(1).payment_number;
195     x_header_id                    := l_x_header_Payment_tbl(1).header_id;
196     x_line_id                      := l_x_header_Payment_tbl(1).line_id;
197     x_check_number                 := l_x_header_Payment_tbl(1).check_number;
198     x_credit_card_approval_code    := l_x_header_Payment_tbl(1).credit_card_approval_code;
199     x_credit_card_approval_date    := l_x_header_Payment_tbl(1).credit_card_approval_date;
200     x_credit_card_code             := l_x_header_Payment_tbl(1).credit_card_code;
201     x_credit_card_expiration_date  := l_x_header_Payment_tbl(1).credit_card_expiration_date;
202     x_credit_card_holder_name      := l_x_header_Payment_tbl(1).credit_card_holder_name;
203     x_credit_card_number           := l_x_header_Payment_tbl(1).credit_card_number;
204     x_payment_level_code           := l_x_header_Payment_tbl(1).payment_level_code;
205     x_commitment_applied_amount    := l_x_header_Payment_tbl(1).commitment_applied_amount;
206     x_commitment_interfaced_amount := l_x_header_Payment_tbl(1).commitment_interfaced_amount;
207     x_payment_amount               := l_x_header_Payment_tbl(1).payment_amount;
208     x_payment_collection_event     := l_x_header_Payment_tbl(1).payment_collection_event;
209     x_payment_trx_id               := l_x_header_Payment_tbl(1).payment_trx_id;
210     x_payment_type_code            := l_x_header_Payment_tbl(1).payment_type_code;
211     x_payment_set_id               := l_x_header_Payment_tbl(1).payment_set_id;
212     x_prepaid_amount               := l_x_header_Payment_tbl(1).prepaid_amount;
213     x_receipt_method_id            := l_x_header_Payment_tbl(1).receipt_method_id;
214     x_tangible_id                  := l_x_header_Payment_tbl(1).tangible_id;
215     x_defer_processing_flag := l_x_header_Payment_tbl(1).defer_payment_processing_flag;
216     x_trxn_extension_id     := l_x_header_Payment_tbl(1).trxn_extension_id;   --R12 process order api changes
217     x_instrument_security_code := l_x_header_Payment_tbl(1).instrument_security_code; --R12 CC Encryption
218 
219     --  Load display out parameters if any
220 
221     l_Header_Payment_val_rec := OE_Header_Payment_Util.Get_Values
222     (   p_Header_Payment_rec          => l_x_Header_Payment_tbl(1)
223     );
224     x_receipt_method                    := l_Header_Payment_val_rec.receipt_method;
225     x_pmt_collection_event_name     := l_Header_Payment_val_rec.payment_collection_event_name;
226     x_payment_type     := l_Header_Payment_val_rec.payment_type;
227 
228     --  Write to cache.
229     --  Set db_flag to False before writing to cache
230 
231     l_x_Header_Payment_tbl(1).db_flag := FND_API.G_FALSE;
232 
233     Write_Header_Payment
234     (   p_Header_Payment_rec          => l_x_Header_PAYMENT_tbl(1)
235     );
236 
237     -- Re-set the UI flag to FALSE
238     OE_GLOBALS.G_UI_FLAG := FALSE;
239 
240     --  Set return status.
241 
242     x_return_status := FND_API.G_RET_STS_SUCCESS;
243 
244     --  Get message count and data
245 
246     oe_msg_pub.Count_And_Get
247     (   p_count                       => x_msg_count
248     ,   p_data                        => x_msg_data
249     );
250 
251     IF l_debug_level  > 0 THEN
252         oe_debug_pub.add(  'EXITING OE_OE_FORM_HEADER_Payment.DEFAULT_ATTRIBUTES' , 1 ) ;
253     END IF;
254 
255 EXCEPTION
256 
257     WHEN FND_API.G_EXC_ERROR THEN
258 
259 	   OE_GLOBALS.G_UI_FLAG := FALSE;
260 
261         x_return_status := FND_API.G_RET_STS_ERROR;
262 
263         --  Get message count and data
264 
265         oe_msg_pub.Count_And_Get
266         (   p_count                       => x_msg_count
267         ,   p_data                        => x_msg_data
268         );
269 
270     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
271 
272 	   OE_GLOBALS.G_UI_FLAG := FALSE;
273 
274         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
275 
276         --  Get message count and data
277 
278         oe_msg_pub.Count_And_Get
279         (   p_count                       => x_msg_count
280         ,   p_data                        => x_msg_data
281         );
282 
283     WHEN OTHERS THEN
284 
285 	   OE_GLOBALS.G_UI_FLAG := FALSE;
286 
287         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
288 
289         IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
290         THEN
291             oe_msg_pub.Add_Exc_Msg
292             (   G_PKG_NAME
293             ,   'Default_Attributes'
294             );
295         END IF;
296 
297         --  Get message count and data
298 
299         oe_msg_pub.Count_And_Get
300         (   p_count                       => x_msg_count
301         ,   p_data                        => x_msg_data
302         );
303 
304 END Default_Attributes;
305 
306 --  Procedure   :   Change_Attribute
307 --
308 
309 PROCEDURE Change_Attribute
310 (   x_return_status                 OUT NOCOPY VARCHAR2
311 ,   x_msg_count                     OUT NOCOPY NUMBER
312 ,   x_msg_data                      OUT NOCOPY VARCHAR2
313 ,   p_payment_number                IN  NUMBER
314 ,   p_header_id                     IN  NUMBER
315 ,   p_attr_id                       IN  NUMBER
316 ,   p_attr_value                    IN  VARCHAR2
317 ,   p_attr_id_tbl                   IN  Number_Tbl_Type --R12 CC Encryption
318 ,   p_attr_value_tbl                IN  Varchar2_Tbl_Type --R12 CC Encryption
319 ,   p_attribute1                    IN  VARCHAR2
320 ,   p_attribute2                    IN  VARCHAR2
321 ,   p_attribute3                    IN  VARCHAR2
322 ,   p_attribute4                    IN  VARCHAR2
323 ,   p_attribute5                    IN  VARCHAR2
324 ,   p_attribute6                    IN  VARCHAR2
325 ,   p_attribute7                    IN  VARCHAR2
326 ,   p_attribute8                    IN  VARCHAR2
327 ,   p_attribute9                    IN  VARCHAR2
328 ,   p_attribute10                   IN  VARCHAR2
329 ,   p_attribute11                   IN  VARCHAR2
330 ,   p_attribute12                   IN  VARCHAR2
331 ,   p_attribute13                   IN  VARCHAR2
332 ,   p_attribute14                   IN  VARCHAR2
333 ,   p_attribute15                   IN  VARCHAR2
334 ,   p_context                       IN  VARCHAR2
335 ,   x_attribute1                    OUT NOCOPY VARCHAR2
336 ,   x_attribute2                    OUT NOCOPY VARCHAR2
337 ,   x_attribute3                    OUT NOCOPY VARCHAR2
338 ,   x_attribute4                    OUT NOCOPY VARCHAR2
339 ,   x_attribute5                    OUT NOCOPY VARCHAR2
340 ,   x_attribute6                    OUT NOCOPY VARCHAR2
341 ,   x_attribute7                    OUT NOCOPY VARCHAR2
342 ,   x_attribute8                    OUT NOCOPY VARCHAR2
343 ,   x_attribute9                    OUT NOCOPY VARCHAR2
344 ,   x_attribute10                   OUT NOCOPY VARCHAR2
345 ,   x_attribute11                   OUT NOCOPY VARCHAR2
346 ,   x_attribute12                   OUT NOCOPY VARCHAR2
347 ,   x_attribute13                   OUT NOCOPY VARCHAR2
348 ,   x_attribute14                   OUT NOCOPY VARCHAR2
349 ,   x_attribute15                   OUT NOCOPY VARCHAR2
350 ,   x_context                       OUT NOCOPY VARCHAR2
351 ,   x_payment_number                OUT NOCOPY NUMBER
352 ,   x_header_id                     OUT NOCOPY NUMBER
353 ,   x_line_id                       OUT NOCOPY NUMBER
354 ,   x_check_number                  OUT NOCOPY VARCHAR2
355 ,   x_credit_card_approval_code     OUT NOCOPY VARCHAR2
356 ,   x_credit_card_approval_date     OUT NOCOPY DATE
357 ,   x_credit_card_code              OUT NOCOPY VARCHAR2
358 ,   x_credit_card_expiration_date   OUT NOCOPY DATE
359 ,   x_credit_card_holder_name       OUT NOCOPY VARCHAR2
360 ,   x_credit_card_number            OUT NOCOPY VARCHAR2
361 ,   x_payment_level_code            OUT NOCOPY VARCHAR2
362 ,   x_commitment_applied_amount     OUT NOCOPY NUMBER
363 ,   x_commitment_interfaced_amount  OUT NOCOPY NUMBER
364 ,   x_payment_amount                OUT NOCOPY NUMBER
365 ,   x_payment_collection_event      OUT NOCOPY VARCHAR2
366 ,   x_payment_trx_id                OUT NOCOPY NUMBER
367 ,   x_payment_type_code             OUT NOCOPY VARCHAR2
368 ,   x_payment_set_id                OUT NOCOPY NUMBER
369 ,   x_prepaid_amount                OUT NOCOPY NUMBER
370 ,   x_receipt_method_id             OUT NOCOPY NUMBER
371 ,   x_tangible_id                   OUT NOCOPY VARCHAR2
372 ,   x_receipt_method                OUT NOCOPY VARCHAR2
373 ,   x_pmt_collection_event_name  OUT NOCOPY VARCHAR2
374 ,   x_payment_type                  OUT NOCOPY VARCHAR2
375 ,   x_defer_processing_flag OUT NOCOPY VARCHAR2
376 ,   x_instrument_security_code OUT NOCOPY VARCHAR2 --R12 CC Encryption
377 )
378 IS
379 l_Header_Payment_rec          OE_Order_PUB.Header_PAYMENT_Rec_Type;
380 l_Header_Payment_val_rec      OE_Order_PUB.Header_PAYMENT_Val_Rec_Type;
381 l_x_Header_Payment_tbl          OE_Order_PUB.Header_PAYMENT_Tbl_Type;
382 l_x_old_Header_Payment_tbl      OE_Order_PUB.Header_PAYMENT_Tbl_Type;
383 l_control_rec                 OE_GLOBALS.Control_Rec_Type;
384 l_return_status               VARCHAR2(1);
385 
386 --
387 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
388 --
389 l_date_format_mask            VARCHAR2(30) := 'DD-MON-RRRR HH24:MI:SS';
390 
391 BEGIN
392 
393     IF l_debug_level  > 0 THEN
394         oe_debug_pub.add(  'ENTERING OE_OE_FORM_HEADER_PAYMENT.CHANGE_ATTRIBUTE' , 1 ) ;
395         oe_debug_pub.add(' p_attr_id is : ' || p_attr_id);
396     END IF;
397 
398     -- Set the UI flag
399     OE_GLOBALS.G_UI_FLAG := TRUE;
400 
401     --  Set control flags.
402 
403     l_control_rec.controlled_operation := TRUE;
404     l_control_rec.check_security       := TRUE;
405     l_control_rec.clear_dependents     := TRUE;
406     l_control_rec.default_attributes   := TRUE;
407     l_control_rec.change_attributes    := TRUE;
408 
409     l_control_rec.validate_entity      := FALSE;
410     l_control_rec.write_to_DB          := FALSE;
411     l_control_rec.process              := FALSE;
412 
413     --  Instruct API to retain its caches
414 
415     l_control_rec.clear_api_cache      := FALSE;
416     l_control_rec.clear_api_requests   := FALSE;
417 
418     --  Read Header_Payment from cache
419     Get_Header_Payment
420     (   p_db_record                   => FALSE
421     ,   p_payment_number              => p_payment_number
422     ,   p_header_id                   => p_header_id
423     ,   x_header_Payment_rec          => l_x_Header_PAYMENT_tbl(1)
424     );
425 
426     l_x_old_Header_Payment_tbl(1)       := l_x_Header_PAYMENT_tbl(1);
427 
428 
429     --R12 CC Encryption
430     --The change attribute is now changed to handle change attributes
431     --for multiple attributes in a single call. To support this, a
432     --new procedure Copy_Attribute_To_Rec has been introduced. For any
433     --new attributes that is added, the handling is done in this new
434     --procedure going forward.
435 
436     Copy_Attribute_To_Rec
437     (   p_attr_id         => p_attr_id
438     ,   p_attr_value      => p_attr_value
439     ,   x_header_payment_tbl => l_x_Header_Payment_tbl
440     ,   x_old_header_payment_tbl => l_x_old_Header_Payment_tbl
441     ,   p_attribute1 => p_attribute1
442     ,   p_attribute2 => p_attribute2
443     ,   p_attribute3 => p_attribute3
444     ,   p_attribute4 => p_attribute4
445     ,   p_attribute5 => p_attribute5
446     ,   p_attribute6 => p_attribute6
447     ,   p_attribute7 => p_attribute7
448     ,   p_attribute8 => p_attribute8
449     ,   p_attribute9  => p_attribute9
450     ,   p_attribute10 => p_attribute10
451     ,   p_attribute11 => p_attribute11
452     ,   p_attribute12 => p_attribute12
453     ,   p_attribute13 => p_attribute13
454     ,   p_attribute14 => p_attribute14
455     ,   p_attribute15 => p_attribute15
456     ,   p_context     => p_context
457     );
458 
459     FOR l_index IN 1..p_attr_id_tbl.COUNT LOOP
460 
461            Copy_Attribute_To_Rec
462 	    (p_attr_id         => p_attr_id_tbl(l_index)
463 	    ,p_attr_value      => p_attr_value_tbl(l_index)
464 	    ,x_header_payment_tbl     => l_x_Header_Payment_tbl
465 	    ,x_old_header_payment_tbl => l_x_old_Header_Payment_tbl
466 	    ,   p_attribute1 => p_attribute1
467 	    ,   p_attribute2 => p_attribute2
468 	    ,   p_attribute3 => p_attribute3
469 	    ,   p_attribute4 => p_attribute4
470 	    ,   p_attribute5 => p_attribute5
471 	    ,   p_attribute6 => p_attribute6
472 	    ,   p_attribute7 => p_attribute7
473 	    ,   p_attribute8 => p_attribute8
474 	    ,   p_attribute9  => p_attribute9
475 	    ,   p_attribute10 => p_attribute10
476 	    ,   p_attribute11 => p_attribute11
477 	    ,   p_attribute12 => p_attribute12
478 	    ,   p_attribute13 => p_attribute13
479 	    ,   p_attribute14 => p_attribute14
480 	    ,   p_attribute15 => p_attribute15
481 	    ,   p_context     => p_context
482             );
483 
484     END LOOP;
485 
486     --  Set Operation.
487 
488     IF FND_API.To_Boolean(l_x_Header_Payment_tbl(1).db_flag) THEN
489         l_x_Header_Payment_tbl(1).operation := OE_GLOBALS.G_OPR_UPDATE;
490     ELSE
491         l_x_Header_Payment_tbl(1).operation := OE_GLOBALS.G_OPR_CREATE;
492     END IF;
493 
494     --  Populate Header_Payment table
495     l_header_Payment_rec:=l_x_Header_PAYMENT_Tbl(1);
496     --  Call OE_Order_PVT.Process_order
497 
498     oe_debug_pub.add('ren: before header_payments:  ' || p_attr_id);
499     oe_debug_pub.add('New Card number'||l_x_header_Payment_tbl(1).credit_card_number);
500     oe_debug_pub.add('New Card holder'||l_x_header_Payment_tbl(1).credit_card_holder_name);
501 
502     OE_Order_PVT.Header_Payments
503     (
504         p_validation_level              => FND_API.G_VALID_LEVEL_NONE
505     ,   p_init_msg_list               => FND_API.G_TRUE
506     ,   p_control_rec                   => l_control_rec
507     ,   p_x_Header_Payment_tbl          => l_x_Header_PAYMENT_tbl
508     ,   p_x_old_Header_Payment_tbl      => l_x_old_Header_PAYMENT_tbl
509     ,   x_return_status                 => l_return_status
510     );
511     oe_debug_pub.add('ren: after header_payments : ' || p_attr_id);
512     oe_debug_pub.add('New Holder name'||l_x_Header_Payment_Tbl(1).credit_card_holder_name);
513     oe_debug_pub.add('Old Holder name'||l_Header_Payment_rec.credit_card_holder_name);
514 
515 
516     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
517     oe_debug_pub.add('ren: unexp error header_payments : ' || p_attr_id);
518         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
519     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
520     oe_debug_pub.add('ren: exp error header_payments : ' || p_attr_id);
521         RAISE FND_API.G_EXC_ERROR;
522     END IF;
523 
524 
525     --  Init OUT parameters to missing.
526 
527     x_attribute1                   := FND_API.G_MISS_CHAR;
528     x_attribute2                   := FND_API.G_MISS_CHAR;
529     x_attribute3                   := FND_API.G_MISS_CHAR;
530     x_attribute4                   := FND_API.G_MISS_CHAR;
531     x_attribute5                   := FND_API.G_MISS_CHAR;
532     x_attribute6                   := FND_API.G_MISS_CHAR;
533     x_attribute7                   := FND_API.G_MISS_CHAR;
534     x_attribute8                   := FND_API.G_MISS_CHAR;
535     x_attribute9                   := FND_API.G_MISS_CHAR;
536     x_attribute10                  := FND_API.G_MISS_CHAR;
537     x_attribute11                  := FND_API.G_MISS_CHAR;
538     x_attribute12                  := FND_API.G_MISS_CHAR;
539     x_attribute13                  := FND_API.G_MISS_CHAR;
540     x_attribute14                  := FND_API.G_MISS_CHAR;
541     x_attribute15                  := FND_API.G_MISS_CHAR;
542     x_context                      := FND_API.G_MISS_CHAR;
543     x_check_number                 := FND_API.G_MISS_CHAR;
544     x_credit_card_approval_code    := FND_API.G_MISS_CHAR;
545     x_credit_card_approval_date    := FND_API.G_MISS_DATE;
546     x_credit_card_code             := FND_API.G_MISS_CHAR;
547     x_credit_card_expiration_date  := FND_API.G_MISS_DATE;
548     x_credit_card_holder_name      := FND_API.G_MISS_CHAR;
549     x_credit_card_number           := FND_API.G_MISS_CHAR;
550     x_payment_level_code           := FND_API.G_MISS_CHAR;
551     x_commitment_applied_amount    := FND_API.G_MISS_NUM;
552     x_commitment_interfaced_amount := FND_API.G_MISS_NUM;
553     x_payment_number               := FND_API.G_MISS_NUM;
554     x_header_id                    := FND_API.G_MISS_NUM;
555     x_line_id                      := FND_API.G_MISS_NUM;
556     x_payment_amount               := FND_API.G_MISS_NUM;
557     x_payment_collection_event     := FND_API.G_MISS_CHAR;
558     x_payment_trx_id               := FND_API.G_MISS_NUM;
559     x_payment_type_code            := FND_API.G_MISS_CHAR;
560     x_payment_set_id               := FND_API.G_MISS_NUM;
561     x_prepaid_amount               := FND_API.G_MISS_NUM;
562     x_receipt_method_id            := FND_API.G_MISS_NUM;
563     x_tangible_id                  := FND_API.G_MISS_CHAR;
564     x_defer_processing_flag	   := FND_API.G_MISS_CHAR;
565     x_instrument_security_code     := FND_API.G_MISS_CHAR; --R12 CC encryption
566 
567     --  Load display out parameters if any
568 
569     l_Header_Payment_val_rec := OE_Header_PAYMENT_Util.Get_Values
570     (   p_Header_Payment_rec          => l_x_Header_PAYMENT_tbl(1)
571     ,   p_old_Header_Payment_rec      => l_Header_PAYMENT_rec
572     );
573 
574     --  Return changed attributes.
575 
576     IF NOT OE_GLOBALS.Equal(l_x_header_Payment_tbl(1).attribute1,
577                             l_Header_Payment_rec.attribute1)
578     THEN
579         x_attribute1 := l_x_header_Payment_tbl(1).attribute1;
580     END IF;
581 
582     IF NOT OE_GLOBALS.Equal(l_x_Header_Payment_Tbl(1).attribute2,
583                             l_Header_Payment_rec.attribute2)
584     THEN
585         x_attribute2 := l_x_Header_Payment_Tbl(1).attribute2;
586     END IF;
587 
588     IF NOT OE_GLOBALS.Equal(l_x_Header_Payment_Tbl(1).attribute3,
589                             l_Header_Payment_rec.attribute3)
590     THEN
591         x_attribute3 := l_x_Header_Payment_Tbl(1).attribute3;
592     END IF;
593 
594     IF NOT OE_GLOBALS.Equal(l_x_Header_Payment_Tbl(1).attribute4,
595                             l_Header_Payment_rec.attribute4)
596     THEN
597         x_attribute4 := l_x_Header_Payment_Tbl(1).attribute4;
598     END IF;
599 
600     IF NOT OE_GLOBALS.Equal(l_x_Header_Payment_Tbl(1).attribute5,
601                             l_Header_Payment_rec.attribute5)
602     THEN
603         x_attribute5 := l_x_Header_Payment_Tbl(1).attribute5;
604     END IF;
605 
606     IF NOT OE_GLOBALS.Equal(l_x_Header_Payment_Tbl(1).attribute6,
607                             l_Header_Payment_rec.attribute6)
608     THEN
609         x_attribute6 := l_x_Header_Payment_Tbl(1).attribute6;
610     END IF;
611 
612     IF NOT OE_GLOBALS.Equal(l_x_Header_Payment_Tbl(1).attribute7,
613                             l_Header_Payment_rec.attribute7)
614     THEN
615         x_attribute7 := l_x_Header_Payment_Tbl(1).attribute7;
616     END IF;
617 
618     IF NOT OE_GLOBALS.Equal(l_x_Header_Payment_Tbl(1).attribute8,
619                             l_Header_Payment_rec.attribute8)
620     THEN
621         x_attribute8 := l_x_Header_Payment_Tbl(1).attribute8;
622     END IF;
623 
624     IF NOT OE_GLOBALS.Equal(l_x_Header_Payment_Tbl(1).attribute9,
625                             l_Header_Payment_rec.attribute9)
626     THEN
627         x_attribute9 := l_x_Header_Payment_Tbl(1).attribute9;
628     END IF;
629 
630     IF NOT OE_GLOBALS.Equal(l_x_header_Payment_tbl(1).attribute10,
631                             l_Header_Payment_rec.attribute10)
632     THEN
633         x_attribute10 := l_x_header_Payment_tbl(1).attribute10;
634     END IF;
635 
636     IF NOT OE_GLOBALS.Equal(l_x_header_Payment_tbl(1).attribute11,
637                             l_Header_Payment_rec.attribute11)
638     THEN
639         x_attribute11 := l_x_header_Payment_tbl(1).attribute11;
640     END IF;
641 
642     IF NOT OE_GLOBALS.Equal(l_x_header_Payment_tbl(1).attribute12,
643                             l_Header_Payment_rec.attribute12)
644     THEN
645         x_attribute12 := l_x_header_Payment_tbl(1).attribute12;
646     END IF;
647 
648     IF NOT OE_GLOBALS.Equal(l_x_header_Payment_tbl(1).attribute13,
649                             l_Header_Payment_rec.attribute13)
650     THEN
651         x_attribute13 := l_x_header_Payment_tbl(1).attribute13;
652     END IF;
653 
654     IF NOT OE_GLOBALS.Equal(l_x_header_Payment_tbl(1).attribute14,
655                             l_Header_Payment_rec.attribute14)
656     THEN
657         x_attribute14 := l_x_header_Payment_tbl(1).attribute14;
658     END IF;
659 
660     IF NOT OE_GLOBALS.Equal(l_x_header_Payment_tbl(1).attribute15,
661                             l_Header_Payment_rec.attribute15)
662     THEN
663         x_attribute15 := l_x_header_Payment_tbl(1).attribute15;
664     END IF;
665 
666     IF NOT OE_GLOBALS.Equal(l_x_Header_Payment_Tbl(1).context,
667                             l_Header_Payment_rec.context)
668     THEN
669         x_context := l_x_Header_Payment_Tbl(1).context;
670     END IF;
671 
672     IF NOT OE_GLOBALS.Equal(l_x_Header_Payment_Tbl(1).payment_number,
673                             l_Header_Payment_rec.payment_number)
674     THEN
675         x_payment_number := l_x_Header_Payment_Tbl(1).payment_number;
676     END IF;
677 
678     IF NOT OE_GLOBALS.Equal(l_x_Header_Payment_Tbl(1).header_id,
679                             l_Header_Payment_rec.header_id)
680     THEN
681         x_header_id := l_x_Header_Payment_Tbl(1).header_id;
682     END IF;
683 
684     IF NOT OE_GLOBALS.Equal(l_x_Header_Payment_Tbl(1).line_id,
685                             l_Header_Payment_rec.line_id)
686     THEN
687         x_line_id := l_x_Header_Payment_Tbl(1).line_id;
688     END IF;
689 
690     IF NOT OE_GLOBALS.Equal(l_x_Header_Payment_Tbl(1).check_number,
691                             l_Header_Payment_rec.check_number)
692     THEN
693         x_check_number := l_x_Header_Payment_Tbl(1).check_number;
694     END IF;
695 
696     IF NOT OE_GLOBALS.Equal(l_x_Header_Payment_Tbl(1).credit_card_approval_code,
697                             l_Header_Payment_rec.credit_card_approval_code)
698     THEN
699         x_credit_card_approval_code := l_x_Header_Payment_Tbl(1).credit_card_approval_code;
700     END IF;
701 
702     IF NOT OE_GLOBALS.Equal(l_x_Header_Payment_Tbl(1).credit_card_approval_date,
703                             l_Header_Payment_rec.credit_card_approval_date)
704     THEN
705         x_credit_card_approval_date := l_x_Header_Payment_Tbl(1).credit_card_approval_date;
706     END IF;
707 
708     IF NOT OE_GLOBALS.Equal(l_x_Header_Payment_Tbl(1).credit_card_code,
709                             l_Header_Payment_rec.credit_card_code)
710     THEN
711         x_credit_card_code := l_x_Header_Payment_Tbl(1).credit_card_code;
712     END IF;
713 
714     IF NOT OE_GLOBALS.Equal(l_x_Header_Payment_Tbl(1).credit_card_expiration_date,
715                             l_Header_Payment_rec.credit_card_expiration_date)
716     THEN
717         x_credit_card_expiration_date := l_x_Header_Payment_Tbl(1).credit_card_expiration_date;
718     END IF;
719 
720     IF NOT OE_GLOBALS.Equal(l_x_Header_Payment_Tbl(1).credit_card_holder_name,
721                             l_Header_Payment_rec.credit_card_holder_name)
722     THEN
723         x_credit_card_holder_name := l_x_Header_Payment_Tbl(1).credit_card_holder_name;
724     END IF;
725     --R12 CC Encryption
726     --Since the credit card numbers are encrypted, passing both the credit card
727     --numbers as well as instrument ids to determine if both the old and new
728     --values point to the same credit card number.
729     IF NOT OE_GLOBALS.Is_Same_Credit_Card(l_Header_Payment_rec.credit_card_number,
730                             l_x_Header_Payment_Tbl(1).credit_card_number,
731 			    l_Header_Payment_rec.cc_instrument_id,
732 			    l_x_Header_Payment_Tbl(1).cc_instrument_id)
733     THEN
734         x_credit_card_number := l_x_Header_Payment_Tbl(1).credit_card_number;
735     END IF;
736 
737     IF NOT OE_GLOBALS.Equal(l_x_Header_Payment_Tbl(1).payment_level_code,
738                             l_Header_Payment_rec.payment_level_code)
739     THEN
740         x_payment_level_code := l_x_Header_Payment_Tbl(1).payment_level_code;
741     END IF;
742 
743     IF NOT OE_GLOBALS.Equal(l_x_Header_Payment_Tbl(1).commitment_applied_amount,
744                             l_Header_Payment_rec.commitment_applied_amount)
745     THEN
746         x_commitment_applied_amount := l_x_Header_Payment_Tbl(1).commitment_applied_amount;
747     END IF;
748 
749     IF NOT OE_GLOBALS.Equal(l_x_Header_Payment_Tbl(1).commitment_interfaced_amount,
750                             l_Header_Payment_rec.commitment_interfaced_amount)
751     THEN
752         x_commitment_interfaced_amount := l_x_Header_Payment_Tbl(1).commitment_interfaced_amount;
753     END IF;
754 
755     IF NOT OE_GLOBALS.Equal(l_x_Header_Payment_Tbl(1).payment_amount,
756                             l_Header_Payment_rec.payment_amount)
757     THEN
758         x_payment_amount := l_x_Header_Payment_Tbl(1).payment_amount;
759     END IF;
760 
761     IF NOT OE_GLOBALS.Equal(l_x_Header_Payment_Tbl(1).payment_collection_event,
762                             l_Header_Payment_rec.payment_collection_event)
763     THEN
764         x_payment_collection_event := l_x_Header_Payment_Tbl(1).payment_collection_event;
765         x_pmt_collection_event_name := l_Header_Payment_Val_Rec.payment_collection_event_name;
766     END IF;
767 
768     IF NOT OE_GLOBALS.Equal(l_x_Header_Payment_Tbl(1).defer_payment_processing_flag,
769                             l_Header_Payment_rec.defer_payment_processing_flag)
770     THEN
771         x_defer_processing_flag := l_x_Header_Payment_Tbl(1).defer_payment_processing_flag;
772     END IF;
773 
774     IF NOT OE_GLOBALS.Equal(l_x_Header_Payment_Tbl(1).payment_trx_id,
775                             l_Header_Payment_rec.payment_trx_id)
776     THEN
777         x_payment_trx_id := l_x_Header_Payment_Tbl(1).payment_trx_id;
778     END IF;
779 
780     IF NOT OE_GLOBALS.Equal(l_x_Header_Payment_Tbl(1).payment_type_code,
781                             l_Header_Payment_rec.payment_type_code)
782     THEN
783         x_payment_type_code := l_x_Header_Payment_Tbl(1).payment_type_code;
784         x_payment_type := l_Header_Payment_Val_rec.payment_type;
785     END IF;
786 
787     IF NOT OE_GLOBALS.Equal(l_x_Header_Payment_Tbl(1).payment_set_id,
788                             l_Header_Payment_rec.payment_set_id)
789     THEN
790         x_payment_set_id := l_x_Header_Payment_Tbl(1).payment_set_id;
791     END IF;
792 
793     IF NOT OE_GLOBALS.Equal(l_x_Header_Payment_Tbl(1).prepaid_amount,
794                             l_Header_Payment_rec.prepaid_amount)
795     THEN
796         x_prepaid_amount := l_x_Header_Payment_Tbl(1).prepaid_amount;
797     END IF;
798 
799     IF NOT OE_GLOBALS.Equal(l_x_Header_Payment_Tbl(1).receipt_method_id,
800                             l_Header_Payment_rec.receipt_method_id)
801     THEN
802         x_receipt_method_id := l_x_Header_Payment_Tbl(1).receipt_method_id;
803         x_receipt_method := l_Header_Payment_Val_rec.receipt_method;
804     END IF;
805 
806     --R12 CC Encryption
807     IF NOT OE_GLOBALS.Equal(l_x_Header_Payment_Tbl(1).instrument_security_code,
808                             l_Header_Payment_rec.instrument_security_code)    THEN
809 	x_instrument_security_code := l_x_Header_Payment_Tbl(1).instrument_security_code;
810     END IF;
811     --R12 CC Encryption
812 
813     --If defaulting is enabled for credit card number, then need to populate the
814     --instrument id and instrument assignment id returned by the Payments API in
815     --OE_Default_Pvt package
816 
817     IF OE_Default_Pvt.g_default_instrument_id IS NOT NULL THEN
818 	l_x_Header_Payment_tbl(1).cc_instrument_id := OE_Default_Pvt.g_default_instrument_id;
819 	IF l_debug_level > 0 THEN
820 		oe_debug_pub.add('instr id in fhpmb for defaulting'||l_x_Header_Payment_tbl(1).cc_instrument_id);
821 	END IF;
822 	--Setting the value of assignment id to null
823 	--after passing the value to the cache
824 	OE_Default_Pvt.g_default_instrument_id := null;
825     END IF;
826 
827     IF OE_Default_Pvt.g_default_instr_assignment_id IS NOT NULL THEN
828 	l_x_Header_Payment_tbl(1).cc_instrument_assignment_id := OE_Default_Pvt.g_default_instr_assignment_id;
829 	IF l_debug_level > 0 THEN
830 		oe_debug_pub.add('assign id in fhpmb for defaulting'||l_x_Header_Payment_tbl(1).cc_instrument_assignment_id);
831 	END IF;
832 	--Setting the value of assignment id to null
833 	--after passing the value to the cache
834 	OE_Default_Pvt.g_default_instr_assignment_id := null;
835     END IF;
836     --R12 CC Encryption
837 
838     --  Write to cache.
839 
840     Write_Header_Payment
841     (   p_Header_Payment_rec          => l_x_Header_PAYMENT_tbl(1)
842     );
843 
844     -- Re-set the UI flag to FALSE
845     OE_GLOBALS.G_UI_FLAG := FALSE;
846 
847     --  Set return status.
848 
849     x_return_status := FND_API.G_RET_STS_SUCCESS;
850 
851     --  Get message count and data
852 
853     oe_msg_pub.Count_And_Get
854     (   p_count                       => x_msg_count
855     ,   p_data                        => x_msg_data
856     );
857 
858     IF l_debug_level  > 0 THEN
859         oe_debug_pub.add(  'EXITING OE_OE_FORM_HEADER_PAYMENT.CHANGE_ATTRIBUTE' , 1 ) ;
860     END IF;
861 
862 EXCEPTION
863 
864     WHEN FND_API.G_EXC_ERROR THEN
865 
866 	   OE_GLOBALS.G_UI_FLAG := FALSE;
867 
868         x_return_status := FND_API.G_RET_STS_ERROR;
869 
870         --  Get message count and data
871 
872         oe_msg_pub.Count_And_Get
873         (   p_count                       => x_msg_count
874         ,   p_data                        => x_msg_data
875         );
876 
877     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
878 
879 	   OE_GLOBALS.G_UI_FLAG := FALSE;
880 
881         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
882 
883         --  Get message count and data
884 
885         oe_msg_pub.Count_And_Get
886         (   p_count                       => x_msg_count
887         ,   p_data                        => x_msg_data
888         );
889 
890     WHEN OTHERS THEN
891 
892 	   OE_GLOBALS.G_UI_FLAG := FALSE;
893 
894         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
895 
896         IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
897         THEN
898             oe_msg_pub.Add_Exc_Msg
899             (   G_PKG_NAME
900             ,   'Change_Attribute'
901             );
902         END IF;
903 
904         --  Get message count and data
905 
906         oe_msg_pub.Count_And_Get
907         (   p_count                       => x_msg_count
908         ,   p_data                        => x_msg_data
909         );
910 
911 END Change_Attribute;
912 
913 --  R12 CC Encryption
914 --  Procedure       Copy_Attribute_To_Rec
915 --  This procedure is introduced in R12 to support
916 --  change attribute call for multiple attributes at one time
917 --  New attributes introduced going forward would have the code
918 --  in this procedure for change attributes.
919 
920 PROCEDURE Copy_Attribute_To_Rec
921 (   p_attr_id                       IN  NUMBER
922 ,   p_attr_value                    IN  VARCHAR2
923 ,   x_header_payment_tbl            IN OUT NOCOPY OE_Order_PUB.Header_PAYMENT_Tbl_Type
924 ,   x_old_header_payment_tbl        IN OUT NOCOPY OE_Order_PUB.Header_PAYMENT_Tbl_Type
925 ,   p_attribute1                    IN  VARCHAR2
926 ,   p_attribute2                    IN  VARCHAR2
927 ,   p_attribute3                    IN  VARCHAR2
928 ,   p_attribute4                    IN  VARCHAR2
929 ,   p_attribute5                    IN  VARCHAR2
930 ,   p_attribute6                    IN  VARCHAR2
931 ,   p_attribute7                    IN  VARCHAR2
932 ,   p_attribute8                    IN  VARCHAR2
933 ,   p_attribute9                    IN  VARCHAR2
934 ,   p_attribute10                   IN  VARCHAR2
935 ,   p_attribute11                   IN  VARCHAR2
936 ,   p_attribute12                   IN  VARCHAR2
937 ,   p_attribute13                   IN  VARCHAR2
938 ,   p_attribute14                   IN  VARCHAR2
939 ,   p_attribute15                   IN  VARCHAR2
940 ,   p_context                       IN  VARCHAR2)
941 IS
942 l_date_format_mask            VARCHAR2(30) := 'DD-MON-RRRR HH24:MI:SS';
943 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
944 BEGIN
945 
946     IF l_debug_level  > 0 THEN
947         oe_debug_pub.add(  'ENTERING OE_OE_FORM_HEADER_PAYMENT.Copy_Attribute_To_Rec' , 1 ) ;
948         oe_debug_pub.add(' p_attr_id is : ' || p_attr_id);
949 	oe_debug_pub.add(' value is '||p_attr_value);
950     END IF;
951 
952     IF p_attr_id = OE_Header_Payment_Util.G_CHECK_NUMBER THEN
953         x_header_payment_tbl(1).check_number := p_attr_value;
954     ELSIF p_attr_id = OE_Header_Payment_Util.G_CREDIT_CARD_APPROVAL_CODE THEN
955         x_header_payment_tbl(1).credit_card_approval_code := p_attr_value;
956     ELSIF p_attr_id = OE_Header_Payment_Util.G_CREDIT_CARD_APPROVAL_DATE THEN
957        -- x_header_payment_tbl(1).credit_card_approval_date := TO_DATE(p_attr_value, l_date_format_mask);
958        x_header_payment_tbl(1).credit_card_approval_date := fnd_date.string_TO_DATE(p_attr_value, l_date_format_mask); --bug5402396
959     ELSIF p_attr_id = OE_Header_Payment_Util.G_CREDIT_CARD_CODE THEN
960         x_header_payment_tbl(1).credit_card_code := p_attr_value;
961     ELSIF p_attr_id = OE_Header_Payment_Util.G_CREDIT_CARD_EXPIRATION_DATE THEN
962        -- x_header_payment_tbl(1).credit_card_expiration_date := TO_DATE(p_attr_value, l_date_format_mask);
963        x_header_payment_tbl(1).credit_card_expiration_date := fnd_date.string_TO_DATE(p_attr_value, l_date_format_mask); --bug5402396
964     ELSIF p_attr_id = OE_Header_Payment_Util.G_CREDIT_CARD_HOLDER_NAME THEN
965         oe_debug_pub.add('New holder name'||p_attr_value);
966         x_header_payment_tbl(1).credit_card_holder_name := p_attr_value;
967     ELSIF p_attr_id = OE_Header_Payment_Util.G_CREDIT_CARD_NUMBER THEN
968         x_header_payment_tbl(1).credit_card_number := p_attr_value;
969     ELSIF p_attr_id = OE_Header_Payment_Util.G_PAYMENT_LEVEL_CODE THEN
970         x_header_payment_tbl(1).payment_level_code := p_attr_value;
971     ELSIF p_attr_id = OE_Header_Payment_Util.G_COMMITMENT_APPLIED_AMOUNT THEN
972         x_header_payment_tbl(1).commitment_applied_amount := TO_NUMBER(p_attr_value);
973     ELSIF p_attr_id = OE_Header_Payment_Util.G_COMMITMENT_INTERFACED_AMOUNT THEN
974         x_header_payment_tbl(1).commitment_interfaced_amount := TO_NUMBER(p_attr_value);
975     ELSIF p_attr_id = OE_Header_Payment_Util.G_PAYMENT_NUMBER THEN
976         x_header_payment_tbl(1).payment_number := TO_NUMBER(p_attr_value);
977     ELSIF p_attr_id = OE_Header_Payment_Util.G_HEADER THEN
978         x_header_payment_tbl(1).header_id := TO_NUMBER(p_attr_value);
979     ELSIF p_attr_id = OE_Header_Payment_Util.G_LINE THEN
980         x_header_payment_tbl(1).line_id := TO_NUMBER(p_attr_value);
981     ELSIF p_attr_id = OE_Header_Payment_Util.G_PAYMENT_AMOUNT THEN
982         x_header_payment_tbl(1).payment_amount := TO_NUMBER(p_attr_value);
983     ELSIF p_attr_id = OE_Header_Payment_Util.G_PAYMENT_COLLECTION_EVENT THEN
984         x_header_payment_tbl(1).payment_collection_event := p_attr_value;
985     ELSIF p_attr_id = OE_Header_Payment_Util.G_PAYMENT_TRX_ID THEN
986         x_header_payment_tbl(1).payment_trx_id := TO_NUMBER(p_attr_value);
987     ELSIF p_attr_id = OE_Header_Payment_Util.G_PAYMENT_TYPE_CODE THEN
988         x_header_payment_tbl(1).payment_type_code := p_attr_value;
989     ELSIF p_attr_id = OE_Header_Payment_Util.G_PAYMENT_SET_ID THEN
990         x_header_payment_tbl(1).payment_set_id := TO_NUMBER(p_attr_value);
991     ELSIF p_attr_id = OE_Header_Payment_Util.G_PREPAID_AMOUNT THEN
992         x_header_payment_tbl(1).prepaid_amount := TO_NUMBER(p_attr_value);
993     ELSIF p_attr_id = OE_Header_Payment_Util.G_RECEIPT_METHOD_ID THEN
994         x_header_payment_tbl(1).receipt_method_id := TO_NUMBER(p_attr_value);
995     ELSIF p_attr_id = OE_Header_Payment_Util.G_DEFER_PROCESSING_FLAG THEN
996         x_header_payment_tbl(1).defer_payment_processing_flag := p_attr_value;
997     ELSIF p_attr_id = OE_Header_Payment_Util.G_TANGIBLE_ID THEN
998         x_header_payment_tbl(1).tangible_id := p_attr_value;
999     ELSIF p_attr_id = OE_Header_Payment_Util.G_INSTRUMENT_SECURITY_CODE THEN --R12 CC encryption
1000         x_header_payment_tbl(1).instrument_security_code := p_attr_value;
1001     ELSIF p_attr_id = OE_Header_Payment_Util.G_CC_INSTRUMENT_ID THEN --R12 CC encryption
1002         x_header_payment_tbl(1).cc_instrument_id := p_attr_value;
1003     ELSIF p_attr_id = OE_Header_Payment_Util.G_CC_INSTRUMENT_ASSIGNMENT_ID THEN --R12 CC encryption
1004         x_header_payment_tbl(1).cc_instrument_assignment_id := p_attr_value;
1005     ELSIF p_attr_id = OE_Header_Payment_Util.G_ATTRIBUTE1
1006     OR     p_attr_id = OE_Header_Payment_Util.G_ATTRIBUTE2
1007     OR     p_attr_id = OE_Header_Payment_Util.G_ATTRIBUTE3
1008     OR     p_attr_id = OE_Header_Payment_Util.G_ATTRIBUTE4
1009     OR     p_attr_id = OE_Header_Payment_Util.G_ATTRIBUTE5
1010     OR     p_attr_id = OE_Header_Payment_Util.G_ATTRIBUTE6
1011     OR     p_attr_id = OE_Header_Payment_Util.G_ATTRIBUTE7
1012     OR     p_attr_id = OE_Header_Payment_Util.G_ATTRIBUTE8
1013     OR     p_attr_id = OE_Header_Payment_Util.G_ATTRIBUTE9
1014     OR     p_attr_id = OE_Header_Payment_Util.G_ATTRIBUTE10
1015     OR     p_attr_id = OE_Header_Payment_Util.G_ATTRIBUTE11
1016     OR     p_attr_id = OE_Header_Payment_Util.G_ATTRIBUTE12
1017     OR     p_attr_id = OE_Header_Payment_Util.G_ATTRIBUTE13
1018     OR     p_attr_id = OE_Header_Payment_Util.G_ATTRIBUTE14
1019     OR     p_attr_id = OE_Header_Payment_Util.G_ATTRIBUTE15
1020     OR     p_attr_id = OE_Header_Payment_Util.G_CONTEXT
1021     THEN
1022 
1023         x_header_payment_tbl(1).attribute1 := p_attribute1;
1024         x_header_payment_tbl(1).attribute2 := p_attribute2;
1025         x_header_payment_tbl(1).attribute3 := p_attribute3;
1026         x_header_payment_tbl(1).attribute4 := p_attribute4;
1027         x_header_payment_tbl(1).attribute5 := p_attribute5;
1028         x_header_payment_tbl(1).attribute6 := p_attribute6;
1029         x_header_payment_tbl(1).attribute7 := p_attribute7;
1030         x_header_payment_tbl(1).attribute8 := p_attribute8;
1031         x_header_payment_tbl(1).attribute9 := p_attribute9;
1032         x_header_payment_tbl(1).attribute10 := p_attribute10;
1033         x_header_payment_tbl(1).attribute11 := p_attribute11;
1034         x_header_payment_tbl(1).attribute12 := p_attribute12;
1035         x_header_payment_tbl(1).attribute13 := p_attribute13;
1036         x_header_payment_tbl(1).attribute14 := p_attribute14;
1037         x_header_payment_tbl(1).attribute15 := p_attribute15;
1038         x_header_payment_tbl(1).context   := p_context;
1039 
1040     ELSE
1041 
1042         --  Unexpected error, unrecognized attribute
1043 
1044         IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1045         THEN
1046             oe_msg_pub.Add_Exc_Msg
1047             (   G_PKG_NAME
1048             ,   'Copy_Attribute_To_Rec'
1049             ,   'Unrecognized attribute'
1050             );
1051         END IF;
1052 
1053         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1054 
1055     END IF;
1056 EXCEPTION
1057     WHEN OTHERS THEN
1058         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
1059         THEN
1060             oe_msg_pub.Add_Exc_Msg
1061             (   G_PKG_NAME
1062             ,   'Copy_Attribute_To_Rec'
1063             );
1064         END IF;
1065         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1066 END Copy_Attribute_To_Rec;
1067 --  R12 CC Encryption
1068 
1069 --  Procedure       Validate_And_Write
1070 --
1071 
1072 PROCEDURE Validate_And_Write
1073 ( x_return_status OUT NOCOPY VARCHAR2
1074 , x_msg_count OUT NOCOPY NUMBER
1075 , x_msg_data OUT NOCOPY VARCHAR2
1076 , p_payment_number               IN  NUMBER
1077 , p_header_id                    IN  NUMBER
1078 , x_creation_date OUT NOCOPY DATE
1079 , x_created_by OUT NOCOPY NUMBER
1080 , x_last_update_date OUT NOCOPY DATE
1081 , x_last_updated_by OUT NOCOPY NUMBER
1082 , x_last_update_login OUT NOCOPY NUMBER
1083 ,   x_program_id                    OUT NOCOPY NUMBER
1084 ,   x_program_application_id        OUT NOCOPY NUMBER
1085 ,   x_program_update_date           OUT NOCOPY DATE
1086 ,   x_request_id                    OUT NOCOPY NUMBER
1087 , x_lock_control OUT NOCOPY NUMBER
1088 )
1089 IS
1090 l_x_old_Header_Payment_tbl      OE_Order_PUB.Header_PAYMENT_Tbl_Type;
1091 l_control_rec                 OE_GLOBALS.Control_Rec_Type;
1092 l_return_status               VARCHAR2(1);
1093 l_x_Header_Payment_tbl        OE_Order_PUB.Header_PAYMENT_Tbl_Type;
1094 
1095 --
1096 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1097 --
1098 BEGIN
1099 
1100     IF l_debug_level  > 0 THEN
1101         oe_debug_pub.add(  'ENTERING OE_OE_FORM_HEADER_Payment.VALIDATE_AND_WRITE' , 1 ) ;
1102     END IF;
1103 
1104     -- Set the UI flag
1105     OE_GLOBALS.G_UI_FLAG := TRUE;
1106 
1107     --  Set control flags.
1108 
1109     l_control_rec.controlled_operation := TRUE;
1110     l_control_rec.validate_entity      := TRUE;
1111     l_control_rec.write_to_DB          := TRUE;
1112 
1113     l_control_rec.clear_dependents     := FALSE;
1114     l_control_rec.default_attributes   := FALSE;
1115     l_control_rec.change_attributes    := FALSE;
1116     l_control_rec.process              := FALSE;
1117 
1118     --  Instruct API to retain its caches
1119 
1120     l_control_rec.clear_api_cache      := FALSE;
1121     l_control_rec.clear_api_requests   := FALSE;
1122 
1123     --  Read Header_Payment from cache
1124     Get_Header_Payment
1125     (   p_db_record                   => TRUE
1126     ,   p_payment_number              => p_payment_number
1127     ,   p_header_id                   => p_header_id
1128     ,   x_header_Payment_rec          => l_x_old_Header_PAYMENT_tbl(1)
1129     );
1130 
1131 
1132     Get_Header_Payment
1133     (   p_db_record                   => FALSE
1134     ,   p_payment_number              => p_payment_number
1135     ,   p_header_id                   => p_header_id
1136     ,   x_header_Payment_rec          => l_x_Header_Payment_tbl(1)
1137     );
1138 
1139     --  Set Operation.
1140 
1141     IF FND_API.To_Boolean(l_x_Header_Payment_tbl(1).db_flag) THEN
1142         l_x_Header_Payment_tbl(1).operation := OE_GLOBALS.G_OPR_UPDATE;
1143     ELSE
1144         l_x_Header_Payment_tbl(1).operation := OE_GLOBALS.G_OPR_CREATE;
1145     END IF;
1146 
1147     --  Populate Header_Payment table
1148 
1149     --  Call OE_Order_PVT.Process_order
1150 
1151 
1152     OE_Order_PVT.Header_Payments
1153     (   p_validation_level              => FND_API.G_VALID_LEVEL_NONE
1154     ,   p_init_msg_list               => FND_API.G_TRUE
1155     ,   p_control_rec                   => l_control_rec
1156     ,   p_x_Header_Payment_tbl          => l_x_Header_PAYMENT_tbl
1157     ,   p_x_old_Header_Payment_tbl      => l_x_old_Header_PAYMENT_tbl
1158     ,   x_return_status                 => l_return_status
1159     );
1160 
1161     IF  l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1162         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1163     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1164         RAISE FND_API.G_EXC_ERROR;
1165     END IF;
1166 
1167     --  Load OUT parameters.
1168 
1169     x_creation_date                := l_x_Header_Payment_tbl(1).creation_date;
1170     x_created_by                   := l_x_Header_Payment_tbl(1).created_by;
1171     x_last_update_date             := l_x_Header_Payment_tbl(1).last_update_date;
1172     x_last_updated_by              := l_x_Header_Payment_tbl(1).last_updated_by;
1173     x_last_update_login            := l_x_Header_Payment_tbl(1).last_update_login;
1174     x_lock_control                 := l_x_Header_Payment_tbl(1).lock_control;
1175 
1176     --  Clear Header_Payment record cache
1177 
1178     Clear_Header_Payment;
1179 
1180     --  Keep track of performed operations.
1181 
1182 --    l_old_Header_Payment_rec.operation := l_Header_PAYMENT_rec.operation;
1183 
1184 
1185     -- Re-set the UI flag to FALSE
1186     OE_GLOBALS.G_UI_FLAG := FALSE;
1187 
1188     --  Set return status.
1189 
1190     x_return_status := FND_API.G_RET_STS_SUCCESS;
1191 
1192     --  Get message count and data
1193 
1194     oe_msg_pub.Count_And_Get
1195     (   p_count                       => x_msg_count
1196     ,   p_data                        => x_msg_data
1197     );
1198 
1199     IF l_debug_level  > 0 THEN
1200         oe_debug_pub.add(  'EXITING OE_OE_FORM_HEADER_Payment.VALIDATE_AND_WRITE' , 1 ) ;
1201     END IF;
1202 
1203 EXCEPTION
1204 
1205     WHEN FND_API.G_EXC_ERROR THEN
1206 
1207 	   OE_GLOBALS.G_UI_FLAG := FALSE;
1208 
1209         x_return_status := FND_API.G_RET_STS_ERROR;
1210 
1211         --  Get message count and data
1212 
1213         oe_msg_pub.Count_And_Get
1214         (   p_count                       => x_msg_count
1215         ,   p_data                        => x_msg_data
1216         );
1217 
1218     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1219 
1220 	   OE_GLOBALS.G_UI_FLAG := FALSE;
1221 
1222         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1223 
1224         --  Get message count and data
1225 
1226         oe_msg_pub.Count_And_Get
1227         (   p_count                       => x_msg_count
1228         ,   p_data                        => x_msg_data
1229         );
1230 
1231     WHEN OTHERS THEN
1232 
1233 	   OE_GLOBALS.G_UI_FLAG := FALSE;
1234 
1235         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1236 
1237         IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1238         THEN
1239             oe_msg_pub.Add_Exc_Msg
1240             (   G_PKG_NAME
1241             ,   'Validate_And_Write'
1242             );
1243         END IF;
1244 
1245         --  Get message count and data
1246 
1247         oe_msg_pub.Count_And_Get
1248         (   p_count                       => x_msg_count
1249         ,   p_data                        => x_msg_data
1250         );
1251 
1252 END Validate_And_Write;
1253 
1254 --  Procedure       Delete_Row
1255 --
1256 
1257 PROCEDURE Delete_Row
1258 ( x_return_status OUT NOCOPY VARCHAR2
1259 , x_msg_count OUT NOCOPY NUMBER
1260 , x_msg_data OUT NOCOPY VARCHAR2
1261 , p_payment_number               IN  NUMBER
1262 , p_header_id                    IN  NUMBER
1263 )
1264 IS
1265 l_control_rec                 OE_GLOBALS.Control_Rec_Type;
1266 l_return_status               VARCHAR2(1);
1267 l_x_Header_Payment_tbl        OE_Order_PUB.Header_Payment_Tbl_Type;
1268 l_x_Old_Header_Payment_tbl    OE_Order_PUB.Header_Payment_Tbl_Type;
1269 
1270 --
1271 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1272 --
1273 BEGIN
1274 
1275     IF l_debug_level  > 0 THEN
1276         oe_debug_pub.add(  'ENTERING OE_OE_FORM_HEADER_Payment.DELETE_ROW' , 1 ) ;
1277     END IF;
1278 
1279     -- Set the UI flag
1280     OE_GLOBALS.G_UI_FLAG := TRUE;
1281 
1282     --  Set control flags.
1283 
1284     l_control_rec.controlled_operation := TRUE;
1285     l_control_rec.check_security       := TRUE;
1286     l_control_rec.validate_entity      := TRUE;
1287     l_control_rec.write_to_DB          := TRUE;
1288 
1289     l_control_rec.clear_dependents     := FALSE;
1290     l_control_rec.default_attributes   := FALSE;
1291     l_control_rec.change_attributes    := FALSE;
1292     l_control_rec.process              := FALSE;
1293 
1294     --  Instruct API to retain its caches
1295 
1296     l_control_rec.clear_api_cache      := FALSE;
1297     l_control_rec.clear_api_requests   := FALSE;
1298 
1299     --  Read DB record from cache
1300 
1301     Get_Header_Payment
1302     (   p_db_record                   => TRUE
1303     ,   p_payment_number              => p_payment_number
1304     ,   p_header_id                   => p_header_id
1305     ,   x_header_Payment_rec          => l_x_Header_Payment_tbl(1)
1306     );
1307 
1308     --  Set Operation.
1309 
1310     l_x_Header_Payment_tbl(1).operation := OE_GLOBALS.G_OPR_DELETE;
1311 
1312     --  Populate Header_Payment table
1313 
1314 
1315     --  Call OE_Order_PVT.Process_order
1316 
1317 
1318     OE_Order_PVT.Header_Payments
1319     (   p_validation_level            => FND_API.G_VALID_LEVEL_NONE
1320     ,   p_init_msg_list               => FND_API.G_TRUE
1321     ,   p_control_rec                 => l_control_rec
1322     ,   p_x_Header_Payment_tbl        => l_x_Header_Payment_tbl
1323     ,   p_x_old_Header_Payment_tbl    => l_x_old_Header_Payment_tbl
1324     ,   x_return_status               => l_return_status
1325     );
1326 
1327     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1328         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1329     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1330         RAISE FND_API.G_EXC_ERROR;
1331     END IF;
1332 
1333 
1334     --  Clear Header_Payment record cache
1335 
1336     Clear_Header_Payment;
1337 
1338     -- Re-set the UI flag to FALSE
1339     OE_GLOBALS.G_UI_FLAG := FALSE;
1340 
1341     --  Set return status.
1342 
1343     x_return_status := FND_API.G_RET_STS_SUCCESS;
1344 
1345     --  Get message count and data
1346 
1347     oe_msg_pub.Count_And_Get
1348     (   p_count                       => x_msg_count
1349     ,   p_data                        => x_msg_data
1350     );
1351 
1352     IF l_debug_level  > 0 THEN
1353         oe_debug_pub.add(  'EXITING OE_OE_FORM_HEADER_Payment.DELETE_ROW' , 1 ) ;
1354     END IF;
1355 
1356 EXCEPTION
1357 
1358     WHEN FND_API.G_EXC_ERROR THEN
1359 
1360 	   OE_GLOBALS.G_UI_FLAG := FALSE;
1361 
1362         x_return_status := FND_API.G_RET_STS_ERROR;
1363 
1364         --  Get message count and data
1365 
1366         oe_msg_pub.Count_And_Get
1367         (   p_count                       => x_msg_count
1368         ,   p_data                        => x_msg_data
1369         );
1370 
1371     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1372 
1373 	   OE_GLOBALS.G_UI_FLAG := FALSE;
1374 
1375         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1376 
1377         --  Get message count and data
1378 
1379         oe_msg_pub.Count_And_Get
1380         (   p_count                       => x_msg_count
1381         ,   p_data                        => x_msg_data
1382         );
1383 
1384     WHEN OTHERS THEN
1385 
1386 	   OE_GLOBALS.G_UI_FLAG := FALSE;
1387 
1388         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1389 
1390         IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1391         THEN
1392             oe_msg_pub.Add_Exc_Msg
1393             (   G_PKG_NAME
1394             ,   'Delete_Row'
1395             );
1396         END IF;
1397 
1398         --  Get message count and data
1399 
1400         oe_msg_pub.Count_And_Get
1401         (   p_count                       => x_msg_count
1402         ,   p_data                        => x_msg_data
1403         );
1404 
1405 END Delete_Row;
1406 
1407 --  Procedure       Process_Entity
1408 --
1409 
1410 PROCEDURE Process_Entity
1411 ( x_return_status OUT NOCOPY VARCHAR2
1412 , x_msg_count OUT NOCOPY NUMBER
1413 , x_msg_data OUT NOCOPY VARCHAR2
1414 )
1415 IS
1416 l_return_status               VARCHAR2(1);
1417 l_x_header_rec                OE_Order_PUB.Header_Rec_Type;
1418 l_control_rec                 OE_GLOBALS.Control_Rec_Type;
1419 l_x_Header_Adj_rec            OE_Order_PUB.Header_Adj_Rec_Type;
1420 l_x_Header_Adj_tbl            OE_Order_PUB.Header_Adj_Tbl_Type;
1421 l_x_Header_Scredit_rec        OE_Order_PUB.Header_Scredit_Rec_Type;
1422 l_x_Header_Scredit_tbl        OE_Order_PUB.Header_Scredit_Tbl_Type;
1423 l_x_Header_Payment_rec        OE_Order_PUB.Header_PAYMENT_Rec_Type;
1424 l_x_Header_Payment_tbl        OE_Order_PUB.Header_PAYMENT_Tbl_Type;
1425 l_x_line_rec                  OE_Order_PUB.Line_Rec_Type;
1426 l_x_line_tbl                  OE_Order_PUB.Line_Tbl_Type;
1427 l_x_Line_Adj_rec              OE_Order_PUB.Line_Adj_Rec_Type;
1428 l_x_Line_Adj_tbl              OE_Order_PUB.Line_Adj_Tbl_Type;
1429 l_x_Line_Scredit_rec          OE_Order_PUB.Line_Scredit_Rec_Type;
1430 l_x_Line_Scredit_tbl          OE_Order_PUB.Line_Scredit_Tbl_Type;
1431 l_x_Line_Payment_rec          OE_Order_PUB.Line_PAYMENT_Rec_Type;
1432 l_x_Line_Payment_tbl          OE_Order_PUB.Line_PAYMENT_Tbl_Type;
1433 l_x_Lot_Serial_rec            OE_Order_PUB.Lot_Serial_Rec_Type;
1434 l_x_Lot_Serial_tbl            OE_Order_PUB.Lot_Serial_Tbl_Type;
1435 l_x_action_request_tbl        OE_Order_PUB.request_tbl_type;
1436 l_x_Header_price_Att_tbl        OE_Order_PUB.Header_Price_Att_Tbl_Type;
1437 l_x_Header_Adj_Att_tbl          OE_Order_PUB.Header_Adj_Att_Tbl_Type;
1438 l_x_Header_Adj_Assoc_tbl        OE_Order_PUB.Header_Adj_Assoc_Tbl_Type;
1439 l_x_Line_price_Att_tbl          OE_Order_PUB.Line_Price_Att_Tbl_Type;
1440 l_x_Line_Adj_Att_tbl            OE_Order_PUB.Line_Adj_Att_Tbl_Type;
1441 l_x_Line_Adj_Assoc_tbl          OE_Order_PUB.Line_Adj_Assoc_Tbl_Type;
1442 
1443 --
1444 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1445 --
1446 BEGIN
1447 
1448     IF l_debug_level  > 0 THEN
1449         oe_debug_pub.add(  'ENTERING OE_OE_FORM_HEADER_PAYMENT.PROCESS_ENTITY' , 1 ) ;
1450     END IF;
1451 
1452     -- Set the UI flag
1453     OE_GLOBALS.G_UI_FLAG := TRUE;
1454 
1455     --  Set control flags.
1456 
1457     l_control_rec.controlled_operation := TRUE;
1458     l_control_rec.process              := TRUE;
1459     l_control_rec.process_entity       := OE_GLOBALS.G_ENTITY_HEADER_Payment;
1460 
1461     l_control_rec.check_security       := FALSE;
1462     l_control_rec.clear_dependents   := FALSE;
1463     l_control_rec.default_attributes   := FALSE;
1464     l_control_rec.change_attributes    := FALSE;
1465     l_control_rec.validate_entity      := FALSE;
1466     l_control_rec.write_to_DB          := FALSE;
1467 
1468     --  Instruct API to clear its request table
1469 
1470     l_control_rec.clear_api_cache      := FALSE;
1471     l_control_rec.clear_api_requests   := FALSE;
1472 
1473     --  Call OE_Order_PVT.Process_order
1474 
1475     OE_Order_PVT.Process_order
1476     (   p_api_version_number          => 1.0
1477     ,   p_init_msg_list               => FND_API.G_TRUE
1478     ,   x_return_status               => l_return_status
1479     ,   x_msg_count                   => x_msg_count
1480     ,   x_msg_data                    => x_msg_data
1481     ,   p_control_rec                 => l_control_rec
1482     ,   p_x_header_rec                => l_x_header_rec
1483     ,   p_x_Header_Adj_tbl            => l_x_Header_Adj_tbl
1484     ,   p_x_Header_Scredit_tbl        => l_x_Header_Scredit_tbl
1485     ,   p_x_Header_Payment_tbl        => l_x_Header_Payment_tbl
1486     ,   p_x_line_tbl                  => l_x_line_tbl
1487     ,   p_x_Line_Adj_tbl              => l_x_Line_Adj_tbl
1488     ,   p_x_Line_Scredit_tbl          => l_x_Line_Scredit_tbl
1489     ,   p_x_Line_Payment_tbl          => l_x_Line_Payment_tbl
1490     ,   p_x_Lot_Serial_tbl            => l_x_Lot_Serial_tbl
1491     ,   p_x_action_request_tbl        => l_x_action_request_tbl
1492     ,   p_x_Header_price_Att_tbl      => l_x_Header_price_Att_tbl
1493     ,   p_x_Header_Adj_Att_tbl        => l_x_Header_Adj_Att_tbl
1494     ,   p_x_Header_Adj_Assoc_tbl      => l_x_Header_Adj_Assoc_tbl
1495     ,   p_x_Line_price_Att_tbl        => l_x_Line_price_Att_tbl
1496     ,   p_x_Line_Adj_Att_tbl          => l_x_Line_Adj_Att_tbl
1497     ,   p_x_Line_Adj_Assoc_tbl        => l_x_Line_Adj_Assoc_tbl
1498 
1499     );
1500 
1501     Oe_Order_Pvt.Process_Requests_And_Notify
1502     (   p_process_requests           => TRUE
1503     ,   p_init_msg_list               => FND_API.G_TRUE
1504      ,  p_notify                     => FALSE
1505      ,  x_return_status              => l_return_status
1506     );
1507 
1508     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1509         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1510     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1511         RAISE FND_API.G_EXC_ERROR;
1512     END IF;
1513 
1514 
1515     -- Re-set the UI flag to FALSE
1516     OE_GLOBALS.G_UI_FLAG := FALSE;
1517 
1518     --  Set return status.
1519 
1520     x_return_status := FND_API.G_RET_STS_SUCCESS;
1521 
1522     --  Get message count and data
1523 
1524     oe_msg_pub.Count_And_Get
1525     (   p_count                       => x_msg_count
1526     ,   p_data                        => x_msg_data
1527     );
1528 
1529     IF l_debug_level  > 0 THEN
1530         oe_debug_pub.add(  'EXITING OE_OE_FORM_HEADER_Payment.PROCESS_ENTITY' , 1 ) ;
1531     END IF;
1532 
1533 EXCEPTION
1534 
1535     WHEN FND_API.G_EXC_ERROR THEN
1536 
1537 	   OE_GLOBALS.G_UI_FLAG := FALSE;
1538 
1539         x_return_status := FND_API.G_RET_STS_ERROR;
1540 
1541         --  Get message count and data
1542 
1543         oe_msg_pub.Count_And_Get
1544         (   p_count                       => x_msg_count
1545         ,   p_data                        => x_msg_data
1546         );
1547 
1548     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1549 
1550 	   OE_GLOBALS.G_UI_FLAG := FALSE;
1551 
1552         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1553 
1554         --  Get message count and data
1555 
1556         oe_msg_pub.Count_And_Get
1557         (   p_count                       => x_msg_count
1558         ,   p_data                        => x_msg_data
1559         );
1560 
1561     WHEN OTHERS THEN
1562 
1563 	   OE_GLOBALS.G_UI_FLAG := FALSE;
1564 
1565         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1566 
1567         IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1568         THEN
1569             oe_msg_pub.Add_Exc_Msg
1570             (   G_PKG_NAME
1571             ,   'Process_Entity'
1572             );
1573         END IF;
1574 
1575         --  Get message count and data
1576 
1577         oe_msg_pub.Count_And_Get
1578         (   p_count                       => x_msg_count
1579         ,   p_data                        => x_msg_data
1580         );
1581 
1582 END Process_Entity;
1583 
1584 --  Procedure       lock_Row
1585 --
1586 
1587 PROCEDURE Lock_Row
1588 ( x_return_status OUT NOCOPY VARCHAR2
1589 , x_msg_count OUT NOCOPY NUMBER
1590 , x_msg_data OUT NOCOPY VARCHAR2
1591 , p_payment_number                IN  NUMBER
1592 , p_header_id                     IN  NUMBER
1593 , p_lock_control                  IN  NUMBER
1594 )
1595 IS
1596 l_return_status               VARCHAR2(1);
1597 l_x_Header_Payment_rec          OE_Order_PUB.Header_PAYMENT_Rec_Type;
1598 
1599 --
1600 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1601 --
1602 BEGIN
1603 
1604     IF l_debug_level  > 0 THEN
1605         oe_debug_pub.add(  'ENTERING OE_OE_FORM_HEADER_PAYMENT.LOCK_ROW' , 1 ) ;
1606     END IF;
1607 
1608     --  Load Header_Payment record
1609 
1610     l_x_Header_Payment_rec.operation    :=  OE_GLOBALS.G_OPR_LOCK;
1611     l_x_Header_Payment_rec.payment_number :=   p_payment_number      ;
1612     l_x_Header_Payment_rec.header_id      :=   p_header_id           ;
1613     l_x_Header_Payment_rec.lock_control :=  p_lock_control;
1614 
1615     --  Call oe_headers_Payments_util.lock_row instead of OE_Order_PVT.Lock_order
1616 
1617     OE_Header_Payment_Util.Lock_Row
1618     (   x_return_status           => l_return_status
1619     ,   p_x_header_Payment_rec    => l_x_header_payment_rec );
1620     IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
1621 
1622         --  Set DB flag and write record to cache.
1623 
1624         l_x_Header_Payment_rec.db_flag := FND_API.G_TRUE;
1625 
1626    Write_Header_Payment
1627 	(   p_Header_Payment_rec          => l_x_Header_Payment_rec
1628 	,   p_db_record                   => TRUE
1629 	);
1630 
1631     END IF;
1632 
1633     --  Set return status.
1634 
1635     x_return_status := l_return_status;
1636 
1637     --  Get message count and data
1638 
1639     oe_msg_pub.Count_And_Get
1640     (   p_count                       => x_msg_count
1641     ,   p_data                        => x_msg_data
1642     );
1643 
1644     IF l_debug_level  > 0 THEN
1645         oe_debug_pub.add(  'EXITING OE_OE_FORM_HEADER_Payment.LOCK_ROW' , 1 ) ;
1646     END IF;
1647 
1648 EXCEPTION
1649 
1650     WHEN OTHERS THEN
1651 
1652         IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1653         THEN
1654             oe_msg_pub.Add_Exc_Msg
1655             (   G_PKG_NAME
1656             ,   'Lock_Row'
1657             );
1658         END IF;
1659 
1660         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1661 
1662         --  Get message count and data
1663 
1664         oe_msg_pub.Count_And_Get
1665         (   p_count                       => x_msg_count
1666         ,   p_data                        => x_msg_data
1667         );
1668 
1669 
1670 
1671 END Lock_Row;
1672 
1673 --  Procedures maintaining Header_Payment record cache.
1674 
1675 PROCEDURE Write_Header_Payment
1676 (   p_Header_Payment_rec            IN  OE_Order_PUB.Header_PAYMENT_Rec_Type
1677 ,   p_db_record                     IN  BOOLEAN := FALSE
1678 )
1679 IS
1680 --
1681 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1682 --
1683 BEGIN
1684 
1685     IF l_debug_level  > 0 THEN
1686         oe_debug_pub.add(  'ENTERING OE_OE_FORM_HEADER_PAYMENT.WRITE_HEADER_PAYMENT' , 1 ) ;
1687     END IF;
1688 
1689     g_Header_Payment_rec := p_Header_Payment_rec;
1690 
1691     IF p_db_record THEN
1692 
1693         g_db_Header_Payment_rec := p_Header_Payment_rec;
1694 
1695     END IF;
1696 
1697     IF l_debug_level  > 0 THEN
1698         oe_debug_pub.add(  'EXITING OE_OE_FORM_HEADER_PAYMENT.WRITE_HEADER_PAYMENT' , 1 ) ;
1699     END IF;
1700 
1701 END Write_Header_Payment;
1702 
1703 PROCEDURE Get_Header_Payment
1704 (   p_db_record                     IN  BOOLEAN := FALSE
1705 ,   p_payment_number                IN  NUMBER
1706 ,   p_header_id                     IN  NUMBER
1707 ,   x_header_Payment_rec            OUT NOCOPY OE_Order_PUB.Header_PAYMENT_Rec_Type
1708 )
1709 IS
1710 --
1711 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1712 --
1713 BEGIN
1714 
1715     IF l_debug_level  > 0 THEN
1716         oe_debug_pub.add(  'ENTERING OE_OE_FORM_HEADER_PAYMENT.GET_HEADER_PAYMENT' , 1 ) ;
1717     END IF;
1718 
1719     IF  nvl(p_payment_number, -1) <> NVL(g_Header_Payment_rec.payment_number,-1) or
1720         p_header_id <> NVL(g_Header_Payment_rec.header_id, -1)
1721     THEN
1722 
1723         --  Query row from DB
1724 
1725         OE_Header_Payment_Util.Query_Row
1726         (   p_payment_number              => p_payment_number
1727         ,   p_header_id                   => p_header_id
1728         ,   x_header_Payment_rec          => g_Header_Payment_rec
1729         );
1730 
1731         g_Header_Payment_rec.db_flag   := FND_API.G_TRUE;
1732 
1733         --  Load DB record
1734 
1735         g_db_Header_Payment_rec        := g_Header_PAYMENT_rec;
1736 
1737     END IF;
1738 
1739     IF l_debug_level  > 0 THEN
1740         oe_debug_pub.add(  'EXITING OE_OE_FORM_HEADER_Payment.GET_HEADER_PAYMENT' , 1 ) ;
1741     END IF;
1742 
1743     IF p_db_record THEN
1744 
1745         x_header_Payment_rec:= g_db_Header_PAYMENT_rec;
1746 
1747     ELSE
1748 
1749         x_header_Payment_rec:= g_Header_PAYMENT_rec;
1750 
1751     END IF;
1752 
1753 END Get_Header_Payment;
1754 
1755 PROCEDURE Clear_Header_Payment
1756 IS
1757 --
1758 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1759 --
1760 BEGIN
1761 
1762     IF l_debug_level  > 0 THEN
1763         oe_debug_pub.add(  'ENTERING OE_OE_FORM_HEADER_Payment.CLEAR_HEADER_PAYMENT' , 1 ) ;
1764     END IF;
1765 
1766     g_Header_Payment_rec           := OE_Order_PUB.G_MISS_HEADER_PAYMENT_REC;
1767     g_db_Header_Payment_rec        := OE_Order_PUB.G_MISS_HEADER_PAYMENT_REC;
1768 
1769     IF l_debug_level  > 0 THEN
1770         oe_debug_pub.add(  'EXITING OE_OE_FORM_HEADER_Payment.CLEAR_HEADER_PAYMENT' , 1 ) ;
1771     END IF;
1772 
1773 END Clear_Header_Payment;
1774 
1775 END OE_OE_Form_Header_Payment;