1 PACKAGE BODY OE_Validate_Line_Payment AS
2 /* $Header: OEXLLPMB.pls 120.6 2006/07/31 18:44:40 lkxu noship $ */
3
4 -- Global constant holding the package name
5
6 G_PKG_NAME CONSTANT VARCHAR2(30) := 'OE_Validate_Line_Payment';
7
8 -- Procedure Entity
9
10 PROCEDURE Entity
11 ( x_return_status OUT NOCOPY VARCHAR2
12 , p_Line_Payment_rec IN OE_Order_PUB.Line_Payment_Rec_Type
13 , p_old_Line_Payment_rec IN OE_Order_PUB.Line_Payment_Rec_Type :=
14 OE_Order_PUB.G_MISS_LINE_PAYMENT_REC
15 )
16 IS
17 l_return_status VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
18 l_count NUMBER := 0;
19 l_comt_count NUMBER := 0;
20 l_prepay_count number;
21 l_term_id number;
22 l_prepayment_flag VARCHAR2(1) := NULL;
23 --R12 CC Encryption
24 l_invoice_to_org_id NUMBER;
25
26 --bug5176401 start
27 l_hdr_trxn_extn_id NUMBER;
28 l_hdr_auth_date DATE;
29 l_lin_creation_date DATE;
30 l_hdr_cc_pmt_exists BOOLEAN;
31 l_lin_cc_pmt_allowed BOOLEAN;
32 --bug5176401 end
33
34 BEGIN
35
36 OE_DEBUG_PUB.Add('Entering OE_VALIDATE_Line_Payments.Entity',1);
37 -- Check required attributes.
38
39 IF p_Line_Payment_rec.payment_number IS NULL
40 THEN
41
42 l_return_status := FND_API.G_RET_STS_ERROR;
43
44 IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
45 THEN
46
47 FND_MESSAGE.SET_NAME('ONT','OE_ATTRIBUTE_REQUIRED');
48 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','payment');
49 oe_msg_pub.Add;
50
51 END IF;
52
53 END IF;
54
55 IF p_Line_Payment_rec.HEADER_ID IS NULL
56 THEN
57
58 l_return_status := FND_API.G_RET_STS_ERROR;
59
60 IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
61 THEN
62
63 FND_MESSAGE.SET_NAME('ONT','OE_ATTRIBUTE_REQUIRED');
64 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Header');
65 oe_msg_pub.Add;
66
67 END IF;
68
69 END IF;
70
71
72 IF p_Line_Payment_rec.LINE_ID IS NULL
73 THEN
74
75 l_return_status := FND_API.G_RET_STS_ERROR;
76
77 IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
78 THEN
79
80 FND_MESSAGE.SET_NAME('ONT','OE_ATTRIBUTE_REQUIRED');
81 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','LINE');
82 oe_msg_pub.Add;
83
84 END IF;
85
86 END IF;
87
88 --
89 -- Check rest of required attributes here.
90 --
91
92 IF p_Line_Payment_rec.payment_type_code = 'CREDIT_CARD' THEN
93 --Need to validate the credit card attributes only if the
94 --trxn extension id is null
95 IF p_Line_Payment_rec.trxn_extension_id is null THEN --R12 CC Encryption
96 --bug 5176015
97 /*IF p_Line_Payment_rec.credit_card_number IS NULL THEN
98 l_return_status := FND_API.G_RET_STS_ERROR;
99
100 IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
101 THEN
102
103 FND_MESSAGE.SET_NAME('ONT','OE_ATTRIBUTE_REQUIRED');
104 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','CREDIT_CARD_NUMBER');
105 oe_msg_pub.Add;
106
107 END IF;
108 ELSIF p_line_Payment_rec.credit_card_holder_name IS NULL THEN
109 l_return_status := FND_API.G_RET_STS_ERROR;
110
111 IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
112 THEN
113
114 FND_MESSAGE.SET_NAME('ONT','OE_ATTRIBUTE_REQUIRED');
115 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','CREDIT_CARD_HOLDER_NAME');
116 oe_msg_pub.Add;
117
118 END IF;
119 ELSIF p_line_Payment_rec.credit_card_expiration_date IS NULL THEN
120 l_return_status := FND_API.G_RET_STS_ERROR;
121
122 IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
123 THEN
124
125 FND_MESSAGE.SET_NAME('ONT','OE_ATTRIBUTE_REQUIRED');
126 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','CREDIT_CARD_EXPIRATION_DATE');
127 oe_msg_pub.Add;
128
129 END IF;
130 END IF;*/
131 --bug 5176015
132
133 --bug5176401 start
134 IF p_line_payment_rec.Operation = OE_GLOBALS.G_OPR_CREATE THEN
135 BEGIN
136 SELECT trxn_extension_id
137 INTO l_hdr_trxn_extn_id
138 FROM oe_payments
139 WHERE header_id=p_Line_Payment_rec.header_id
140 AND line_id IS NULL
141 AND nvl(payment_collection_event, 'PREPAY') = 'INVOICE';
142
143 l_hdr_cc_pmt_exists := TRUE;
144 EXCEPTION
145 WHEN NO_DATA_FOUND THEN
146 l_hdr_cc_pmt_exists := FALSE;
147 l_lin_cc_pmt_allowed := TRUE;
148 WHEN OTHERS THEN
149 l_hdr_cc_pmt_exists := FALSE;
150 l_lin_cc_pmt_allowed := TRUE;
151 END;
152
153 IF l_hdr_cc_pmt_exists AND
154 l_hdr_trxn_extn_id IS NOT NULL THEN
155 BEGIN
156 SELECT authorization_date
157 INTO l_hdr_auth_date
158 FROM IBY_TRXN_EXT_AUTHS_V
159 WHERE trxn_extension_id = l_hdr_trxn_extn_id
160 AND authorization_status=0
161 AND effective_auth_amount > 0;
162
163 IF l_hdr_auth_date IS NOT NULL THEN
164 BEGIN
165 SELECT creation_date
166 INTO l_lin_creation_date
167 FROM oe_order_lines_all
168 WHERE line_id=p_line_Payment_rec.line_id;
169 EXCEPTION
170 WHEN OTHERS THEN
171 RAISE FND_API.G_EXC_ERROR;
172 END;
173
174 IF l_lin_creation_date <= l_hdr_auth_date THEN
175 l_lin_cc_pmt_allowed := FALSE;
176 ELSE
177 l_lin_cc_pmt_allowed := TRUE;
178 END IF;
179 ELSE
180 l_lin_cc_pmt_allowed := TRUE;
181 END IF;
182 EXCEPTION
183 WHEN NO_DATA_FOUND THEN
184 l_lin_cc_pmt_allowed := TRUE;
185 WHEN OTHERS THEN
186 l_lin_cc_pmt_allowed := FALSE;
187 END;
188 ELSE
189 l_lin_cc_pmt_allowed := TRUE;
190 END IF;
191
192 IF NOT l_lin_cc_pmt_allowed THEN
193 l_return_status := FND_API.G_RET_STS_ERROR;
194
195 IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
196 THEN
197
198 FND_MESSAGE.SET_NAME('ONT','ONT_LIN_CC_NOT_ALLOWED');
199 oe_msg_pub.Add;
200
201 END IF;
202
203 END IF;
204 END IF; --operation is 'CREATE'
205 --bug5176401 end
206
207 --R12 CC Encryption
208 --Bill to is required to create a credit
209 --card
210 Begin
211 Select invoice_to_org_id
212 Into l_invoice_to_org_id
213 From oe_order_headers_all
214 Where header_id = p_line_payment_rec.header_id;
215 EXCEPTION WHEN NO_DATA_FOUND THEN
216 Null;
217 End;
218
219 IF l_invoice_to_org_id IS NULL THEN
220 l_return_status := FND_API.G_RET_STS_ERROR;
221 IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
222 THEN
223 FND_MESSAGE.SET_NAME('ONT', 'OE_VPM_INV_TO_REQUIRED');
224 oe_msg_pub.Add;
225 END IF;
226 END IF;
227 --R12 CC Encryption
228 END IF; --Trxn extension id is null
229 ELSIF p_Line_Payment_rec.payment_type_code = 'CHECK' THEN
230
231 IF p_Line_Payment_rec.check_number IS NULL THEN
232 l_return_status := FND_API.G_RET_STS_ERROR;
233
234 IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
235 THEN
236
237 FND_MESSAGE.SET_NAME('ONT','OE_ATTRIBUTE_REQUIRED');
238 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','CHECK_NUMBER');
239 oe_msg_pub.Add;
240
241 END IF;
242 END IF;
243
244 /* commment out for R12
245 ELSIF p_Line_Payment_rec.payment_type_code in ('ACH', 'DIRECT_DEBIT') THEN
246
247 IF p_Line_Payment_rec.payment_trx_id IS NULL THEN
248 l_return_status := FND_API.G_RET_STS_ERROR;
249
250 IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
251 THEN
252
253 FND_MESSAGE.SET_NAME('ONT','OE_ATTRIBUTE_REQUIRED');
254 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Bank Account ID');
255 oe_msg_pub.Add;
256
257 END IF;
258 END IF;
259 */
260
261 END IF;
262
263 IF nvl(p_Line_Payment_rec.payment_collection_event, 'INVOICE') = 'INVOICE' THEN
264
265 -- Cannot have more than one 'Invoice' payment instrument
266 SELECT count(payment_type_code)
267 INTO l_count
268 FROM oe_payments
269 WHERE line_id = p_Line_Payment_rec.line_id
270 AND header_id = p_Line_Payment_rec.header_id
271 AND payment_level_code = 'LINE'
272 AND nvl(payment_number, -1) <> nvl(p_Line_Payment_rec.payment_number, -1)
273 AND nvl(payment_collection_event, 'INVOICE') = 'INVOICE'
274 and payment_type_code <> 'COMMITMENT'
275 and p_Line_Payment_rec.payment_type_code <> 'COMMITMENT';
276
277 IF p_Line_Payment_rec.payment_type_code = 'COMMITMENT'
278 THEN
279 SELECT count(payment_type_code)
280 into l_comt_count
281 from oe_payments
282 where line_id = p_Line_Payment_rec.line_id
283 and header_id = p_Line_Payment_rec.header_id
284 and payment_level_code = 'LINE'
285 and nvl(payment_number, -1) <> nvl(p_Line_Payment_rec.payment_number, -1)
286 and payment_type_code = 'COMMITMENT';
287 END IF;
288
289 IF l_count > 0 or l_comt_count > 0 THEN
290 l_return_status := FND_API.G_RET_STS_ERROR;
291
292 IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
293 THEN
294
295 FND_MESSAGE.SET_NAME('ONT','ONT_INVOICE_PAYMENT_INSTRUMENT');
296 oe_msg_pub.Add;
297
298 END IF;
299 END IF;
300
301 select count(payment_type_code) into l_prepay_count
302 from oe_payments
303 where (payment_collection_event = 'PREPAY'
304 or prepaid_amount is not null )
305 and header_id = p_Line_Payment_rec.header_id;
306
307 select payment_term_id into l_term_id
308 from oe_order_headers_all
309 where header_id = p_Line_Payment_rec.header_id;
310
311 if l_prepay_count = 0 then
312
313 if l_term_id is not null then
314 l_prepayment_flag := AR_PUBLIC_UTILS.Check_Prepay_Payment_Term(
315 l_term_id);
316 end if;
317 end if;
318
319 if l_prepay_count > 0 and nvl(p_Line_Payment_rec.payment_type_code, 'x') <> 'COMMITMENT' then
320 oe_Debug_Pub.add('OEXLLPMB.pls: Prepayment exists at order level');
321
322 l_return_status := FND_API.G_RET_STS_ERROR;
323
324 IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
325 THEN
326 fnd_message.set_name('ONT', 'ONT_LINE_INVOICE_NOT_SUPPORTED');
327 oe_msg_pub.Add;
328 END IF;
329
330 end if;
331
332
333 ELSIF p_Line_Payment_rec.payment_collection_event = 'PREPAY' THEN
334
335 l_return_status := FND_API.G_RET_STS_ERROR;
336
337 IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
338 THEN
339 -- Prepayment instruments are not supported at line level
340 FND_MESSAGE.SET_NAME('ONT','ONT_LINE_PREPAY_NOT_SUPPORTED');
341 oe_msg_pub.Add;
342
343 END IF;
344
345 END IF;
346
347 IF p_Line_Payment_rec.payment_type_code in ('ACH', 'DIRECT_DEBIT') THEN
348
349 IF p_Line_Payment_rec.receipt_method_id IS NULL THEN
350 l_return_status := FND_API.G_RET_STS_ERROR;
351
352 IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
353 THEN
354
355 FND_MESSAGE.SET_NAME('ONT','OE_ATTRIBUTE_REQUIRED');
356 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Receipt Method');
357 oe_msg_pub.Add;
358
359 END IF;
360 END IF;
361
362 END IF; -- if payment_type_code in ACH, DIRECT_DEBIT, CREDIT_CARD
363
364 -- Return Error if a required attribute is missing.
365
366 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
367
368 RAISE FND_API.G_EXC_ERROR;
369
370 END IF;
371
372 --
373 -- Check conditionally required attributes here.
374 --
375
376
377 --
378 -- Validate attribute dependencies here.
379 --
380
381 -- Done validating entity
382
383 x_return_status := l_return_status;
384
385 OE_DEBUG_PUB.Add('Exiting OE_VALIDATE_Line_Payments.Entity',1);
386 EXCEPTION
387
388 WHEN FND_API.G_EXC_ERROR THEN
389
390 x_return_status := FND_API.G_RET_STS_ERROR;
391
392 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
393
394 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
395
396 WHEN OTHERS THEN
397
398 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
399
400 IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
401 THEN
402 oe_msg_pub.Add_Exc_Msg
403 ( G_PKG_NAME
404 , 'Entity'
405 );
406 END IF;
407
408 END Entity;
409
410 -- Procedure Attributes
411
412 PROCEDURE Attributes
413 ( x_return_status OUT NOCOPY VARCHAR2
414 , p_Line_Payment_rec IN OE_Order_PUB.Line_Payment_Rec_Type
415 , p_old_Line_Payment_rec IN OE_Order_PUB.Line_Payment_Rec_Type :=
416 OE_Order_PUB.G_MISS_LINE_PAYMENT_REC
417 )
418 IS
419 l_cc_security_code_use VARCHAR2(20); --R12 CVV2
420 BEGIN
421
422 OE_DEBUG_PUB.Add('Entering OE_VALIDATE_Line_Payments.Attributes',1);
423 x_return_status := FND_API.G_RET_STS_SUCCESS;
424
425 -- Validate Line_Payment attributes
426
427 IF p_Line_Payment_rec.created_by IS NOT NULL AND
428 ( p_Line_Payment_rec.created_by <>
429 p_old_Line_Payment_rec.created_by OR
430 p_old_Line_Payment_rec.created_by IS NULL )
431 THEN
432 IF NOT OE_Validate.Created_By(p_Line_Payment_rec.created_by) THEN
433 x_return_status := FND_API.G_RET_STS_ERROR;
434 END IF;
435 END IF;
436
437 IF p_Line_Payment_rec.creation_date IS NOT NULL AND
438 ( p_Line_Payment_rec.creation_date <>
439 p_old_Line_Payment_rec.creation_date OR
440 p_old_Line_Payment_rec.creation_date IS NULL )
441 THEN
442 IF NOT OE_Validate.Creation_Date(p_Line_Payment_rec.creation_date) THEN
443 x_return_status := FND_API.G_RET_STS_ERROR;
444 END IF;
445 END IF;
446
447 IF p_Line_Payment_rec.header_id IS NOT NULL AND
448 ( p_Line_Payment_rec.header_id <>
449 p_old_Line_Payment_rec.header_id OR
450 p_old_Line_Payment_rec.header_id IS NULL )
451 THEN
452 IF NOT OE_Validate.Header(p_Line_Payment_rec.header_id) THEN
453 x_return_status := FND_API.G_RET_STS_ERROR;
454 END IF;
455 END IF;
456
457 IF p_Line_Payment_rec.last_updated_by IS NOT NULL AND
458 ( p_Line_Payment_rec.last_updated_by <>
459 p_old_Line_Payment_rec.last_updated_by OR
460 p_old_Line_Payment_rec.last_updated_by IS NULL )
461 THEN
462 IF NOT OE_Validate.Last_Updated_By(p_Line_Payment_rec.last_updated_by) THEN
463 x_return_status := FND_API.G_RET_STS_ERROR;
464 END IF;
465 END IF;
466
467 IF p_Line_Payment_rec.last_update_date IS NOT NULL AND
468 ( p_Line_Payment_rec.last_update_date <>
469 p_old_Line_Payment_rec.last_update_date OR
470 p_old_Line_Payment_rec.last_update_date IS NULL )
471 THEN
472 IF NOT OE_Validate.Last_Update_Date(p_Line_Payment_rec.last_update_date) THEN
473 x_return_status := FND_API.G_RET_STS_ERROR;
474 END IF;
475 END IF;
476
477 IF p_Line_Payment_rec.last_update_login IS NOT NULL AND
478 ( p_Line_Payment_rec.last_update_login <>
479 p_old_Line_Payment_rec.last_update_login OR
480 p_old_Line_Payment_rec.last_update_login IS NULL )
481 THEN
482 IF NOT OE_Validate.Last_Update_Login(p_Line_Payment_rec.last_update_login) THEN
483 x_return_status := FND_API.G_RET_STS_ERROR;
484 END IF;
485 END IF;
486
487 IF p_Line_Payment_rec.line_id IS NOT NULL AND
488 ( p_Line_Payment_rec.line_id <>
489 p_old_Line_Payment_rec.line_id OR
490 p_old_Line_Payment_rec.line_id IS NULL )
491 THEN
492 IF NOT OE_Validate.Line(p_Line_Payment_rec.line_id) THEN
493 x_return_status := FND_API.G_RET_STS_ERROR;
494 END IF;
495 END IF;
496
497 IF p_Line_Payment_rec.check_number IS NOT NULL AND
498 ( p_Line_Payment_rec.check_number <>
499 p_old_Line_Payment_rec.check_number OR
500 p_old_Line_Payment_rec.check_number IS NULL )
501 THEN
502 IF NOT OE_Validate.check_number(p_Line_Payment_rec.check_number) THEN
503 x_return_status := FND_API.G_RET_STS_ERROR;
504 END IF;
505 END IF;
506
507 IF p_Line_Payment_rec.credit_card_approval_code IS NOT NULL AND
508 ( p_Line_Payment_rec.credit_card_approval_code <>
509 p_old_Line_Payment_rec.credit_card_approval_code OR
510 p_old_Line_Payment_rec.credit_card_approval_code IS NULL )
511 THEN
512 IF NOT OE_Validate.credit_card_approval(p_Line_Payment_rec.credit_card_approval_code) THEN
513 x_return_status := FND_API.G_RET_STS_ERROR;
514 END IF;
515 END IF;
516
517
518 IF p_Line_Payment_rec.credit_card_approval_date IS NOT NULL AND
519 ( p_Line_Payment_rec.credit_card_approval_date <>
520 p_old_Line_Payment_rec.credit_card_approval_date OR
521 p_old_Line_Payment_rec.credit_card_approval_date IS NULL )
522 THEN
523 IF NOT OE_Validate.credit_card_approval_date(p_Line_Payment_rec.credit_card_approval_date) THEN
524 x_return_status := FND_API.G_RET_STS_ERROR;
525 END IF;
526 END IF;
527
528 IF p_Line_Payment_rec.credit_card_code IS NOT NULL AND
529 ( p_Line_Payment_rec.credit_card_code <>
530 p_old_Line_Payment_rec.credit_card_code OR
531 p_old_Line_Payment_rec.credit_card_code IS NULL )
532 THEN
533 IF NOT OE_Validate.credit_card(p_Line_Payment_rec.credit_card_code) THEN
534 x_return_status := FND_API.G_RET_STS_ERROR;
535 END IF;
536 END IF;
537
538 --R12 CVV2
539 IF p_Line_Payment_rec.credit_card_number IS NOT NULL AND p_Line_Payment_rec.credit_card_number <> FND_API.G_MISS_CHAR THEN --bug 4613168, issue 22
540 l_cc_security_code_use := OE_Payment_Trxn_Util.Get_CC_Security_Code_Use;
541 IF l_cc_security_code_use = 'REQUIRED' THEN
542 IF p_Line_Payment_rec.instrument_security_code IS NULL OR
543 p_Line_Payment_rec.instrument_security_code = FND_API.G_MISS_CHAR
544 THEN
545 FND_MESSAGE.SET_NAME('ONT','OE_CC_SECURITY_CODE_REQD');
546 OE_MSG_PUB.ADD;
547 x_return_status := FND_API.G_RET_STS_ERROR;
548 END IF;
549 END IF;
550 END IF;
551 --R12 CVV2
552
553 IF p_Line_Payment_rec.credit_card_expiration_date IS NOT NULL AND
554 ( p_Line_Payment_rec.credit_card_expiration_date <>
555 p_old_Line_Payment_rec.credit_card_expiration_date OR
556 p_old_Line_Payment_rec.credit_card_expiration_date IS NULL )
557 THEN
558 IF NOT OE_Validate.credit_card_expiration_date(p_Line_Payment_rec.credit_card_expiration_date) THEN
559 x_return_status := FND_API.G_RET_STS_ERROR;
560 END IF;
561 END IF;
562
563 IF p_Line_Payment_rec.credit_card_holder_name IS NOT NULL AND
564 ( p_Line_Payment_rec.credit_card_holder_name <>
565 p_old_Line_Payment_rec.credit_card_holder_name OR
566 p_old_Line_Payment_rec.credit_card_holder_name IS NULL )
567 THEN
568 IF NOT OE_Validate.credit_card_holder_name(p_Line_Payment_rec.credit_card_holder_name) THEN
569 x_return_status := FND_API.G_RET_STS_ERROR;
570 END IF;
571 END IF;
572
573 IF p_Line_Payment_rec.credit_card_number IS NOT NULL AND
574 ( p_Line_Payment_rec.credit_card_number <>
575 p_old_Line_Payment_rec.credit_card_number OR
576 p_old_Line_Payment_rec.credit_card_number IS NULL )
577 THEN
578 IF NOT OE_Validate.credit_card_number(p_Line_Payment_rec.credit_card_number) THEN
579 x_return_status := FND_API.G_RET_STS_ERROR;
580 END IF;
581 END IF;
582
583 IF p_Line_Payment_rec.payment_level_code IS NOT NULL AND
584 ( p_Line_Payment_rec.payment_level_code <>
585 p_old_Line_Payment_rec.payment_level_code OR
586 p_old_Line_Payment_rec.payment_level_code IS NULL )
587 THEN
588 IF NOT OE_Validate.payment_level(p_Line_Payment_rec.payment_level_code) THEN
589 x_return_status := FND_API.G_RET_STS_ERROR;
590 END IF;
591 END IF;
592
593 IF p_Line_Payment_rec.commitment_applied_amount IS NOT NULL AND
594 ( p_Line_Payment_rec.commitment_applied_amount <>
595 p_old_Line_Payment_rec.commitment_applied_amount OR
596 p_old_Line_Payment_rec.commitment_applied_amount IS NULL )
597 THEN
598 IF NOT OE_Validate.commitment_applied_amount(p_Line_Payment_rec.commitment_applied_amount) THEN
599 x_return_status := FND_API.G_RET_STS_ERROR;
600 END IF;
601 END IF;
602
603 IF p_Line_Payment_rec.commitment_interfaced_amount IS NOT NULL AND
604 ( p_Line_Payment_rec.commitment_interfaced_amount <>
605 p_old_Line_Payment_rec.commitment_interfaced_amount OR
606 p_old_Line_Payment_rec.commitment_interfaced_amount IS NULL )
607 THEN
608 IF NOT OE_Validate.commitment_interfaced_amount(p_Line_Payment_rec.commitment_interfaced_amount) THEN
609 x_return_status := FND_API.G_RET_STS_ERROR;
610 END IF;
611 END IF;
612
613 IF p_Line_Payment_rec.payment_amount IS NOT NULL AND
614 ( p_Line_Payment_rec.payment_amount <>
615 p_old_Line_Payment_rec.payment_amount OR
616 p_old_Line_Payment_rec.payment_amount IS NULL )
617 THEN
618 IF NOT OE_Validate.payment_amount(p_Line_Payment_rec.payment_amount) THEN
619 x_return_status := FND_API.G_RET_STS_ERROR;
620 END IF;
621 END IF;
622
623 IF p_Line_Payment_rec.payment_collection_event IS NOT NULL AND
624 ( p_Line_Payment_rec.payment_collection_event <>
625 p_old_Line_Payment_rec.payment_collection_event OR
626 p_old_Line_Payment_rec.payment_collection_event IS NULL )
627 THEN
628 IF NOT OE_Validate.payment_collection_event(p_Line_Payment_rec.payment_collection_event) THEN
629 x_return_status := FND_API.G_RET_STS_ERROR;
630 END IF;
631 END IF;
632
633 IF p_Line_Payment_rec.payment_trx_id IS NOT NULL AND
634 ( p_Line_Payment_rec.payment_trx_id <>
635 p_old_Line_Payment_rec.payment_trx_id OR
636 p_old_Line_Payment_rec.payment_trx_id IS NULL )
637 THEN
638 IF NOT OE_Validate.payment_trx(p_Line_Payment_rec.payment_trx_id) THEN
639 x_return_status := FND_API.G_RET_STS_ERROR;
640 END IF;
641 END IF;
642
643 IF p_Line_Payment_rec.payment_type_code IS NOT NULL AND
644 ( p_Line_Payment_rec.payment_type_code <>
645 p_old_Line_Payment_rec.payment_type_code OR
646 p_old_Line_Payment_rec.payment_type_code IS NULL )
647 THEN
648 IF NOT OE_Validate.payment_type(p_Line_Payment_rec.payment_type_code) THEN
649 x_return_status := FND_API.G_RET_STS_ERROR;
650 END IF;
651 END IF;
652
653 IF p_Line_Payment_rec.payment_set_id IS NOT NULL AND
654 ( p_Line_Payment_rec.payment_set_id <>
655 p_old_Line_Payment_rec.payment_set_id OR
656 p_old_Line_Payment_rec.payment_set_id IS NULL )
657 THEN
658 IF NOT OE_Validate.payment_set(p_Line_Payment_rec.payment_set_id) THEN
659 x_return_status := FND_API.G_RET_STS_ERROR;
660 END IF;
661 END IF;
662
663 IF p_Line_Payment_rec.prepaid_amount IS NOT NULL AND
664 ( p_Line_Payment_rec.prepaid_amount <>
665 p_old_Line_Payment_rec.prepaid_amount OR
666 p_old_Line_Payment_rec.prepaid_amount IS NULL )
667 THEN
668 IF NOT OE_Validate.prepaid_amount(p_Line_Payment_rec.prepaid_amount) THEN
669 x_return_status := FND_API.G_RET_STS_ERROR;
670 END IF;
671 END IF;
672
673 IF p_Line_Payment_rec.receipt_method_id IS NOT NULL AND
674 ( p_Line_Payment_rec.receipt_method_id <>
675 p_old_Line_Payment_rec.receipt_method_id OR
676 p_old_Line_Payment_rec.receipt_method_id IS NULL )
677 THEN
678 IF NOT OE_Validate.receipt_method(p_Line_Payment_rec.receipt_method_id) THEN
679 x_return_status := FND_API.G_RET_STS_ERROR;
680 END IF;
681 END IF;
682
683 IF p_Line_Payment_rec.tangible_id IS NOT NULL AND
684 ( p_Line_Payment_rec.tangible_id <>
685 p_old_Line_Payment_rec.tangible_id OR
686 p_old_Line_Payment_rec.tangible_id IS NULL )
687 THEN
688 IF NOT OE_Validate.tangible(p_Line_Payment_rec.tangible_id) THEN
689 x_return_status := FND_API.G_RET_STS_ERROR;
690 END IF;
691 END IF;
692
693 IF p_Line_Payment_rec.trxn_extension_id IS NOT NULL AND --R12 Process order api changes
694 ( p_Line_Payment_rec.trxn_extension_id <>
695 p_old_Line_Payment_rec.trxn_extension_id OR
696 p_old_Line_Payment_rec.trxn_extension_id IS NULL )
697 THEN
698 IF NOT OE_Validate.Payment_Trxn_Extension(p_Line_Payment_rec.trxn_extension_id) THEN
699 x_return_status := FND_API.G_RET_STS_ERROR;
700 END IF;
701 END IF; --R12 Process order api changes
702 if OE_GLOBALS.g_validate_desc_flex ='Y' then --bug 4343612
703 oe_debug_pub.add('Validation of desc flex is set to Y in OE_Validate_Line_Payment.attributes ',1);
704 IF (p_Line_Payment_rec.attribute1 IS NOT NULL AND
705 ( p_Line_Payment_rec.attribute1 <>
706 p_old_Line_Payment_rec.attribute1 OR
707 p_old_Line_Payment_rec.attribute1 IS NULL ))
708 OR (p_Line_Payment_rec.attribute10 IS NOT NULL AND
709 ( p_Line_Payment_rec.attribute10 <>
710 p_old_Line_Payment_rec.attribute10 OR
711 p_old_Line_Payment_rec.attribute10 IS NULL ))
712 OR (p_Line_Payment_rec.attribute11 IS NOT NULL AND
713 ( p_Line_Payment_rec.attribute11 <>
714 p_old_Line_Payment_rec.attribute11 OR
715 p_old_Line_Payment_rec.attribute11 IS NULL ))
716 OR (p_Line_Payment_rec.attribute12 IS NOT NULL AND
717 ( p_Line_Payment_rec.attribute12 <>
718 p_old_Line_Payment_rec.attribute12 OR
719 p_old_Line_Payment_rec.attribute12 IS NULL ))
720 OR (p_Line_Payment_rec.attribute13 IS NOT NULL AND
721 ( p_Line_Payment_rec.attribute13 <>
722 p_old_Line_Payment_rec.attribute13 OR
723 p_old_Line_Payment_rec.attribute13 IS NULL ))
724 OR (p_Line_Payment_rec.attribute14 IS NOT NULL AND
725 ( p_Line_Payment_rec.attribute14 <>
726 p_old_Line_Payment_rec.attribute14 OR
727 p_old_Line_Payment_rec.attribute14 IS NULL ))
728 OR (p_Line_Payment_rec.attribute15 IS NOT NULL AND
729 ( p_Line_Payment_rec.attribute15 <>
730 p_old_Line_Payment_rec.attribute15 OR
731 p_old_Line_Payment_rec.attribute15 IS NULL ))
732 OR (p_Line_Payment_rec.attribute2 IS NOT NULL AND
733 ( p_Line_Payment_rec.attribute2 <>
734 p_old_Line_Payment_rec.attribute2 OR
735 p_old_Line_Payment_rec.attribute2 IS NULL ))
736 OR (p_Line_Payment_rec.attribute3 IS NOT NULL AND
737 ( p_Line_Payment_rec.attribute3 <>
738 p_old_Line_Payment_rec.attribute3 OR
739 p_old_Line_Payment_rec.attribute3 IS NULL ))
740 OR (p_Line_Payment_rec.attribute4 IS NOT NULL AND
741 ( p_Line_Payment_rec.attribute4 <>
742 p_old_Line_Payment_rec.attribute4 OR
743 p_old_Line_Payment_rec.attribute4 IS NULL ))
744 OR (p_Line_Payment_rec.attribute5 IS NOT NULL AND
745 ( p_Line_Payment_rec.attribute5 <>
746 p_old_Line_Payment_rec.attribute5 OR
747 p_old_Line_Payment_rec.attribute5 IS NULL ))
748 OR (p_Line_Payment_rec.attribute6 IS NOT NULL AND
749 ( p_Line_Payment_rec.attribute6 <>
750 p_old_Line_Payment_rec.attribute6 OR
751 p_old_Line_Payment_rec.attribute6 IS NULL ))
752 OR (p_Line_Payment_rec.attribute7 IS NOT NULL AND
753 ( p_Line_Payment_rec.attribute7 <>
754 p_old_Line_Payment_rec.attribute7 OR
755 p_old_Line_Payment_rec.attribute7 IS NULL ))
756 OR (p_Line_Payment_rec.attribute8 IS NOT NULL AND
757 ( p_Line_Payment_rec.attribute8 <>
758 p_old_Line_Payment_rec.attribute8 OR
759 p_old_Line_Payment_rec.attribute8 IS NULL ))
760 OR (p_Line_Payment_rec.attribute9 IS NOT NULL AND
761 ( p_Line_Payment_rec.attribute9 <>
762 p_old_Line_Payment_rec.attribute9 OR
763 p_old_Line_Payment_rec.attribute9 IS NULL ))
764 OR (p_Line_Payment_rec.context IS NOT NULL AND
765 ( p_Line_Payment_rec.context <>
766 p_old_Line_Payment_rec.context OR
767 p_old_Line_Payment_rec.context IS NULL ))
768 THEN
769
770
771 oe_debug_pub.add('Before calling Payments_Desc_Flex',2);
772 IF NOT OE_VALIDATE.Payments_Desc_Flex
773 (p_context => p_Line_Payment_rec.context
774 ,p_attribute1 => p_Line_Payment_rec.attribute1
775 ,p_attribute2 => p_Line_Payment_rec.attribute2
776 ,p_attribute3 => p_Line_Payment_rec.attribute3
777 ,p_attribute4 => p_Line_Payment_rec.attribute4
778 ,p_attribute5 => p_Line_Payment_rec.attribute5
779 ,p_attribute6 => p_Line_Payment_rec.attribute6
780 ,p_attribute7 => p_Line_Payment_rec.attribute7
781 ,p_attribute8 => p_Line_Payment_rec.attribute8
782 ,p_attribute9 => p_Line_Payment_rec.attribute9
783 ,p_attribute10 => p_Line_Payment_rec.attribute10
784 ,p_attribute11 => p_Line_Payment_rec.attribute11
785 ,p_attribute12 => p_Line_Payment_rec.attribute12
786 ,p_attribute13 => p_Line_Payment_rec.attribute13
787 ,p_attribute14 => p_Line_Payment_rec.attribute14
788 ,p_attribute15 => p_Line_Payment_rec.attribute15) THEN
789
790 x_return_status := FND_API.G_RET_STS_ERROR;
791 END IF;
792
793 oe_debug_pub.add('After Payments_Desc_Flex ' || x_return_status,2);
794
795 END IF;
796
797 OE_DEBUG_PUB.Add('Exiting OE_VALIDATE_Line_Payments.Attributes',1);
798 -- Done validating attributes
799 end if ; /*if OE_GLOBALS.g_validate_desc_flex ='Y' then bug 4343612*/
800 EXCEPTION
801
802 WHEN FND_API.G_EXC_ERROR THEN
803
804 x_return_status := FND_API.G_RET_STS_ERROR;
805
806 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
807
808 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
809
810 WHEN OTHERS THEN
811
812 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
813
814 IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
815 THEN
816 oe_msg_pub.Add_Exc_Msg
817 ( G_PKG_NAME
818 , 'Attributes'
819 );
820 END IF;
821
822 END Attributes;
823
824 -- Procedure Entity_Delete
825
826 PROCEDURE Entity_Delete
827 ( x_return_status OUT NOCOPY VARCHAR2
828 , p_Line_Payment_rec IN OE_Order_PUB.Line_Payment_Rec_Type
829 )
830 IS
831 l_return_status VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
832 BEGIN
833
834 OE_DEBUG_PUB.Add('Entering OE_VALIDATE_Line_Payments.Entity_Delete',1);
835 -- Validate entity delete.
836 NULL;
837 -- Done.
838
839 x_return_status := l_return_status;
840 OE_DEBUG_PUB.Add('Exiting OE_VALIDATE_Line_Payments.Entity_Delete',1);
841
842 EXCEPTION
843
844 WHEN FND_API.G_EXC_ERROR THEN
845
846 x_return_status := FND_API.G_RET_STS_ERROR;
847
848 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
849
850 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
851
852 WHEN OTHERS THEN
853
854 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
855
856 IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
857 THEN
858 oe_msg_pub.Add_Exc_Msg
859 ( G_PKG_NAME
860 , 'Entity_Delete'
861 );
862 END IF;
863
864 END Entity_Delete;
865
866 END OE_Validate_Line_Payment;