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.12010000.6 2009/12/08 12:17:07 msundara ship $ */
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_PERCENTAGE THEN -- Added for bug 8478559
982         x_header_payment_tbl(1).payment_percentage := TO_NUMBER(p_attr_value); -- Added for bug 8478559
983     ELSIF p_attr_id = OE_Header_Payment_Util.G_PAYMENT_AMOUNT THEN
984         x_header_payment_tbl(1).payment_amount := TO_NUMBER(p_attr_value);
985     ELSIF p_attr_id = OE_Header_Payment_Util.G_PAYMENT_COLLECTION_EVENT THEN
986         x_header_payment_tbl(1).payment_collection_event := p_attr_value;
987     ELSIF p_attr_id = OE_Header_Payment_Util.G_PAYMENT_TRX_ID THEN
988         x_header_payment_tbl(1).payment_trx_id := TO_NUMBER(p_attr_value);
989     ELSIF p_attr_id = OE_Header_Payment_Util.G_PAYMENT_TYPE_CODE THEN
990         x_header_payment_tbl(1).payment_type_code := p_attr_value;
991     ELSIF p_attr_id = OE_Header_Payment_Util.G_PAYMENT_SET_ID THEN
992         x_header_payment_tbl(1).payment_set_id := TO_NUMBER(p_attr_value);
993     ELSIF p_attr_id = OE_Header_Payment_Util.G_PREPAID_AMOUNT THEN
994         x_header_payment_tbl(1).prepaid_amount := TO_NUMBER(p_attr_value);
995     ELSIF p_attr_id = OE_Header_Payment_Util.G_RECEIPT_METHOD_ID THEN
996         x_header_payment_tbl(1).receipt_method_id := TO_NUMBER(p_attr_value);
997     ELSIF p_attr_id = OE_Header_Payment_Util.G_DEFER_PROCESSING_FLAG THEN
998         x_header_payment_tbl(1).defer_payment_processing_flag := p_attr_value;
999     ELSIF p_attr_id = OE_Header_Payment_Util.G_TANGIBLE_ID THEN
1000         x_header_payment_tbl(1).tangible_id := p_attr_value;
1001     ELSIF p_attr_id = OE_Header_Payment_Util.G_INSTRUMENT_SECURITY_CODE THEN --R12 CC encryption
1002         x_header_payment_tbl(1).instrument_security_code := p_attr_value;
1003     ELSIF p_attr_id = OE_Header_Payment_Util.G_CC_INSTRUMENT_ID THEN --R12 CC encryption
1004         x_header_payment_tbl(1).cc_instrument_id := p_attr_value;
1005     ELSIF p_attr_id = OE_Header_Payment_Util.G_CC_INSTRUMENT_ASSIGNMENT_ID THEN --R12 CC encryption
1006         x_header_payment_tbl(1).cc_instrument_assignment_id := p_attr_value;
1007     ELSIF p_attr_id = OE_Header_Payment_Util.G_ATTRIBUTE1
1008     OR     p_attr_id = OE_Header_Payment_Util.G_ATTRIBUTE2
1009     OR     p_attr_id = OE_Header_Payment_Util.G_ATTRIBUTE3
1010     OR     p_attr_id = OE_Header_Payment_Util.G_ATTRIBUTE4
1011     OR     p_attr_id = OE_Header_Payment_Util.G_ATTRIBUTE5
1012     OR     p_attr_id = OE_Header_Payment_Util.G_ATTRIBUTE6
1013     OR     p_attr_id = OE_Header_Payment_Util.G_ATTRIBUTE7
1014     OR     p_attr_id = OE_Header_Payment_Util.G_ATTRIBUTE8
1015     OR     p_attr_id = OE_Header_Payment_Util.G_ATTRIBUTE9
1016     OR     p_attr_id = OE_Header_Payment_Util.G_ATTRIBUTE10
1017     OR     p_attr_id = OE_Header_Payment_Util.G_ATTRIBUTE11
1018     OR     p_attr_id = OE_Header_Payment_Util.G_ATTRIBUTE12
1019     OR     p_attr_id = OE_Header_Payment_Util.G_ATTRIBUTE13
1020     OR     p_attr_id = OE_Header_Payment_Util.G_ATTRIBUTE14
1021     OR     p_attr_id = OE_Header_Payment_Util.G_ATTRIBUTE15
1022     OR     p_attr_id = OE_Header_Payment_Util.G_CONTEXT
1023     THEN
1024 
1025         x_header_payment_tbl(1).attribute1 := p_attribute1;
1026         x_header_payment_tbl(1).attribute2 := p_attribute2;
1027         x_header_payment_tbl(1).attribute3 := p_attribute3;
1028         x_header_payment_tbl(1).attribute4 := p_attribute4;
1029         x_header_payment_tbl(1).attribute5 := p_attribute5;
1030         x_header_payment_tbl(1).attribute6 := p_attribute6;
1031         x_header_payment_tbl(1).attribute7 := p_attribute7;
1032         x_header_payment_tbl(1).attribute8 := p_attribute8;
1033         x_header_payment_tbl(1).attribute9 := p_attribute9;
1034         x_header_payment_tbl(1).attribute10 := p_attribute10;
1035         x_header_payment_tbl(1).attribute11 := p_attribute11;
1036         x_header_payment_tbl(1).attribute12 := p_attribute12;
1037         x_header_payment_tbl(1).attribute13 := p_attribute13;
1038         x_header_payment_tbl(1).attribute14 := p_attribute14;
1039         x_header_payment_tbl(1).attribute15 := p_attribute15;
1040         x_header_payment_tbl(1).context   := p_context;
1041 
1042     ELSE
1043 
1044         --  Unexpected error, unrecognized attribute
1045 
1046         IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1047         THEN
1048             oe_msg_pub.Add_Exc_Msg
1049             (   G_PKG_NAME
1050             ,   'Copy_Attribute_To_Rec'
1051             ,   'Unrecognized attribute'
1052             );
1053         END IF;
1054 
1055         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1056 
1057     END IF;
1058 EXCEPTION
1059     WHEN OTHERS THEN
1060         IF oe_msg_pub.Check_Msg_Level(oe_msg_pub.G_MSG_LVL_UNEXP_ERROR)
1061         THEN
1062             oe_msg_pub.Add_Exc_Msg
1063             (   G_PKG_NAME
1064             ,   'Copy_Attribute_To_Rec'
1065             );
1066         END IF;
1067         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1068 END Copy_Attribute_To_Rec;
1069 --  R12 CC Encryption
1070 
1071 --  Procedure       Validate_And_Write
1072 --
1073 
1074 PROCEDURE Validate_And_Write
1075 ( x_return_status OUT NOCOPY VARCHAR2
1076 , x_msg_count OUT NOCOPY NUMBER
1077 , x_msg_data OUT NOCOPY VARCHAR2
1078 , p_payment_number               IN  NUMBER
1079 , p_header_id                    IN  NUMBER
1080 , x_creation_date OUT NOCOPY DATE
1081 , x_created_by OUT NOCOPY NUMBER
1082 , x_last_update_date OUT NOCOPY DATE
1083 , x_last_updated_by OUT NOCOPY NUMBER
1084 , x_last_update_login OUT NOCOPY NUMBER
1085 ,   x_program_id                    OUT NOCOPY NUMBER
1086 ,   x_program_application_id        OUT NOCOPY NUMBER
1087 ,   x_program_update_date           OUT NOCOPY DATE
1088 ,   x_request_id                    OUT NOCOPY NUMBER
1089 , x_lock_control OUT NOCOPY NUMBER
1090 )
1091 IS
1092 l_x_old_Header_Payment_tbl      OE_Order_PUB.Header_PAYMENT_Tbl_Type;
1093 l_control_rec                 OE_GLOBALS.Control_Rec_Type;
1094 l_return_status               VARCHAR2(1);
1095 l_x_Header_Payment_tbl        OE_Order_PUB.Header_PAYMENT_Tbl_Type;
1096 
1097 --
1098 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1099 --
1100 BEGIN
1101 
1102     IF l_debug_level  > 0 THEN
1103         oe_debug_pub.add(  'ENTERING OE_OE_FORM_HEADER_Payment.VALIDATE_AND_WRITE' , 1 ) ;
1104     END IF;
1105 
1106     -- Set the UI flag
1107     OE_GLOBALS.G_UI_FLAG := TRUE;
1108 
1109     --  Set control flags.
1110 
1111     l_control_rec.controlled_operation := TRUE;
1112     l_control_rec.validate_entity      := TRUE;
1113     l_control_rec.write_to_DB          := TRUE;
1114 
1115     l_control_rec.clear_dependents     := FALSE;
1116     l_control_rec.default_attributes   := FALSE;
1117     l_control_rec.change_attributes    := FALSE;
1118     l_control_rec.process              := FALSE;
1119 
1120     --  Instruct API to retain its caches
1121 
1122     l_control_rec.clear_api_cache      := FALSE;
1123     l_control_rec.clear_api_requests   := FALSE;
1124 
1125     --  Read Header_Payment from cache
1126     Get_Header_Payment
1127     (   p_db_record                   => TRUE
1128     ,   p_payment_number              => p_payment_number
1129     ,   p_header_id                   => p_header_id
1130     ,   x_header_Payment_rec          => l_x_old_Header_PAYMENT_tbl(1)
1131     );
1132 
1133 
1134     Get_Header_Payment
1135     (   p_db_record                   => FALSE
1136     ,   p_payment_number              => p_payment_number
1137     ,   p_header_id                   => p_header_id
1138     ,   x_header_Payment_rec          => l_x_Header_Payment_tbl(1)
1139     );
1140 
1141     --  Set Operation.
1142 
1143     IF FND_API.To_Boolean(l_x_Header_Payment_tbl(1).db_flag) THEN
1144         l_x_Header_Payment_tbl(1).operation := OE_GLOBALS.G_OPR_UPDATE;
1145     ELSE
1146         l_x_Header_Payment_tbl(1).operation := OE_GLOBALS.G_OPR_CREATE;
1147     END IF;
1148 
1149     --  Populate Header_Payment table
1150 
1151     --  Call OE_Order_PVT.Process_order
1152 
1153 
1154     OE_Order_PVT.Header_Payments
1155     (   p_validation_level              => FND_API.G_VALID_LEVEL_NONE
1156     ,   p_init_msg_list               => FND_API.G_TRUE
1157     ,   p_control_rec                   => l_control_rec
1158     ,   p_x_Header_Payment_tbl          => l_x_Header_PAYMENT_tbl
1159     ,   p_x_old_Header_Payment_tbl      => l_x_old_Header_PAYMENT_tbl
1160     ,   x_return_status                 => l_return_status
1161     );
1162 
1163     IF  l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1164         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1165     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1166         RAISE FND_API.G_EXC_ERROR;
1167     END IF;
1168 
1169     --  Load OUT parameters.
1170 
1171     x_creation_date                := l_x_Header_Payment_tbl(1).creation_date;
1172     x_created_by                   := l_x_Header_Payment_tbl(1).created_by;
1173     x_last_update_date             := l_x_Header_Payment_tbl(1).last_update_date;
1174     x_last_updated_by              := l_x_Header_Payment_tbl(1).last_updated_by;
1175     x_last_update_login            := l_x_Header_Payment_tbl(1).last_update_login;
1176     x_lock_control                 := l_x_Header_Payment_tbl(1).lock_control;
1177 
1178     --  Clear Header_Payment record cache
1179 
1180     Clear_Header_Payment;
1181 
1182     --  Keep track of performed operations.
1183 
1184 --    l_old_Header_Payment_rec.operation := l_Header_PAYMENT_rec.operation;
1185 
1186 
1187     -- Re-set the UI flag to FALSE
1188     OE_GLOBALS.G_UI_FLAG := FALSE;
1189 
1190     --  Set return status.
1191 
1192     x_return_status := FND_API.G_RET_STS_SUCCESS;
1193 
1194     --  Get message count and data
1195 
1196     oe_msg_pub.Count_And_Get
1197     (   p_count                       => x_msg_count
1198     ,   p_data                        => x_msg_data
1199     );
1200 
1201     IF l_debug_level  > 0 THEN
1202         oe_debug_pub.add(  'EXITING OE_OE_FORM_HEADER_Payment.VALIDATE_AND_WRITE' , 1 ) ;
1203     END IF;
1204 
1205 EXCEPTION
1206 
1207     WHEN FND_API.G_EXC_ERROR THEN
1208 
1209 	   OE_GLOBALS.G_UI_FLAG := FALSE;
1210 
1211         x_return_status := FND_API.G_RET_STS_ERROR;
1212 
1213         --  Get message count and data
1214 
1215         oe_msg_pub.Count_And_Get
1216         (   p_count                       => x_msg_count
1217         ,   p_data                        => x_msg_data
1218         );
1219 
1220     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1221 
1222 	   OE_GLOBALS.G_UI_FLAG := FALSE;
1223 
1224         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1225 
1226         --  Get message count and data
1227 
1228         oe_msg_pub.Count_And_Get
1229         (   p_count                       => x_msg_count
1230         ,   p_data                        => x_msg_data
1231         );
1232 
1233     WHEN OTHERS THEN
1234 
1235 	   OE_GLOBALS.G_UI_FLAG := FALSE;
1236 
1237         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1238 
1239         IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1240         THEN
1241             oe_msg_pub.Add_Exc_Msg
1242             (   G_PKG_NAME
1243             ,   'Validate_And_Write'
1244             );
1245         END IF;
1246 
1247         --  Get message count and data
1248 
1249         oe_msg_pub.Count_And_Get
1250         (   p_count                       => x_msg_count
1251         ,   p_data                        => x_msg_data
1252         );
1253 
1254 END Validate_And_Write;
1255 
1256 --  Procedure       Delete_Row
1257 --
1258 
1259 PROCEDURE Delete_Row
1260 ( x_return_status OUT NOCOPY VARCHAR2
1261 , x_msg_count OUT NOCOPY NUMBER
1262 , x_msg_data OUT NOCOPY VARCHAR2
1263 , p_payment_number               IN  NUMBER
1264 , p_header_id                    IN  NUMBER
1265 )
1266 IS
1267 l_control_rec                 OE_GLOBALS.Control_Rec_Type;
1268 l_return_status               VARCHAR2(1);
1269 l_x_Header_Payment_tbl        OE_Order_PUB.Header_Payment_Tbl_Type;
1270 l_x_Old_Header_Payment_tbl    OE_Order_PUB.Header_Payment_Tbl_Type;
1271 
1272 --
1273 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1274 --
1275 BEGIN
1276 
1277     IF l_debug_level  > 0 THEN
1278         oe_debug_pub.add(  'ENTERING OE_OE_FORM_HEADER_Payment.DELETE_ROW' , 1 ) ;
1279     END IF;
1280 
1281     -- Set the UI flag
1282     OE_GLOBALS.G_UI_FLAG := TRUE;
1283 
1284     --  Set control flags.
1285 
1286     l_control_rec.controlled_operation := TRUE;
1287     l_control_rec.check_security       := TRUE;
1288     l_control_rec.validate_entity      := TRUE;
1289     l_control_rec.write_to_DB          := TRUE;
1290 
1291     l_control_rec.clear_dependents     := FALSE;
1292     l_control_rec.default_attributes   := FALSE;
1293     l_control_rec.change_attributes    := FALSE;
1294     l_control_rec.process              := FALSE;
1295 
1296     --  Instruct API to retain its caches
1297 
1298     l_control_rec.clear_api_cache      := FALSE;
1299     l_control_rec.clear_api_requests   := FALSE;
1300 
1301     --  Read DB record from cache
1302 
1303     Get_Header_Payment
1304     (   p_db_record                   => TRUE
1305     ,   p_payment_number              => p_payment_number
1306     ,   p_header_id                   => p_header_id
1307     ,   x_header_Payment_rec          => l_x_Header_Payment_tbl(1)
1308     );
1309 
1310     --  Set Operation.
1311 
1312     l_x_Header_Payment_tbl(1).operation := OE_GLOBALS.G_OPR_DELETE;
1313 
1314     --  Populate Header_Payment table
1315 
1316 
1317     --  Call OE_Order_PVT.Process_order
1318 
1319 
1320     OE_Order_PVT.Header_Payments
1321     (   p_validation_level            => FND_API.G_VALID_LEVEL_NONE
1322     ,   p_init_msg_list               => FND_API.G_TRUE
1323     ,   p_control_rec                 => l_control_rec
1324     ,   p_x_Header_Payment_tbl        => l_x_Header_Payment_tbl
1325     ,   p_x_old_Header_Payment_tbl    => l_x_old_Header_Payment_tbl
1326     ,   x_return_status               => l_return_status
1327     );
1328 
1329     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1330         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1331     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1332         RAISE FND_API.G_EXC_ERROR;
1333     END IF;
1334 
1335 
1336     --  Clear Header_Payment record cache
1337 
1338     Clear_Header_Payment;
1339 
1340     -- Re-set the UI flag to FALSE
1341     OE_GLOBALS.G_UI_FLAG := FALSE;
1342 
1343     --  Set return status.
1344 
1345     x_return_status := FND_API.G_RET_STS_SUCCESS;
1346 
1347     --  Get message count and data
1348 
1349     oe_msg_pub.Count_And_Get
1350     (   p_count                       => x_msg_count
1351     ,   p_data                        => x_msg_data
1352     );
1353 
1354     IF l_debug_level  > 0 THEN
1355         oe_debug_pub.add(  'EXITING OE_OE_FORM_HEADER_Payment.DELETE_ROW' , 1 ) ;
1356     END IF;
1357 
1358 EXCEPTION
1359 
1360     WHEN FND_API.G_EXC_ERROR THEN
1361 
1362 	   OE_GLOBALS.G_UI_FLAG := FALSE;
1363 
1364         x_return_status := FND_API.G_RET_STS_ERROR;
1365 
1366         --  Get message count and data
1367 
1368         oe_msg_pub.Count_And_Get
1369         (   p_count                       => x_msg_count
1370         ,   p_data                        => x_msg_data
1371         );
1372 
1373     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1374 
1375 	   OE_GLOBALS.G_UI_FLAG := FALSE;
1376 
1377         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1378 
1379         --  Get message count and data
1380 
1381         oe_msg_pub.Count_And_Get
1382         (   p_count                       => x_msg_count
1383         ,   p_data                        => x_msg_data
1384         );
1385 
1386     WHEN OTHERS THEN
1387 
1388 	   OE_GLOBALS.G_UI_FLAG := FALSE;
1389 
1390         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1391 
1392         IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1393         THEN
1394             oe_msg_pub.Add_Exc_Msg
1395             (   G_PKG_NAME
1396             ,   'Delete_Row'
1397             );
1398         END IF;
1399 
1400         --  Get message count and data
1401 
1402         oe_msg_pub.Count_And_Get
1403         (   p_count                       => x_msg_count
1404         ,   p_data                        => x_msg_data
1405         );
1406 
1407 END Delete_Row;
1408 
1409 --  Procedure       Process_Entity
1410 --
1411 
1412 PROCEDURE Process_Entity
1413 ( x_return_status OUT NOCOPY VARCHAR2
1414 , x_msg_count OUT NOCOPY NUMBER
1415 , x_msg_data OUT NOCOPY VARCHAR2
1416 )
1417 IS
1418 l_return_status               VARCHAR2(1);
1419 l_x_header_rec                OE_Order_PUB.Header_Rec_Type;
1420 l_control_rec                 OE_GLOBALS.Control_Rec_Type;
1421 l_x_Header_Adj_rec            OE_Order_PUB.Header_Adj_Rec_Type;
1422 l_x_Header_Adj_tbl            OE_Order_PUB.Header_Adj_Tbl_Type;
1423 l_x_Header_Scredit_rec        OE_Order_PUB.Header_Scredit_Rec_Type;
1424 l_x_Header_Scredit_tbl        OE_Order_PUB.Header_Scredit_Tbl_Type;
1425 l_x_Header_Payment_rec        OE_Order_PUB.Header_PAYMENT_Rec_Type;
1426 l_x_Header_Payment_tbl        OE_Order_PUB.Header_PAYMENT_Tbl_Type;
1427 l_x_line_rec                  OE_Order_PUB.Line_Rec_Type;
1428 l_x_line_tbl                  OE_Order_PUB.Line_Tbl_Type;
1429 l_x_Line_Adj_rec              OE_Order_PUB.Line_Adj_Rec_Type;
1430 l_x_Line_Adj_tbl              OE_Order_PUB.Line_Adj_Tbl_Type;
1431 l_x_Line_Scredit_rec          OE_Order_PUB.Line_Scredit_Rec_Type;
1432 l_x_Line_Scredit_tbl          OE_Order_PUB.Line_Scredit_Tbl_Type;
1433 l_x_Line_Payment_rec          OE_Order_PUB.Line_PAYMENT_Rec_Type;
1434 l_x_Line_Payment_tbl          OE_Order_PUB.Line_PAYMENT_Tbl_Type;
1435 l_x_Lot_Serial_rec            OE_Order_PUB.Lot_Serial_Rec_Type;
1436 l_x_Lot_Serial_tbl            OE_Order_PUB.Lot_Serial_Tbl_Type;
1437 l_x_action_request_tbl        OE_Order_PUB.request_tbl_type;
1438 l_x_Header_price_Att_tbl        OE_Order_PUB.Header_Price_Att_Tbl_Type;
1439 l_x_Header_Adj_Att_tbl          OE_Order_PUB.Header_Adj_Att_Tbl_Type;
1440 l_x_Header_Adj_Assoc_tbl        OE_Order_PUB.Header_Adj_Assoc_Tbl_Type;
1441 l_x_Line_price_Att_tbl          OE_Order_PUB.Line_Price_Att_Tbl_Type;
1442 l_x_Line_Adj_Att_tbl            OE_Order_PUB.Line_Adj_Att_Tbl_Type;
1443 l_x_Line_Adj_Assoc_tbl          OE_Order_PUB.Line_Adj_Assoc_Tbl_Type;
1444 
1445 --
1446 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1447 --
1448 BEGIN
1449 
1450     IF l_debug_level  > 0 THEN
1451         oe_debug_pub.add(  'ENTERING OE_OE_FORM_HEADER_PAYMENT.PROCESS_ENTITY' , 1 ) ;
1452     END IF;
1453 
1454     -- Set the UI flag
1455     OE_GLOBALS.G_UI_FLAG := TRUE;
1456 
1457     --  Set control flags.
1458 
1459     l_control_rec.controlled_operation := TRUE;
1460     l_control_rec.process              := TRUE;
1461     l_control_rec.process_entity       := OE_GLOBALS.G_ENTITY_HEADER_Payment;
1462 
1463     l_control_rec.check_security       := FALSE;
1464     l_control_rec.clear_dependents   := FALSE;
1465     l_control_rec.default_attributes   := FALSE;
1466     l_control_rec.change_attributes    := FALSE;
1467     l_control_rec.validate_entity      := FALSE;
1468     l_control_rec.write_to_DB          := FALSE;
1469 
1470     --  Instruct API to clear its request table
1471 
1472     l_control_rec.clear_api_cache      := FALSE;
1473     l_control_rec.clear_api_requests   := FALSE;
1474 
1475     --  Call OE_Order_PVT.Process_order
1476 
1477     OE_Order_PVT.Process_order
1478     (   p_api_version_number          => 1.0
1479     ,   p_init_msg_list               => FND_API.G_TRUE
1480     ,   x_return_status               => l_return_status
1481     ,   x_msg_count                   => x_msg_count
1482     ,   x_msg_data                    => x_msg_data
1483     ,   p_control_rec                 => l_control_rec
1484     ,   p_x_header_rec                => l_x_header_rec
1485     ,   p_x_Header_Adj_tbl            => l_x_Header_Adj_tbl
1486     ,   p_x_Header_Scredit_tbl        => l_x_Header_Scredit_tbl
1487     ,   p_x_Header_Payment_tbl        => l_x_Header_Payment_tbl
1488     ,   p_x_line_tbl                  => l_x_line_tbl
1489     ,   p_x_Line_Adj_tbl              => l_x_Line_Adj_tbl
1490     ,   p_x_Line_Scredit_tbl          => l_x_Line_Scredit_tbl
1491     ,   p_x_Line_Payment_tbl          => l_x_Line_Payment_tbl
1492     ,   p_x_Lot_Serial_tbl            => l_x_Lot_Serial_tbl
1493     ,   p_x_action_request_tbl        => l_x_action_request_tbl
1494     ,   p_x_Header_price_Att_tbl      => l_x_Header_price_Att_tbl
1495     ,   p_x_Header_Adj_Att_tbl        => l_x_Header_Adj_Att_tbl
1496     ,   p_x_Header_Adj_Assoc_tbl      => l_x_Header_Adj_Assoc_tbl
1497     ,   p_x_Line_price_Att_tbl        => l_x_Line_price_Att_tbl
1498     ,   p_x_Line_Adj_Att_tbl          => l_x_Line_Adj_Att_tbl
1499     ,   p_x_Line_Adj_Assoc_tbl        => l_x_Line_Adj_Assoc_tbl
1500 
1501     );
1502 
1503     Oe_Order_Pvt.Process_Requests_And_Notify
1504     (   p_process_requests           => TRUE
1505     ,   p_init_msg_list               => FND_API.G_TRUE
1506      ,  p_notify                     => FALSE
1507      ,  x_return_status              => l_return_status
1508     );
1509 
1510     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1511         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1512     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1513         RAISE FND_API.G_EXC_ERROR;
1514     END IF;
1515 
1516 
1517     -- Re-set the UI flag to FALSE
1518     OE_GLOBALS.G_UI_FLAG := FALSE;
1519 
1520     --  Set return status.
1521 
1522     x_return_status := FND_API.G_RET_STS_SUCCESS;
1523 
1524     --  Get message count and data
1525 
1526     oe_msg_pub.Count_And_Get
1527     (   p_count                       => x_msg_count
1528     ,   p_data                        => x_msg_data
1529     );
1530 
1531     IF l_debug_level  > 0 THEN
1532         oe_debug_pub.add(  'EXITING OE_OE_FORM_HEADER_Payment.PROCESS_ENTITY' , 1 ) ;
1533     END IF;
1534 
1535 EXCEPTION
1536 
1537     WHEN FND_API.G_EXC_ERROR THEN
1538 
1539 	   OE_GLOBALS.G_UI_FLAG := FALSE;
1540 
1541         x_return_status := FND_API.G_RET_STS_ERROR;
1542 
1543         --  Get message count and data
1544 
1545         oe_msg_pub.Count_And_Get
1546         (   p_count                       => x_msg_count
1547         ,   p_data                        => x_msg_data
1548         );
1549 
1550     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1551 
1552 	   OE_GLOBALS.G_UI_FLAG := FALSE;
1553 
1554         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1555 
1556         --  Get message count and data
1557 
1558         oe_msg_pub.Count_And_Get
1559         (   p_count                       => x_msg_count
1560         ,   p_data                        => x_msg_data
1561         );
1562 
1563     WHEN OTHERS THEN
1564 
1565 	   OE_GLOBALS.G_UI_FLAG := FALSE;
1566 
1567         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1568 
1569         IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1570         THEN
1571             oe_msg_pub.Add_Exc_Msg
1572             (   G_PKG_NAME
1573             ,   'Process_Entity'
1574             );
1575         END IF;
1576 
1577         --  Get message count and data
1578 
1579         oe_msg_pub.Count_And_Get
1580         (   p_count                       => x_msg_count
1581         ,   p_data                        => x_msg_data
1582         );
1583 
1584 END Process_Entity;
1585 
1586 --  Procedure       lock_Row
1587 --
1588 
1589 PROCEDURE Lock_Row
1590 ( x_return_status OUT NOCOPY VARCHAR2
1591 , x_msg_count OUT NOCOPY NUMBER
1592 , x_msg_data OUT NOCOPY VARCHAR2
1593 , p_payment_number                IN  NUMBER
1594 , p_header_id                     IN  NUMBER
1595 , p_lock_control                  IN  NUMBER
1596 )
1597 IS
1598 l_return_status               VARCHAR2(1);
1599 l_x_Header_Payment_rec          OE_Order_PUB.Header_PAYMENT_Rec_Type;
1600 
1601 --
1602 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1603 --
1604 BEGIN
1605 
1606     IF l_debug_level  > 0 THEN
1607         oe_debug_pub.add(  'ENTERING OE_OE_FORM_HEADER_PAYMENT.LOCK_ROW' , 1 ) ;
1608     END IF;
1609 
1610     --  Load Header_Payment record
1611 
1612     l_x_Header_Payment_rec.operation    :=  OE_GLOBALS.G_OPR_LOCK;
1613     l_x_Header_Payment_rec.payment_number :=   p_payment_number      ;
1614     l_x_Header_Payment_rec.header_id      :=   p_header_id           ;
1615     l_x_Header_Payment_rec.lock_control :=  p_lock_control;
1616 
1617     --  Call oe_headers_Payments_util.lock_row instead of OE_Order_PVT.Lock_order
1618 
1619     OE_Header_Payment_Util.Lock_Row
1620     (   x_return_status           => l_return_status
1621     ,   p_x_header_Payment_rec    => l_x_header_payment_rec );
1622     IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
1623 
1624         --  Set DB flag and write record to cache.
1625 
1626         l_x_Header_Payment_rec.db_flag := FND_API.G_TRUE;
1627 
1628    Write_Header_Payment
1629 	(   p_Header_Payment_rec          => l_x_Header_Payment_rec
1630 	,   p_db_record                   => TRUE
1631 	);
1632 
1633     END IF;
1634 
1635     --  Set return status.
1636 
1637     x_return_status := l_return_status;
1638 
1639     --  Get message count and data
1640 
1641     oe_msg_pub.Count_And_Get
1642     (   p_count                       => x_msg_count
1643     ,   p_data                        => x_msg_data
1644     );
1645 
1646     IF l_debug_level  > 0 THEN
1647         oe_debug_pub.add(  'EXITING OE_OE_FORM_HEADER_Payment.LOCK_ROW' , 1 ) ;
1648     END IF;
1649 
1650 EXCEPTION
1651 
1652     WHEN OTHERS THEN
1653 
1654         IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1655         THEN
1656             oe_msg_pub.Add_Exc_Msg
1657             (   G_PKG_NAME
1658             ,   'Lock_Row'
1659             );
1660         END IF;
1661 
1662         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1663 
1664         --  Get message count and data
1665 
1666         oe_msg_pub.Count_And_Get
1667         (   p_count                       => x_msg_count
1668         ,   p_data                        => x_msg_data
1669         );
1670 
1671 
1672 
1673 END Lock_Row;
1674 
1675 --  Procedures maintaining Header_Payment record cache.
1676 
1677 PROCEDURE Write_Header_Payment
1678 (   p_Header_Payment_rec            IN  OE_Order_PUB.Header_PAYMENT_Rec_Type
1679 ,   p_db_record                     IN  BOOLEAN := FALSE
1680 )
1681 IS
1682 --
1683 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1684 --
1685 BEGIN
1686 
1687     IF l_debug_level  > 0 THEN
1688         oe_debug_pub.add(  'ENTERING OE_OE_FORM_HEADER_PAYMENT.WRITE_HEADER_PAYMENT' , 1 ) ;
1689     END IF;
1690 
1691     g_Header_Payment_rec := p_Header_Payment_rec;
1692 
1693     IF p_db_record THEN
1694 
1695         g_db_Header_Payment_rec := p_Header_Payment_rec;
1696 
1697     END IF;
1698 
1699     IF l_debug_level  > 0 THEN
1700         oe_debug_pub.add(  'EXITING OE_OE_FORM_HEADER_PAYMENT.WRITE_HEADER_PAYMENT' , 1 ) ;
1701     END IF;
1702 
1703 END Write_Header_Payment;
1704 
1705 PROCEDURE Get_Header_Payment
1706 (   p_db_record                     IN  BOOLEAN := FALSE
1707 ,   p_payment_number                IN  NUMBER
1708 ,   p_header_id                     IN  NUMBER
1709 ,   x_header_Payment_rec            OUT NOCOPY OE_Order_PUB.Header_PAYMENT_Rec_Type
1710 )
1711 IS
1712 --
1713 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1714 --
1715 BEGIN
1716 
1717     IF l_debug_level  > 0 THEN
1718         oe_debug_pub.add(  'ENTERING OE_OE_FORM_HEADER_PAYMENT.GET_HEADER_PAYMENT' , 1 ) ;
1719     END IF;
1720 
1721     IF  nvl(p_payment_number, -1) <> NVL(g_Header_Payment_rec.payment_number,-1) or
1722         p_header_id <> NVL(g_Header_Payment_rec.header_id, -1)
1723     THEN
1724 
1725         --  Query row from DB
1726 
1727         OE_Header_Payment_Util.Query_Row
1728         (   p_payment_number              => p_payment_number
1729         ,   p_header_id                   => p_header_id
1730         ,   x_header_Payment_rec          => g_Header_Payment_rec
1731         );
1732 
1733         g_Header_Payment_rec.db_flag   := FND_API.G_TRUE;
1734 
1735         --  Load DB record
1736 
1737         g_db_Header_Payment_rec        := g_Header_PAYMENT_rec;
1738 
1739     END IF;
1740 
1741     IF l_debug_level  > 0 THEN
1742         oe_debug_pub.add(  'EXITING OE_OE_FORM_HEADER_Payment.GET_HEADER_PAYMENT' , 1 ) ;
1743     END IF;
1744 
1745     IF p_db_record THEN
1746 
1747         x_header_Payment_rec:= g_db_Header_PAYMENT_rec;
1748 
1749     ELSE
1750 
1751         x_header_Payment_rec:= g_Header_PAYMENT_rec;
1752 
1753     END IF;
1754 
1755 END Get_Header_Payment;
1756 
1757 PROCEDURE Clear_Header_Payment
1758 IS
1759 --
1760 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1761 --
1762 BEGIN
1763 
1764     IF l_debug_level  > 0 THEN
1765         oe_debug_pub.add(  'ENTERING OE_OE_FORM_HEADER_Payment.CLEAR_HEADER_PAYMENT' , 1 ) ;
1766     END IF;
1767 
1768     g_Header_Payment_rec           := OE_Order_PUB.G_MISS_HEADER_PAYMENT_REC;
1769     g_db_Header_Payment_rec        := OE_Order_PUB.G_MISS_HEADER_PAYMENT_REC;
1770 
1771     IF l_debug_level  > 0 THEN
1772         oe_debug_pub.add(  'EXITING OE_OE_FORM_HEADER_Payment.CLEAR_HEADER_PAYMENT' , 1 ) ;
1773     END IF;
1774 
1775 END Clear_Header_Payment;
1776 
1777 END OE_OE_Form_Header_Payment;