DBA Data[Home] [Help]

PACKAGE BODY: APPS.OE_VALIDATE_LINE_PAYMENT

Source


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;