DBA Data[Home] [Help]

PACKAGE BODY: APPS.OE_OE_FORM_LINE_PAYMENT

Source


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