[Home] [Help]
PACKAGE BODY: APPS.AR_BILLS_CREATION_VAL_PVT
Source
1 Package Body AR_BILLS_CREATION_VAL_PVT AS
2 /* $Header: ARBRCRVB.pls 120.9 2011/07/10 01:19:09 dgaurab ship $ */
3
4
5
6 /* =======================================================================
7 | Bills Receivable status constants
8 * ======================================================================*/
9
10 C_INCOMPLETE CONSTANT VARCHAR2(30) := 'INCOMPLETE';
11 C_UNPAID CONSTANT VARCHAR2(30) := 'UNPAID';
12 C_FACTORED CONSTANT VARCHAR2(30) := 'FACTORED';
13 C_REMITTED CONSTANT VARCHAR2(30) := 'REMITTED';
14
15
16 /*==============================================================================+
17 | PROCEDURE |
18 | Validate_GL_Date |
19 | |
20 | DESCRIPTION |
21 | Validates that the GL Date is in an open or future period |
22 | |
23 +==============================================================================*/
24
25 PG_DEBUG varchar2(1) := NVL(FND_PROFILE.value('AFLOG_ENABLED'), 'N');
26
27 PROCEDURE Validate_Gl_Date (p_gl_date IN DATE) IS
28
29 BEGIN
30
31 IF PG_DEBUG in ('Y', 'C') THEN
32 arp_util.debug('AR_BILLS_CREATION_VAL_PVT.Validate_Gl_Date ()+');
33 END IF;
34
35 IF (p_gl_date IS NOT NULL)
36 THEN
37 IF ( NOT arp_util.is_gl_date_valid( p_gl_date ))
38 THEN
39 IF PG_DEBUG in ('Y', 'C') THEN
40 arp_util.debug('Validate_Gl_Date: ' || '>>>>>>>>>> Invalid GL Date');
41 END IF;
42 FND_MESSAGE.set_name ( 'AR', 'AR_INVALID_APP_GL_DATE' );
43 --Bug12734873
44 FND_MESSAGE.set_token('GL_DATE', fnd_date.date_to_chardate(p_gl_date, calendar_aware=> FND_DATE.calendar_aware_alt ));
45 app_exception.raise_exception;
46 END IF;
47 END IF;
48
49 IF PG_DEBUG in ('Y', 'C') THEN
50 arp_util.debug('AR_BILLS_CREATION_VAL_PVT.Validate_Gl_Date ()-');
51 END IF;
52
53 EXCEPTION
54 WHEN OTHERS THEN
55 IF PG_DEBUG in ('Y', 'C') THEN
56 arp_util.debug('>>>>>>>>>> EXCEPTION : AR_BILLS_CREATION_VAL_PVT.Validate_GL_Date() ');
57 arp_util.debug('Validate_Gl_Date: ' || 'p_gl_date = ' || p_gl_date);
58 END IF;
59 RAISE;
60
61 END Validate_Gl_Date;
62
63
64
65
66 /*==============================================================================+
67 | PROCEDURE |
68 | Validate_Update_Maturity_Date |
69 | |
70 | DESCRIPTION |
71 | Validates that Maturity Date can be updated |
72 | |
73 +==============================================================================*/
74
75 PROCEDURE Validate_Update_Maturity_Date (p_customer_trx_id IN ra_customer_trx.customer_trx_id%TYPE,
76 p_term_due_date IN DATE )
77 IS
78
79 l_trx_rec ra_customer_trx%ROWTYPE;
80 l_ps_rec ar_payment_schedules%ROWTYPE;
81 l_trh_rec ar_transaction_history%ROWTYPE;
82
83 BEGIN
84
85 IF PG_DEBUG in ('Y', 'C') THEN
86 arp_util.debug('AR_BILLS_CREATION_VAL_PVT.Validate_Update_Maturity_Date ()+');
87 END IF;
88
89
90 /*----------------------------------------------+
91 | Fetch the BR History Information : |
92 | Current Status |
93 +-----------------------------------------------*/
94
95 ARP_CT_PKG.fetch_p (l_trx_rec, p_customer_trx_id);
96 l_trh_rec.customer_trx_id := p_customer_trx_id;
97 ARP_TRANSACTION_HISTORY_PKG.fetch_f_trx_id (l_trh_rec);
98
99
100 IF l_trh_rec.status in (C_FACTORED, C_REMITTED)
101 THEN
102 IF AR_BILLS_MAINTAIN_STATUS_PUB.Is_BR_Matured (l_trx_rec.term_due_date)
103 THEN
104 IF PG_DEBUG in ('Y', 'C') THEN
105 arp_util.debug('Validate_Update_Maturity_Date: ' || '>>>>>>>>>> Current Maturity Date has passed, it cannot be updated');
106 arp_util.debug('Validate_Update_Maturity_Date: ' || 'Maturity Date parameter : ' || p_term_due_date);
107 arp_util.debug('Validate_Update_Maturity_Date: ' || 'Maturity Date of the BR : ' || l_trx_rec.term_due_date);
108 END IF;
109 FND_MESSAGE.set_name( 'AR','AR_BR_CANNOT_UPDATE_MAT_DATE');
110 app_exception.raise_exception;
111 END IF;
112
113 IF trunc(p_term_due_date) <= trunc(SYSDATE)
114 THEN
115 IF PG_DEBUG in ('Y', 'C') THEN
116 arp_util.debug('Validate_Update_Maturity_Date: ' || '>>>>>>>>>> The new Maturity Date must be later that sysdate');
117 arp_util.debug('Validate_Update_Maturity_Date: ' || 'Maturity Date parameter : ' || p_term_due_date);
118 END IF;
119 FND_MESSAGE.set_name ( 'AR', 'AR_BR_INVALID_TRX_DATE' );
120 FND_MESSAGE.set_token ( 'ACTION', NULL);
121 --Bug12734873
122 FND_MESSAGE.set_token ( 'NEW_TRX_DATE', fnd_date.date_to_chardate(p_term_due_date, calendar_aware=> FND_DATE.calendar_aware_alt));
123 FND_MESSAGE.set_token ( 'OLD_TRX_DATE', fnd_date.date_to_chardate(trunc(sysdate), calendar_aware=> FND_DATE.calendar_aware_alt));
124 app_exception.raise_exception;
125 END IF;
126
127 END IF;
128
129 IF PG_DEBUG in ('Y', 'C') THEN
130 arp_util.debug('AR_BILLS_CREATION_VAL_PVT.Validate_Update_Maturity_Date ()-');
131 END IF;
132
133 EXCEPTION
134 WHEN OTHERS THEN
135 IF PG_DEBUG in ('Y', 'C') THEN
136 arp_util.debug('>>>>>>>>>> EXCEPTION : AR_BILLS_CREATION_VAL_PVT.Validate_Update_Maturity_Date() ');
137 arp_util.debug('Validate_Update_Maturity_Date: ' || 'p_customer_trx_id = ' || p_customer_trx_id);
138 arp_util.debug('Validate_Update_Maturity_Date: ' || 'p_term_due_date = ' || p_term_due_date);
139 END IF;
140 RAISE;
141
142 END Validate_Update_Maturity_Date;
143
144
145
146 /*==============================================================================+
147 | PROCEDURE |
148 | Validate_Batch_Source |
149 | |
150 | DESCRIPTION |
151 | Validates that : |
152 | - The Batch Source exists |
153 | - The status is Active |
154 | - It is valid at the Issue Date |
155 | |
156 +=============================================================================*/
157
158 PROCEDURE Validate_Batch_Source (p_batch_source_id IN NUMBER ,
159 p_issue_date IN DATE ) IS
160
161 l_start_date DATE;
162 l_end_date DATE;
163 l_status VARCHAR2(1);
164
165 BEGIN
166 IF PG_DEBUG in ('Y', 'C') THEN
167 arp_util.debug('AR_BILLS_CREATION_VAL_PVT.Validate_Batch_Source()+');
168 END IF;
169
170 SELECT start_date, end_date, status
171 INTO l_start_date, l_end_date, l_status
172 FROM RA_BATCH_SOURCES bs
173 WHERE bs.batch_source_id = p_batch_source_id;
174
175 /*----------------------------------------------+
176 | Check the status of the batch source |
177 +-----------------------------------------------*/
178
179 IF (l_status <> 'A')
180 THEN
181 IF PG_DEBUG in ('Y', 'C') THEN
182 arp_util.debug ('Validate_Batch_Source: ' || '>>>>>>>>>> The Batch Source is inactive');
183 arp_util.debug ('Validate_Batch_Source: ' || 'p_batch_source_id = ' || p_batch_source_id);
184 arp_util.debug ('Validate_Batch_Source: ' || 'p_issue_date = ' || p_issue_date);
185 arp_util.debug ('Validate_Batch_Source: ' || 'status = ' || l_status);
186 END IF;
187 FND_MESSAGE.SET_NAME ('AR', 'AR_BR_INACTIVE_BATCH_SOURCE');
188 app_exception.raise_exception;
189 END IF;
190
191
192 /*----------------------------------------------+
193 | Check the batch source is valid at the issue |
194 | date |
195 +-----------------------------------------------*/
196
197 IF (p_issue_date NOT BETWEEN nvl (l_start_date, p_issue_date)
198 AND nvl (l_end_date , p_issue_date))
199 THEN
200 IF PG_DEBUG in ('Y', 'C') THEN
201 arp_util.debug ('Validate_Batch_Source: ' || '>>>>>>>>>> The Batch Source is not valid at the Issue Date');
202 arp_util.debug('Validate_Batch_Source: ' || 'p_batch_source_id = ' || p_batch_source_id);
203 arp_util.debug('Validate_Batch_Source: ' || 'p_issue_date = ' || p_issue_date);
204 arp_util.debug('Validate_Batch_Source: ' || 'start_date = ' || l_start_date);
205 arp_util.debug('Validate_Batch_Source: ' || 'end_date = ' || l_end_date);
206 END IF;
207 FND_MESSAGE.SET_NAME ('AR', 'AR_BR_BAD_DATE_SOURCE');
208 app_exception.raise_exception;
209 END IF;
210
211
212 IF PG_DEBUG in ('Y', 'C') THEN
213 arp_util.debug('AR_BILLS_CREATION_VAL_PVT.Validate_Batch_Source()-');
214 END IF;
215
216 EXCEPTION
217 WHEN NO_DATA_FOUND THEN
218 IF PG_DEBUG in ('Y', 'C') THEN
219 arp_util.debug('>>>>>>>>>> EXCEPTION : AR_BILLS_CREATION_VAL_PVT.Validate_Batch_Source() ');
220 arp_util.debug('Validate_Batch_Source: ' || '>>>>>>>>>> Invalid Batch Source');
221 arp_util.debug('Validate_Batch_Source: ' || ' p_batch_source_id = ' || p_batch_source_id);
222 arp_util.debug('Validate_Batch_Source: ' || ' p_issue_date = ' || p_issue_date);
223 END IF;
224 FND_MESSAGE.SET_NAME ('AR', 'AR_BR_INVALID_BATCH_SOURCE');
225 app_exception.raise_exception;
226
227 WHEN OTHERS THEN
228 IF PG_DEBUG in ('Y', 'C') THEN
229 arp_util.debug('>>>>>>>>>> EXCEPTION : AR_BILLS_CREATION_VAL_PVT.Validate_Batch_Source() ');
230 arp_util.debug('Validate_Batch_Source: ' || ' p_batch_source_id = ' || p_batch_source_id);
231 arp_util.debug('Validate_Batch_Source: ' || ' p_issue_date = ' || p_issue_date);
232 END IF;
233 RAISE;
234
235 END Validate_Batch_Source;
236
237
238
239
240 /*==============================================================================+
241 | PROCEDURE |
242 | Validate_Transaction_Type |
243 | |
244 | DESCRIPTION |
245 | Validates the Transaction Type Identifier, the status and the Type (BR) |
246 | |
247 +=============================================================================*/
248
249 PROCEDURE Validate_Transaction_Type (p_cust_trx_type_id IN NUMBER ,
250 p_issue_date IN DATE )
251 IS
252
253 l_start_date DATE;
254 l_end_date DATE;
255 l_status VARCHAR2(1);
256
257
258 BEGIN
259
260 IF PG_DEBUG in ('Y', 'C') THEN
261 arp_util.debug('AR_BILLS_CREATION_VAL_PVT.Validate_Transaction_Type()+');
262 END IF;
263
264 SELECT status, start_date, end_date
265 INTO l_status, l_start_date, l_end_date
266 FROM RA_CUST_TRX_TYPES
267 WHERE cust_trx_type_id = p_cust_trx_type_id
268 AND TYPE = 'BR';
269
270
271 /*----------------------------------------------+
272 | Check the status of the transaction type |
273 +-----------------------------------------------*/
274
275 IF (l_status <> 'A')
276 THEN
277 IF PG_DEBUG in ('Y', 'C') THEN
278 arp_util.debug ('Validate_Transaction_Type: ' || '>>>>>>>>>> The Transaction Type is inactive');
279 arp_util.debug ('Validate_Transaction_Type: ' || 'p_cust_trx_type_id = ' || p_cust_trx_type_id);
280 arp_util.debug ('Validate_Transaction_Type: ' || 'p_issue_date = ' || p_issue_date);
281 arp_util.debug ('Validate_Transaction_Type: ' || 'status = ' || l_status);
282 END IF;
283 FND_MESSAGE.SET_NAME ('AR', 'AR_BR_INACTIVE_TRX_TYPE');
284 app_exception.raise_exception;
285 END IF;
286
287
288 /*----------------------------------------------+
289 | Check the transaction type is valid at the |
290 | Issue Date |
291 +-----------------------------------------------*/
292
293 IF (p_issue_date NOT BETWEEN l_start_date
294 AND nvl (l_end_date , p_issue_date))
295 THEN
296 IF PG_DEBUG in ('Y', 'C') THEN
297 arp_util.debug ('Validate_Transaction_Type: ' || '>>>>>>>>>> The Transaction Type is not valid at the Issue Date');
298 arp_util.debug ('Validate_Transaction_Type: ' || 'p_cust_trx_type_id = ' || p_cust_trx_type_id);
299 arp_util.debug ('Validate_Transaction_Type: ' || 'p_issue_date = ' || p_issue_date);
300 arp_util.debug ('Validate_Transaction_Type: ' || 'start_date = ' || l_start_date);
301 arp_util.debug ('Validate_Transaction_Type: ' || 'end_date = ' || l_end_date);
302 END IF;
303 FND_MESSAGE.SET_NAME ('AR', 'AR_BR_BAD_DATE_TRX_TYPE');
304 app_exception.raise_exception;
305 END IF;
306
307 IF PG_DEBUG in ('Y', 'C') THEN
308 arp_util.debug('AR_BILLS_CREATION_VAL_PVT.Validate_Transaction_Type()-');
309 END IF;
310
311 EXCEPTION
312 WHEN NO_DATA_FOUND THEN
313 IF PG_DEBUG in ('Y', 'C') THEN
314 arp_util.debug('>>>>>>>>>> EXCEPTION : AR_BILLS_CREATION_VAL_PVT.Validate_Transaction_Type() ');
315 arp_util.debug('Validate_Transaction_Type: ' || '>>>>>>>>>> Invalid Transaction Type');
316 arp_util.debug('Validate_Transaction_Type: ' || ' p_cust_trx_type_id = ' || p_cust_trx_type_id);
317 arp_util.debug('Validate_Transaction_Type: ' || ' p_issue_date = ' || p_issue_date);
318 END IF;
319 FND_MESSAGE.SET_NAME ('AR', 'AR_BR_INVALID_TRX_TYPE');
320 app_exception.raise_exception;
321
322 WHEN OTHERS THEN
323 IF PG_DEBUG in ('Y', 'C') THEN
324 arp_util.debug('>>>>>>>>>> EXCEPTION : AR_BILLS_CREATION_VAL_PVT.Validate_Transaction_Type() ');
325 arp_util.debug('Validate_Transaction_Type: ' || ' p_cust_trx_type_id = ' || p_cust_trx_type_id);
326 arp_util.debug('Validate_Transaction_Type: ' || ' p_issue_date = ' || p_issue_date);
327 END IF;
328 RAISE;
329
330 END Validate_Transaction_Type;
331
332
333
334 /*==============================================================================+
335 | PROCEDURE |
336 | Validate_Drawee |
337 | |
338 | DESCRIPTION |
339 | Validates that the Drawee exists |
340 | |
341 +==============================================================================*/
342
343 PROCEDURE Validate_Drawee (p_drawee_id IN NUMBER) IS
344
345 l_drawee_valid VARCHAR2(1);
346
347 BEGIN
348 IF PG_DEBUG in ('Y', 'C') THEN
349 arp_util.debug('AR_BILLS_CREATION_VAL_PVT.Validate_Drawee ()+');
350 END IF;
351
352 /* modified for tca uptake */
353 SELECT 'Y'
354 INTO l_drawee_valid
355 FROM HZ_CUST_ACCOUNTS
356 WHERE cust_account_id = p_drawee_id;
357
358 IF PG_DEBUG in ('Y', 'C') THEN
359 arp_util.debug('AR_BILLS_CREATION_VAL_PVT.Validate_Drawee ()-');
360 END IF;
361
362 EXCEPTION
363 WHEN NO_DATA_FOUND THEN
364 IF PG_DEBUG in ('Y', 'C') THEN
365 arp_util.debug('>>>>>>>>>> EXCEPTION : AR_BILLS_CREATION_VAL_PVT.Validate_Drawee () ');
366 arp_util.debug('Validate_Drawee: ' || '>>>>>>>>>> Invalid Drawee');
367 arp_util.debug('Validate_Drawee: ' || ' p_drawee_id = ' || p_drawee_id);
368 END IF;
369 FND_MESSAGE.SET_NAME ('AR', 'AR_BR_INVALID_DRAWEE');
370 app_exception.raise_exception;
371
372 WHEN OTHERS THEN
373 IF PG_DEBUG in ('Y', 'C') THEN
374 arp_util.debug('>>>>>>>>>> EXCEPTION : AR_BILLS_CREATION_VAL_PVT.Validate_Drawee () ');
375 arp_util.debug('Validate_Drawee: ' || ' p_drawee_id = ' || p_drawee_id);
376 END IF;
377 RAISE;
378
379
380 END Validate_Drawee;
381
382
383
384 /*==============================================================================+
385 | PROCEDURE |
386 | Validate_Drawee_Location |
387 | |
388 | DESCRIPTION |
389 | Validates that the Drawee Location is Active |
390 | |
391 +==============================================================================*/
392
393 PROCEDURE Validate_Drawee_Location (p_drawee_site_use_id IN NUMBER) IS
394
395 l_status VARCHAR2(1);
396
397 BEGIN
398 IF PG_DEBUG in ('Y', 'C') THEN
399 arp_util.debug('AR_BILLS_CREATION_VAL_PVT.Validate_Drawee_Location ()+');
400 END IF;
401
402 IF (p_drawee_site_use_id IS NOT NULL)
403 THEN
404 /* modified for tca uptake */
405 SELECT STATUS
406 INTO l_status
407 FROM HZ_CUST_SITE_USES
408 WHERE site_use_id = p_drawee_site_use_id
409 AND SITE_USE_CODE = 'DRAWEE';
410
411 /*----------------------------------------------+
412 | Check that the Drawee Location is active |
413 +-----------------------------------------------*/
414
415 IF (l_status <> 'A')
416 THEN
417 IF PG_DEBUG in ('Y', 'C') THEN
418 arp_util.debug('Validate_Drawee: ' || '>>>>>>>>>> Drawee Location Inactive');
419 END IF;
420 FND_MESSAGE.SET_NAME ('AR', 'AR_BR_INACTIVE_DRAWEE_SITE');
421 app_exception.raise_exception;
422 END IF;
423 END IF;
424
425 IF PG_DEBUG in ('Y', 'C') THEN
426 arp_util.debug('AR_BILLS_CREATION_VAL_PVT.Validate_Drawee_Location ()-');
427 END IF;
428
429 EXCEPTION
430 WHEN NO_DATA_FOUND THEN
431 IF PG_DEBUG in ('Y', 'C') THEN
432 arp_util.debug('>>>>>>>>>> EXCEPTION : AR_BILLS_CREATION_VAL_PVT.Validate_Drawee_Location () ');
433 arp_util.debug('Validate_Drawee: ' || '>>>>>>>>>> Invalid Location');
434 arp_util.debug('Validate_Drawee: ' || ' p_drawee_site_use_id = ' || p_drawee_site_use_id);
435 END IF;
436 FND_MESSAGE.SET_NAME ('AR', 'AR_BR_INVALID_DRAWEE_SITE');
437 app_exception.raise_exception;
438
439 WHEN OTHERS THEN
440 IF PG_DEBUG in ('Y', 'C') THEN
441 arp_util.debug('>>>>>>>>>> EXCEPTION : AR_BILLS_CREATION_VAL_PVT.Validate_Drawee_Location () ');
442 arp_util.debug('Validate_Drawee: ' || ' p_drawee_site_use_id = ' || p_drawee_site_use_id);
443 END IF;
444 RAISE;
445
446 END Validate_Drawee_Location;
447
448
449
450 /*==============================================================================+
451 | PROCEDURE |
452 | Validate_Drawee_Contact |
453 | |
454 | DESCRIPTION |
455 | Validates that the Drawee Contact is Active |
456 | |
457 +==============================================================================*/
458
459 PROCEDURE Validate_Drawee_Contact (p_drawee_contact_id IN NUMBER ,
460 p_drawee_id IN NUMBER ) IS
461
462 l_status VARCHAR2(1);
463
464 BEGIN
465 IF PG_DEBUG in ('Y', 'C') THEN
466 arp_util.debug('AR_BILLS_CREATION_VAL_PVT.Validate_Drawee_Contact ()+');
467 END IF;
468
469 IF (p_drawee_contact_id IS NOT NULL)
470 THEN
471 /* modified for tca uptake */
472 /* fixed bug 1883538: use status instead of
473 current role state */
474 SELECT status
475 INTO l_status
476 FROM hz_cust_account_roles
477 WHERE cust_account_role_id = p_drawee_contact_id
478 AND cust_account_id = p_drawee_id;
479
480 IF (l_status <> 'A')
481 THEN
482 IF PG_DEBUG in ('Y', 'C') THEN
483 arp_util.debug('Validate_Drawee: ' || '>>>>>>>>>> Drawee Contact Inactive');
484 END IF;
485 FND_MESSAGE.SET_NAME ('AR', 'AR_BR_INACTIVE_DRAWEE_CONTACT');
486 app_exception.raise_exception;
487 END IF;
488
489 END IF;
490
491 IF PG_DEBUG in ('Y', 'C') THEN
492 arp_util.debug('AR_BILLS_CREATION_VAL_PVT.Validate_Drawee_Contact ()-');
493 END IF;
494
495 EXCEPTION
496 WHEN NO_DATA_FOUND THEN
497 IF PG_DEBUG in ('Y', 'C') THEN
498 arp_util.debug('>>>>>>>>>> EXCEPTION : AR_BILLS_CREATION_VAL_PVT.Validate_Drawee_Contact () ');
499 arp_util.debug('Validate_Drawee: ' || '>>>>>>>>>> Invalid Contact');
500 arp_util.debug('Validate_Drawee: ' || ' p_drawee_contact_id = ' || p_drawee_contact_id);
501 arp_util.debug('Validate_Drawee: ' || ' p_drawee_id = ' || p_drawee_id);
502 END IF;
503 FND_MESSAGE.SET_NAME ('AR', 'AR_BR_INVALID_DRAWEE_CONTACT');
504 app_exception.raise_exception;
505
506 WHEN OTHERS THEN
507 IF PG_DEBUG in ('Y', 'C') THEN
508 arp_util.debug('>>>>>>>>>> EXCEPTION : AR_BILLS_CREATION_VAL_PVT.Validate_Drawee_Contact () ');
509 arp_util.debug('Validate_Drawee: ' || ' p_drawee_contact_id = ' || p_drawee_contact_id);
510 arp_util.debug('Validate_Drawee: ' || ' p_drawee_id = ' || p_drawee_id);
511 END IF;
512 RAISE;
513
514 END Validate_Drawee_Contact;
515
516
517
518 /*==============================================================================+
519 | PROCEDURE |
520 | Validate_Currency |
521 | |
522 | DESCRIPTION |
523 | Validates that the Currency is Active at the Issue Date |
524 | |
525 +==============================================================================*/
526
527 PROCEDURE Validate_Currency ( p_invoice_currency_code IN VARCHAR2,
528 p_issue_date IN DATE ) IS
529
530 l_start_date DATE;
531 l_end_date DATE;
532
533 BEGIN
534 IF PG_DEBUG in ('Y', 'C') THEN
535 arp_util.debug('Validate_Drawee: ' || 'AR_BILLS_CREATION_VAL_PVT.Validate_Currency ()+');
536 END IF;
537
538 SELECT start_date_active, end_date_active
539 INTO l_start_date , l_end_date
540 FROM FND_CURRENCIES_VL
541 WHERE currency_code = p_invoice_currency_code
542 AND enabled_flag = 'Y';
543
544
545 /*----------------------------------------------+
546 | Check the currency is valid at the issue |
547 | date |
548 +-----------------------------------------------*/
549
550 IF (p_issue_date NOT BETWEEN nvl(l_start_date, p_issue_date)
551 AND nvl(l_end_date, p_issue_date))
552 THEN
553 IF PG_DEBUG in ('Y', 'C') THEN
554 arp_util.debug('Validate_Drawee: ' || '>>>>>>>>>> Currency Invalid with Issue Date');
555 arp_util.debug('Validate_Drawee: ' || 'Issue Date : ' || p_issue_date);
556 arp_util.debug('Validate_Drawee: ' || 'Currency : ' || p_invoice_currency_code);
557 END IF;
558 FND_MESSAGE.SET_NAME ('AR', 'AR_BR_BAD_DATE_CURRENCY');
559 app_exception.raise_exception;
560 END IF;
561
562
563 IF PG_DEBUG in ('Y', 'C') THEN
564 arp_util.debug('Validate_Drawee: ' || 'AR_BILLS_CREATION_VAL_PVT.Validate_Currency ()-');
565 END IF;
566
567 EXCEPTION
568 WHEN NO_DATA_FOUND THEN
569 IF PG_DEBUG in ('Y', 'C') THEN
570 arp_util.debug('Validate_Drawee: ' || '>>>>>>>>>> EXCEPTION : AR_BILLS_CREATION_VAL_PVT.Validate_Currency () ');
571 arp_util.debug('Validate_Drawee: ' || '>>>>>>>>>> Invalid Currency');
572 arp_util.debug('Validate_Drawee: ' || ' p_invoice_currency_code = : ' || p_invoice_currency_code);
573 arp_util.debug('Validate_Drawee: ' || ' p_issue_date = : ' || p_issue_date);
574 END IF;
575 FND_MESSAGE.SET_NAME ('AR', 'AR_BR_INVALID_CURRENCY');
576 app_exception.raise_exception;
577
578 WHEN OTHERS THEN
579 IF PG_DEBUG in ('Y', 'C') THEN
580 arp_util.debug('Validate_Drawee: ' || '>>>>>>>>>> EXCEPTION : AR_BILLS_CREATION_VAL_PVT.Validate_Currency () ');
581 arp_util.debug('Validate_Drawee: ' || ' p_invoice_currency_code = : ' || p_invoice_currency_code);
582 arp_util.debug('Validate_Drawee: ' || ' p_issue_date = : ' || p_issue_date);
583 END IF;
584 RAISE;
585
586 END Validate_Currency;
587
588
589 /*==============================================================================+
590 | PROCEDURE |
591 | Validate_Printing_Option |
592 | |
593 | DESCRIPTION |
594 | Validates that : |
595 | - Values allowed are PRI and NOT |
596 | - Printing is mandatory, if the bill has to be signed |
597 | - If the printing option is set to 'Y', a format must be defined for |
598 | the transaction type |
599 | |
600 +==============================================================================*/
601
602 PROCEDURE Validate_Printing_Option ( p_printing_option IN VARCHAR2 ,
603 p_cust_trx_type_id IN NUMBER ) IS
604
605 l_format_program_id NUMBER;
606 l_signed_flag VARCHAR2(1);
607 l_printing_option_valid VARCHAR2(1);
608 printing_option_invalid EXCEPTION;
609
610 BEGIN
611 IF PG_DEBUG in ('Y', 'C') THEN
612 arp_util.debug('Validate_Drawee: ' || 'AR_BILLS_CREATION_VAL_PVT.Validate_Printing_Option ()+');
613 END IF;
614
615
616 /*----------------------------------------------+
617 | Validate p_printing_option in ar_lookups |
618 | lookup_type = INVOICE_PRINT_OPTIONS |
619 +-----------------------------------------------*/
620
621 IF (p_printing_option IS NOT NULL)
622 THEN
623 BEGIN
624 SELECT 'Y'
625 INTO l_printing_option_valid
626 FROM AR_LOOKUPS
627 WHERE lookup_type = 'INVOICE_PRINT_OPTIONS'
628 AND lookup_code = p_printing_option;
629
630 EXCEPTION
631 WHEN NO_DATA_FOUND THEN
632 RAISE printing_option_invalid;
633 END;
634 END IF;
635
636
637 /*----------------------------------------------+
638 | Validate whether printing is mandatory or not|
639 +-----------------------------------------------*/
640
641 SELECT signed_flag , format_program_id
642 INTO l_signed_flag, l_format_program_id
643 FROM RA_CUST_TRX_TYPES
644 WHERE cust_trx_type_id = p_cust_trx_type_id;
645
646 IF PG_DEBUG in ('Y', 'C') THEN
647 arp_util.debug('Validate_Drawee: ' || 'Signed Flag : ' || l_signed_flag);
648 arp_util.debug('Validate_Drawee: ' || 'Format Program : ' || l_format_program_id);
649 arp_util.debug('Validate_Drawee: ' || 'Printing Option : ' || p_printing_option);
650 END IF;
651
652 IF (p_printing_option = 'NOT' and l_signed_flag = 'Y')
653 THEN
654 IF PG_DEBUG in ('Y', 'C') THEN
655 arp_util.debug('Validate_Drawee: ' || '>>>>>>>>>> Printing is mandatory');
656 END IF;
657 FND_MESSAGE.SET_NAME ('AR', 'AR_BR_PRINTING_MANDATORY');
658 app_exception.raise_exception;
659 END IF;
660
661
662 /*----------------------------------------------+
663 | If printing option is PRI, check that the |
664 | format program is defined |
665 +-----------------------------------------------*/
666
667 IF (p_printing_option = 'PRI' AND l_format_program_id IS NULL)
668 THEN
669 IF PG_DEBUG in ('Y', 'C') THEN
670 arp_util.debug('Validate_Drawee: ' || '>>>>>>>>>> No format program id');
671 END IF;
672 FND_MESSAGE.SET_NAME ('AR', 'AR_BR_NO_PRINT_FORMAT');
673 app_exception.raise_exception;
674 END IF;
675
676 IF PG_DEBUG in ('Y', 'C') THEN
677 arp_util.debug('Validate_Drawee: ' || 'AR_BILLS_CREATION_VAL_PVT.Validate_Printing_Option ()-');
678 END IF;
679
680 EXCEPTION
681 WHEN printing_option_invalid THEN
682 IF PG_DEBUG in ('Y', 'C') THEN
683 arp_util.debug('Validate_Drawee: ' || '>>>>>>>>>> Invalid Value for Printing Option');
684 arp_util.debug('Validate_Drawee: ' || ' Printing Option : ' || p_printing_option);
685 END IF;
686 FND_MESSAGE.SET_NAME ('AR', 'AR_PROCEDURE_VALID_ARGS_FAIL');
687 FND_MESSAGE.SET_TOKEN ('PARAMETER', 'Printing Option');
688 FND_MESSAGE.SET_TOKEN ('PROCEDURE', 'BR CREATION API');
689 app_exception.raise_exception;
690
691 WHEN OTHERS THEN
692 IF PG_DEBUG in ('Y', 'C') THEN
693 arp_util.debug('Validate_Drawee: ' || '>>>>>>>>>> EXCEPTION : AR_BILLS_CREATION_VAL_PVT.Validate_Printing_Option () ');
694 arp_util.debug('Validate_Drawee: ' || ' p_printing_option = ' || p_printing_option);
695 arp_util.debug('Validate_Drawee: ' || ' p_cust_trx_type_id = ' || p_cust_trx_type_id);
696 END IF;
697 RAISE;
698
699 END Validate_Printing_Option;
700
701
702
703 /*=============================================================================+
704 | PROCEDURE |
705 | Validate_Drawee_Account |
706 | |
707 | DESCRIPTION |
708 | Validates that the Drawee Account : |
709 | - Belongs to the Drawee |
710 | - Is Active at the Issue Date |
711 | |
712 | History |
713 | Date Name Description |
714 | 02-May-01 Debbie Jancis Added History Section and modified how the |
715 | account is validated because bank account |
716 | uses will only be linked to bill to buisness |
717 | purposes. |
718 | 24-May-01 Debbie Jancis Fixed bug 1798699: changed all selects to |
719 | verify bank account information with issue |
720 | instead of trying to select dates and then |
721 | verify because customer setup allows multiple |
722 | usage records with different dates. This |
723 | causes too many rows to be selected. |
724 +============================================================================*/
725
726 PROCEDURE Validate_Drawee_Account ( p_drawee_bank_account_id IN VARCHAR2 ,
727 p_drawee_id IN NUMBER ,
728 p_drawee_site_use_id IN NUMBER ,
729 p_issue_date IN DATE ) IS
730
731 l_start_date DATE;
732 l_end_date DATE;
733 l_bill_site_use_id NUMBER;
734 l_bank_ok NUMBER; /* bug 1798699 */
735
736 BEGIN
737 IF PG_DEBUG in ('Y', 'C') THEN
738 arp_util.debug('AR_BILLS_CREATION_VAL_PVT.Validate_Drawee_Account ()+');
739 END IF;
740
741 /* bug 1758982: Unable to create Manual BR when customer has
742 more then 1 drawee site with same bank account assigned */
743
744 /* PAYMENT_UPTAKE: Removed validation bcoz Drawee_bank_account_id is obsoleted */
745
746 IF PG_DEBUG in ('Y', 'C') THEN
747 arp_util.debug('AR_BILLS_CREATION_VAL_PVT.Validate_Drawee_Account ()-');
748 END IF;
749
750 END Validate_Drawee_Account;
751
752
753
754
755 /*==============================================================================+
756 | PROCEDURE |
757 | Validate_Remit_Account |
758 | |
759 | DESCRIPTION |
760 | Validates that the Remittance Account : |
761 | - Is Internal |
762 | - Is of the same currency as the BR or is a multi-currency account |
763 | - Is valid at the Issue Date |
764 | |
765 +==============================================================================*/
766
767 PROCEDURE validate_remit_account (p_remit_bank_account_id IN VARCHAR2,
768 p_invoice_currency_code IN VARCHAR2,
769 p_issue_date IN DATE) IS
770
771
772 -- Substitued a cursor for a direct select. Because of the CBA project
773 -- we should now assume that all remit_bank_account_id columns/variables
774 -- contain the use ids.
775 --
776 -- ORASHID 22-OCT-2003
777
778 /* Bug 3285863 Selecting receipt_multi_currency_flag rather than
779 multi_currency_allowed_flag. */
780
781 CURSOR c IS
782 SELECT cba.currency_code,
783 cba.receipt_multi_currency_flag receipt_multi_currency_flag,
784 cbau.end_date inactive_date
785 FROM ce_bank_accounts cba,
786 ce_bank_acct_uses cbau
787 WHERE cbau.bank_acct_use_id = p_remit_bank_account_id
788 AND cbau.bank_account_id = cba.bank_account_id
789 AND cba.account_classification = 'INTERNAL';
790
791
792 l_receipt_multi_currency_flag VARCHAR2(1);
793 l_currency_code VARCHAR2(15);
794 l_inactive_date DATE;
795
796 BEGIN
797
798 IF pg_debug IN ('Y', 'C') THEN
799 arp_util.debug('AR_BILLS_CREATION_VAL_PVT.Validate_Remit_Account ()+');
800 END IF;
801
802 IF (p_remit_bank_account_id IS NOT NULL) THEN
803
804 OPEN c;
805 FETCH c INTO l_currency_code, l_receipt_multi_currency_flag, l_inactive_date;
806 CLOSE c;
807
808 /*----------------------------------------------+
809 | Validate that the remittance account is of |
810 | the same currency as the BR or is a |
811 | multi-currency account |
812 +----------------------------------------------*/
813
814 IF (l_currency_code <> p_invoice_currency_code) AND
815 (l_receipt_multi_currency_flag <> 'Y') THEN
816
817 IF PG_DEBUG in ('Y', 'C') THEN
818 arp_util.debug('Validate_Remit_Account: ' ||
819 '>>>>>>>>>> Remittance Account invalid Currency');
820 arp_util.debug('Validate_Remit_Account: ' ||
821 ' remit bank account use id : ' || p_remit_bank_account_id);
822 arp_util.debug('Validate_Remit_Account: ' ||
823 ' BR Currency : ' || p_invoice_currency_code);
824 arp_util.debug('Validate_Remit_Account: ' ||
825 ' Remit Account Currency : ' || l_currency_code);
826 arp_util.debug('Validate_Remit_Account: ' ||
827 ' Multi Currency Flag : ' || l_receipt_multi_currency_flag);
828 END IF;
829
830 fnd_message.set_name ('AR', 'AR_BR_INVALID_REMIT_CURRENCY');
831 app_exception.raise_exception;
832
833 END IF;
834
835
836 /*------------------------------------------------+
837 | Validate that the remittance account is valid |
838 | at the issue date |
839 +------------------------------------------------*/
840
841 IF (p_issue_date NOT BETWEEN p_issue_date AND
842 NVL(l_inactive_date , p_issue_date)) THEN
843
844 IF PG_DEBUG in ('Y', 'C') THEN
845 arp_util.debug('>>>>>>>>>> EXCEPTION : Validate_Remit_Account () ');
846 arp_util.debug('Validate_Remit_Account: ' ||
847 '>>>>>>>>>> Remittance Account invalid with Issue Date');
848 arp_util.debug('Validate_Remit_Account: ' ||
849 ' p_issue_date : ' || p_issue_date);
850 arp_util.debug('Validate_Remit_Account: ' ||
851 ' remit bank account use id : ' ||
852 p_remit_bank_account_id);
853 END IF;
854
855 fnd_message.set_name('AR', 'AR_BR_BAD_DATE_REMIT_ACCOUNT');
856 app_exception.raise_exception;
857
858 END IF;
859
860 END IF;
861
862 IF pg_debug IN ('Y', 'C') THEN
863 arp_util.debug('AR_BILLS_CREATION_VAL_PVT.Validate_Remit_Account ()-');
864 END IF;
865
866 EXCEPTION
867 WHEN NO_DATA_FOUND THEN
868 IF pg_debug IN ('Y', 'C') THEN
869 arp_util.debug('>>>>>>>>>> EXCEPTION : AR_BILLS_CREATION_VAL_PVT.Validate_Remit_Account () ');
870 arp_util.debug('Validate_Remit_Account: ' || '>>>>>>>>>> Invalid Remittance Account');
871 arp_util.debug('Validate_Remit_Account: ' || ' remit bank account use id = ' || p_remit_bank_account_id);
872 arp_util.debug('Validate_Remit_Account: ' || ' p_invoice_currency_code = ' || p_invoice_currency_code);
873 arp_util.debug('Validate_Remit_Account: ' || ' p_issue_date = ' || p_issue_date);
874 END IF;
875
876 fnd_message.set_name('AR', 'AR_BR_INVALID_REMIT_ACCOUNT');
877 app_exception.raise_exception;
878
879 WHEN OTHERS THEN
880 IF pg_debug IN ('Y', 'C') THEN
881 arp_util.debug('>>>>>>>>>> EXCEPTION : AR_BILLS_CREATION_VAL_PVT.Validate_Remit_Account () ');
882 arp_util.debug('Validate_Remit_Account: ' || ' remit bank account use id = ' || p_remit_bank_account_id);
883 arp_util.debug('Validate_Remit_Account: ' || ' p_invoice_currency_code = ' || p_invoice_currency_code);
884 arp_util.debug('Validate_Remit_Account: ' || ' p_issue_date = ' || p_issue_date);
885 END IF;
886 RAISE;
887
888 END validate_remit_account;
889
890
891
892 /*==============================================================================+
893 | PROCEDURE |
894 | Validate_Override_Flag |
895 | |
896 | DESCRIPTION |
897 | Validates the value of the Override_Remit_Account_Flag : 'Y' or 'N' |
898 | |
899 | |
900 +==============================================================================*/
901
902 PROCEDURE Validate_Override_Flag ( p_override_remit_account_flag IN VARCHAR2) IS
903
904 BEGIN
905 IF PG_DEBUG in ('Y', 'C') THEN
906 arp_util.debug('AR_BILLS_CREATION_VAL_PVT.Validate_Override_Flag ()+');
907 END IF;
908
909 IF p_override_remit_account_flag NOT IN ('Y', 'N')
910 THEN
911 IF PG_DEBUG in ('Y', 'C') THEN
912 arp_util.debug('Validate_Override_Flag: ' || '>>>>>>>>>> Invalid Value for the Override Remit Account Flag');
913 arp_util.debug('Validate_Override_Flag: ' || 'Override remit account flag : ' || p_override_remit_account_flag);
914 END IF;
915 FND_MESSAGE.SET_NAME ('AR', 'AR_PROCEDURE_VALID_ARGS_FAIL');
916 FND_MESSAGE.SET_TOKEN ('PARAMETER', 'Override Remittance Flag');
917 FND_MESSAGE.SET_TOKEN ('PROCEDURE', 'BR CREATION API');
918 app_exception.raise_exception;
919 END IF;
920
921 IF PG_DEBUG in ('Y', 'C') THEN
922 arp_util.debug('AR_BILLS_CREATION_VAL_PVT.Validate_Override_Flag ()-');
923 END IF;
924
925 EXCEPTION
926 WHEN OTHERS THEN
927 IF PG_DEBUG in ('Y', 'C') THEN
928 arp_util.debug('>>>>>>>>>> EXCEPTION : AR_BILLS_CREATION_VAL_PVT.Validate_Override_Flag () ');
929 arp_util.debug('Validate_Override_Flag: ' || ' p_override_remit_account_flag = ' || p_override_remit_account_flag);
930 END IF;
931 app_exception.raise_exception;
932
933 END Validate_Override_Flag;
934
935
936 /*==============================================================================+
937 | PROCEDURE |
938 | Validate_Batch_ID |
939 | |
940 | DESCRIPTION |
941 | Validates the Batch Identifier and the status |
942 | |
943 +==============================================================================*/
944
945 PROCEDURE Validate_Batch_ID (p_batch_id IN NUMBER) IS
946
947
948 l_batch_id_valid VARCHAR2(1);
949
950 BEGIN
951 IF PG_DEBUG in ('Y', 'C') THEN
952 arp_util.debug('AR_BILLS_CREATION_VAL_PVT.Validate_Batch_ID ()+');
953 END IF;
954
955 IF (p_batch_id IS NOT NULL)
956 THEN
957 SELECT 'Y'
958 INTO l_batch_id_valid
959 FROM RA_BATCHES
960 WHERE batch_id = p_batch_id
961 AND status = 'A';
962 END IF;
963
964 IF PG_DEBUG in ('Y', 'C') THEN
965 arp_util.debug('AR_BILLS_CREATION_VAL_PVT.Validate_Batch_ID ()-');
966 END IF;
967
968 EXCEPTION
969 WHEN NO_DATA_FOUND THEN
970 IF PG_DEBUG in ('Y', 'C') THEN
971 arp_util.debug('>>>>>>>>>> EXCEPTION : AR_BILLS_CREATION_VAL_PVT.Validate_Batch_ID () ');
972 arp_util.debug('Validate_Batch_ID: ' || '>>>>>>>>>> Invalid Batch ID');
973 arp_util.debug('Validate_Batch_ID: ' || ' p_batch_id = ' || p_batch_id);
974 END IF;
975 FND_MESSAGE.SET_NAME ('AR', 'AR_BR_INVALID_BATCH_ID');
976 app_exception.raise_exception;
977
978 WHEN OTHERS THEN
979 IF PG_DEBUG in ('Y', 'C') THEN
980 arp_util.debug('>>>>>>>>>> EXCEPTION : AR_BILLS_CREATION_VAL_PVT.Validate_Batch_ID () ');
981 arp_util.debug('Validate_Batch_ID: ' || ' p_batch_id = ' || p_batch_id);
982 END IF;
983 RAISE;
984
985 END Validate_Batch_ID;
986
987
988
989 /*==============================================================================+
990 | PROCEDURE |
991 | Validate_Customer_Trx_ID |
992 | |
993 | DESCRIPTION |
994 | Validates the BR Identifier |
995 | |
996 +==============================================================================*/
997
998 PROCEDURE Validate_Customer_Trx_ID ( p_customer_trx_id IN NUMBER) IS
999
1000
1001 l_customer_trx_id_valid VARCHAR2(1);
1002
1003 BEGIN
1004 IF PG_DEBUG in ('Y', 'C') THEN
1005 arp_util.debug('AR_BILLS_CREATION_VAL_PVT.Validate_Customer_Trx_ID ()+');
1006 END IF;
1007
1008 SELECT 'Y'
1009 INTO l_customer_trx_id_valid
1010 FROM RA_CUSTOMER_TRX
1011 WHERE customer_trx_id = p_customer_trx_id;
1012
1013 IF PG_DEBUG in ('Y', 'C') THEN
1014 arp_util.debug('AR_BILLS_CREATION_VAL_PVT.Validate_Customer_Trx_ID ()-');
1015 END IF;
1016
1017 EXCEPTION
1018 WHEN NO_DATA_FOUND THEN
1019 IF PG_DEBUG in ('Y', 'C') THEN
1020 arp_util.debug('>>>>>>>>>> EXCEPTION : AR_BILLS_CREATION_VAL_PVT.Validate_Customer_Trx_ID () ');
1021 arp_util.debug('Validate_Customer_Trx_ID: ' || '>>>>>>>>>> Invalid BR ID');
1022 arp_util.debug('Validate_Customer_Trx_ID: ' || ' Customer Trx ID : ' || p_customer_trx_id);
1023 END IF;
1024 FND_MESSAGE.SET_NAME ('AR', 'AR_BR_INVALID_BR_ID');
1025 app_exception.raise_exception;
1026
1027 WHEN OTHERS THEN
1028 IF PG_DEBUG in ('Y', 'C') THEN
1029 arp_util.debug('>>>>>>>>>> EXCEPTION : AR_BILLS_CREATION_VAL_PVT.Validate_Customer_Trx_ID () ');
1030 arp_util.debug('Validate_Customer_Trx_ID: ' || ' p_customer_trx_id = ' || p_customer_trx_id);
1031 END IF;
1032 RAISE;
1033
1034 END Validate_Customer_Trx_ID;
1035
1036
1037 /*==============================================================================+
1038 | PROCEDURE |
1039 | Validate_Customer_Trx_Line_ID |
1040 | |
1041 | DESCRIPTION |
1042 | Validates the BR Line Identifier |
1043 | |
1044 +==============================================================================*/
1045
1046 PROCEDURE Validate_Customer_Trx_Line_ID ( p_customer_trx_line_id IN NUMBER) IS
1047
1048
1049 l_valid VARCHAR2(1);
1050
1051 BEGIN
1052 IF PG_DEBUG in ('Y', 'C') THEN
1053 arp_util.debug('AR_BILLS_CREATION_VAL_PVT.Validate_Customer_Trx_Line_ID ()+');
1054 END IF;
1055
1056 SELECT 'Y'
1057 INTO l_valid
1058 FROM RA_CUSTOMER_TRX_LINES
1059 WHERE customer_trx_line_id = p_customer_trx_line_id;
1060
1061 IF PG_DEBUG in ('Y', 'C') THEN
1062 arp_util.debug('AR_BILLS_CREATION_VAL_PVT.Validate_Customer_Trx_Line_ID ()-');
1063 END IF;
1064
1065 EXCEPTION
1066 WHEN NO_DATA_FOUND THEN
1067 IF PG_DEBUG in ('Y', 'C') THEN
1068 arp_util.debug('>>>>>>>>>> EXCEPTION : AR_BILLS_CREATION_VAL_PVT.Validate_Customer_Trx_Line_ID () ');
1069 arp_util.debug('Validate_Customer_Trx_Line_ID: ' || '>>>>>>>>>> Invalid BR Assignment ID');
1070 arp_util.debug('Validate_Customer_Trx_Line_ID: ' || ' p_customer_trx_line_id = ' || p_customer_trx_line_id);
1071 END IF;
1072 FND_MESSAGE.SET_NAME ('AR', 'AR_BR_INVALID_ASSIGNMENT_ID');
1073 app_exception.raise_exception;
1074
1075 WHEN OTHERS THEN
1076 IF PG_DEBUG in ('Y', 'C') THEN
1077 arp_util.debug('>>>>>>>>>> EXCEPTION : AR_BILLS_CREATION_VAL_PVT.Validate_Customer_Trx_Line_ID () ');
1078 arp_util.debug('Validate_Customer_Trx_Line_ID: ' || ' p_customer_trx_line_id = ' || p_customer_trx_line_id);
1079 END IF;
1080 RAISE;
1081
1082 END Validate_Customer_Trx_Line_ID;
1083
1084
1085
1086 /*==============================================================================+
1087 | PROCEDURE |
1088 | Validate_Create_BR_Header |
1089 | |
1090 | DESCRIPTION |
1091 | Validates the BR Header Information before insertion |
1092 | |
1093 +==============================================================================*/
1094
1095
1096 PROCEDURE Validate_Create_BR_Header (
1097 p_trx_rec IN ra_customer_trx%ROWTYPE ,
1098 p_gl_date IN DATE )
1099 IS
1100
1101 BEGIN
1102
1103 IF PG_DEBUG in ('Y', 'C') THEN
1104 arp_util.debug('AR_BILLS_CREATION_VAL_PVT.Validate_Create_BR_Header ()+');
1105 END IF;
1106
1107
1108 -- Validate GL Date
1109
1110 Validate_GL_Date (p_gl_date);
1111
1112
1113
1114 -- Validate Batch Source
1115
1116 Validate_Batch_Source (p_trx_rec.batch_source_id, p_trx_rec.trx_date);
1117
1118
1119 -- Validate Transaction Type
1120
1121 Validate_Transaction_Type (p_trx_rec.cust_trx_type_id, p_trx_rec.trx_date);
1122
1123
1124 -- Validate Drawee ID
1125
1126 Validate_Drawee (p_trx_rec.drawee_id);
1127
1128 -- Validate Drawee Location
1129
1130 Validate_Drawee_Location (p_trx_rec.drawee_site_use_id);
1131
1132 -- Validate Drawee Contact
1133
1134 Validate_Drawee_Contact (p_trx_rec.drawee_contact_id, p_trx_rec.drawee_id);
1135
1136
1137 -- Validate Currency
1138
1139 Validate_Currency (p_trx_rec.invoice_currency_code, p_trx_rec.trx_date);
1140
1141
1142 -- Validate Printing Option
1143
1144 Validate_Printing_Option (p_trx_rec.printing_option, p_trx_rec.cust_trx_type_id);
1145
1146
1147 -- Validate Remittance Bank Account Id
1148
1149 Validate_Remit_Account (
1150 p_trx_rec.remit_bank_acct_use_id ,
1151 p_trx_rec.invoice_currency_code ,
1152 p_trx_rec.trx_date );
1153
1154
1155 -- Validate the Override Remit Account Flag
1156
1157 Validate_Override_Flag (p_trx_rec.override_remit_account_flag);
1158
1159
1160 -- Validate the Batch ID
1161
1162 Validate_Batch_ID (p_trx_rec.batch_id);
1163
1164 IF PG_DEBUG in ('Y', 'C') THEN
1165 arp_util.debug('AR_BILLS_CREATION_VAL_PVT.Validate_Create_BR_Header ()-');
1166 END IF;
1167
1168 EXCEPTION
1169 WHEN Others THEN
1170 IF PG_DEBUG in ('Y', 'C') THEN
1171 arp_util.debug('>>>>>>>>>> EXCEPTION : AR_BILLS_CREATION_VAL_PVT.Validate_Create_BR_Header () ');
1172 END IF;
1173 RAISE;
1174
1175 END Validate_Create_BR_Header;
1176
1177
1178 /*==============================================================================+
1179 | PROCEDURE |
1180 | Validate_Update_BR_Header |
1181 | |
1182 | DESCRIPTION |
1183 | Validates the BR Header Information before update |
1184 | |
1185 +==============================================================================*/
1186
1187
1188 PROCEDURE Validate_Update_BR_Header (
1189 p_trx_rec IN ra_customer_trx%ROWTYPE ,
1190 p_gl_date IN DATE )
1191
1192 IS
1193
1194 BEGIN
1195
1196 IF PG_DEBUG in ('Y', 'C') THEN
1197 arp_util.debug('AR_BILLS_CREATION_VAL_PVT.Validate_Update_BR_Header ()+');
1198 END IF;
1199
1200 -- Validate GL Date
1201 --Commented by Yao Zhang for bug 10125134
1202 --Validate_GL_Date (p_gl_date);
1203
1204
1205 -- Validate Update of Maturity_Date
1206
1207 Validate_Update_Maturity_Date (p_trx_rec.customer_trx_id ,
1208 p_trx_rec.term_due_date );
1209
1210
1211 -- Validate Transaction Type
1212
1213 Validate_Transaction_Type (p_trx_rec.cust_trx_type_id, p_trx_rec.trx_date);
1214
1215
1216 -- Validate Drawee ID
1217
1218 Validate_Drawee (p_trx_rec.drawee_id);
1219
1220
1221 -- Validate Drawee Location
1222
1223 Validate_Drawee_Location (p_trx_rec.drawee_site_use_id);
1224
1225
1226 -- Validate Drawee Contact
1227
1228 Validate_Drawee_Contact (p_trx_rec.drawee_contact_id, p_trx_rec.drawee_id);
1229
1230
1231 -- Validate Currency
1232
1233 Validate_Currency (p_trx_rec.invoice_currency_code, p_trx_rec.trx_date);
1234
1235
1236 -- Validate Printing Option
1237
1238 Validate_Printing_Option (p_trx_rec.printing_option ,
1239 p_trx_rec.cust_trx_type_id );
1240
1241
1242 -- Validate Remittance Bank Account Id
1243
1244 Validate_Remit_Account (
1245 p_trx_rec.remit_bank_acct_use_id ,
1246 p_trx_rec.invoice_currency_code ,
1247 p_trx_rec.trx_date );
1248
1249
1250 -- Validate the Override Remit Account Flag
1251
1252 Validate_Override_Flag (p_trx_rec.override_remit_account_flag);
1253
1254 IF PG_DEBUG in ('Y', 'C') THEN
1255 arp_util.debug('Validate_Update_BR_Header: ' || 'AR_BILLS_CREATION_VAL_PVT.Validate_BR_Update_Header ()-');
1256 END IF;
1257
1258
1259 EXCEPTION
1260 WHEN Others THEN
1261 IF PG_DEBUG in ('Y', 'C') THEN
1262 arp_util.debug('>>>>>>>>>> EXCEPTION : AR_BILLS_CREATION_VAL_PVT.Validate_Update_BR_Header () ');
1263 END IF;
1264 RAISE;
1265
1266 END Validate_Update_BR_Header;
1267
1268
1269
1270 /*==============================================================================+
1271 | PROCEDURE |
1272 | Validate_Assigned_Amount |
1273 | |
1274 | DESCRIPTION |
1275 | - Validates that the transaction is not exchanged for more than its full |
1276 | amount |
1277 | - Calculates the accounted assigned amount |
1278 | |
1279 +==============================================================================*/
1280
1281 PROCEDURE Validate_Assigned_Amount ( p_trl_rec IN OUT NOCOPY ra_customer_trx_lines%ROWTYPE ,
1282 p_ps_rec IN ar_payment_schedules%ROWTYPE ) IS
1283
1284
1285 l_exchange_rate NUMBER;
1286 l_functional_currency VARCHAR2(15);
1287 l_acctd_amount NUMBER;
1288 l_new_ADR NUMBER;
1289 l_new_acctd_ADR NUMBER;
1290 l_ADR NUMBER;
1291 l_acctd_ADR NUMBER;
1292
1293
1294
1295 BEGIN
1296 IF PG_DEBUG in ('Y', 'C') THEN
1297 arp_util.debug('AR_BILLS_CREATION_VAL_PVT.Validate_Assigned_Amount ()+');
1298 arp_util.debug ('Validate_Assigned_Amount: ' || 'Exchange rate : ' || p_ps_rec.exchange_rate);
1299 arp_util.debug ('Validate_Assigned_Amount: ' || 'Amount Due Remaining : ' || p_ps_rec.amount_due_remaining);
1300 arp_util.debug ('Validate_Assigned_Amount: ' || 'Acctd Amount Due Remaining : ' || p_ps_rec.acctd_amount_due_remaining);
1301 END IF;
1302
1303
1304 IF (p_trl_rec.extended_amount = 0)
1305 THEN
1306 IF PG_DEBUG in ('Y', 'C') THEN
1307 arp_util.debug('Validate_Assigned_Amount: ' || '>>>>>>>>>> The amount of the assignment must not be null');
1308 arp_util.debug('Validate_Assigned_Amount: ' || ' Amount Assigned : ' || p_trl_rec.extended_amount);
1309 END IF;
1310 FND_MESSAGE.SET_NAME ('AR', 'AR_BR_INVALID_AMOUNT');
1311 app_exception.raise_exception;
1312 END IF;
1313
1314
1315 /*----------------------------------------------+
1316 | Validate that the transaction is not |
1317 | exchanged for more than its remaining amount |
1318 +-----------------------------------------------*/
1319
1320 IF ABS(p_trl_rec.extended_amount) > ABS(p_ps_rec.amount_due_remaining)
1321 THEN
1322 IF PG_DEBUG in ('Y', 'C') THEN
1323 arp_util.debug('Validate_Assigned_Amount: ' || '>>>>>>>>>> Amount Exchanged Exceed PS');
1324 arp_util.debug('Validate_Assigned_Amount: ' || '>>>>>>>>>> OverApplication not allowed');
1325 arp_util.debug('Validate_Assigned_Amount: ' || ' Amount Assigned : ' || p_trl_rec.extended_amount);
1326 arp_util.debug('Validate_Assigned_Amount: ' || ' Amount Remaining : ' || p_ps_rec.amount_due_remaining);
1327 END IF;
1328 FND_MESSAGE.SET_NAME ('AR', 'AR_BR_OVERAPPLY');
1329 FND_MESSAGE.SET_TOKEN ('TRXNUM', p_ps_rec.trx_number);
1330 app_exception.raise_exception;
1331 END IF;
1332
1333
1334 /*----------------------------------------------+
1335 | Calculate the accounted assigned amount |
1336 +-----------------------------------------------*/
1337
1338 l_ADR := p_ps_rec.amount_due_remaining;
1339 l_acctd_ADR := p_ps_rec.acctd_amount_due_remaining;
1340
1341 arp_util.calc_acctd_amount(
1342 NULL,
1343 NULL,
1344 NULL,
1345 nvl(p_ps_rec.exchange_rate,1) ,
1346 '-' , /** ADR will be reduced by amount_applied */
1347 l_ADR , /* Current ADR */
1348 l_acctd_ADR , /* Current Acctd. ADR */
1349 p_trl_rec.extended_amount , /* Assignment Amount */
1350 l_new_ADR , /* New ADR */
1351 l_new_acctd_ADR , /* New Acctd. ADR */
1352 p_trl_rec.extended_acctd_amount ); /* Acct. amount_applied */
1353
1354 IF PG_DEBUG in ('Y', 'C') THEN
1355 arp_util.debug('Validate_Assigned_Amount: ' || 'Amount_applied : ' || p_trl_rec.extended_amount);
1356 arp_util.debug('Validate_Assigned_Amount: ' || 'Acctd Amount Applied : ' || p_trl_rec.extended_acctd_amount);
1357 arp_util.debug('AR_BILLS_CREATION_VAL_PVT.Validate_Assigned_Amount ()-');
1358 END IF;
1359
1360 EXCEPTION
1361 WHEN OTHERS THEN
1362 IF PG_DEBUG in ('Y', 'C') THEN
1363 arp_util.debug('>>>>>>>>>> EXCEPTION : AR_BILLS_CREATION_VAL_PVT.Validate_Assigned_Amount () ');
1364 END IF;
1365 RAISE;
1366
1367 END Validate_Assigned_Amount;
1368
1369
1370
1371
1372 /*==============================================================================+
1373 | PROCEDURE |
1374 | Is_Transaction_BR |
1375 | |
1376 | DESCRIPTION |
1377 | Check if the transaction type has a type 'BR' |
1378 | |
1379 +==============================================================================*/
1380
1381 FUNCTION Is_Transaction_BR (p_cust_trx_type_id IN NUMBER) RETURN BOOLEAN IS
1382
1383 l_type VARCHAR2(20);
1384
1385 BEGIN
1386 IF PG_DEBUG in ('Y', 'C') THEN
1387 arp_util.debug('AR_BILLS_CREATION_VAL_PVT.Is_Transaction_BR ()+');
1388 END IF;
1389
1390 SELECT type
1391 INTO l_type
1392 FROM RA_CUST_TRX_TYPES
1393 WHERE cust_trx_type_id = p_cust_trx_type_id;
1394
1395 IF (l_type = 'BR')
1396 THEN
1397 IF PG_DEBUG in ('Y', 'C') THEN
1398 arp_util.debug ('Is_Transaction_BR: ' || 'The transaction to be exchanged is a BR');
1399 END IF;
1400 RETURN (TRUE);
1401 ELSE
1402 RETURN (FALSE);
1403 END IF;
1404
1405 IF PG_DEBUG in ('Y', 'C') THEN
1406 arp_util.debug('AR_BILLS_CREATION_VAL_PVT.Is_Transaction_BR ()-');
1407 END IF;
1408
1409 EXCEPTION
1410 WHEN NO_DATA_FOUND THEN
1411 IF PG_DEBUG in ('Y', 'C') THEN
1412 arp_util.debug('>>>>>>>>>> EXCEPTION : AR_BILLS_CREATION_VAL_PVT.Is_Transaction_BR () ');
1413 arp_util.debug('Is_Transaction_BR: ' || '>>>>>>>>>> Invalid Transaction Type ID');
1414 arp_util.debug('Is_Transaction_BR: ' || ' p_cust_trx_type_id : ' || p_cust_trx_type_id);
1415 END IF;
1416 FND_MESSAGE.SET_NAME ('AR', 'AR_BR_INVALID_TRX_TYPE');
1417 app_exception.raise_exception;
1418
1419 WHEN OTHERS THEN
1420 IF PG_DEBUG in ('Y', 'C') THEN
1421 arp_util.debug('>>>>>>>>>> EXCEPTION : Is_Transaction_BR () ');
1422 arp_util.debug('Is_Transaction_BR: ' || ' p_cust_trx_type_id : ' || p_cust_trx_type_id);
1423 END IF;
1424 RAISE;
1425
1426 END Is_Transaction_BR;
1427
1428
1429 /*==============================================================================+
1430 | PROCEDURE |
1431 | Validate_BR_Status |
1432 | |
1433 | DESCRIPTION |
1434 | Validates the status of the BR (must be INCOMPLETE), so that insert, |
1435 | update and delete of BR Assignments are allowed. |
1436 | |
1437 +==============================================================================*/
1438
1439 PROCEDURE Validate_BR_Status ( p_customer_trx_id IN NUMBER) IS
1440
1441 l_trh_rec AR_TRANSACTION_HISTORY%ROWTYPE;
1442
1443
1444 BEGIN
1445 IF PG_DEBUG in ('Y', 'C') THEN
1446 arp_util.debug('AR_BILLS_CREATION_VAL_PVT.Validate_BR_Status ()+');
1447 END IF;
1448
1449 -- Fetch the BR history information
1450
1451 l_trh_rec.customer_trx_id := p_customer_trx_id;
1452 ARP_TRANSACTION_HISTORY_PKG.fetch_f_trx_id (l_trh_rec);
1453
1454 /*----------------------------------------------+
1455 | Check that the BR is incomplete, in order to |
1456 | allow the insert, update or delete of BR |
1457 | assignments. |
1458 +-----------------------------------------------*/
1459
1460 IF (l_trh_rec.status <> C_INCOMPLETE)
1461 THEN
1462 IF PG_DEBUG in ('Y', 'C') THEN
1463 arp_util.debug ('Validate_BR_Status: ' || 'You cannot update the assignments when the BR has a status : ' || l_trh_rec.status);
1464 END IF;
1465 FND_MESSAGE.SET_NAME ('AR', 'AR_BR_ASSIGN_FORBIDDEN');
1466 app_exception.raise_exception;
1467 END IF;
1468
1469
1470 IF PG_DEBUG in ('Y', 'C') THEN
1471 arp_util.debug('AR_BILLS_CREATION_VAL_PVT.Validate_BR_Status ()-');
1472 END IF;
1473
1474 EXCEPTION
1475 WHEN OTHERS THEN
1476 IF PG_DEBUG in ('Y', 'C') THEN
1477 arp_util.debug('>>>>>>>>>> EXCEPTION : AR_BILLS_CREATION_VAL_PVT.Validate_BR_Status () ');
1478 arp_util.debug('Validate_BR_Status: ' || ' p_customer_trx_id = ' || p_customer_trx_id);
1479 END IF;
1480 RAISE;
1481
1482 END Validate_BR_Status;
1483
1484
1485
1486 /*==============================================================================+
1487 | PROCEDURE |
1488 | Validate_Assignment_Status |
1489 | |
1490 | DESCRIPTION |
1491 | Validates the status of the BR to be exchanged (UNPAID) |
1492 | |
1493 +==============================================================================*/
1494
1495 PROCEDURE Validate_Assignment_Status ( p_customer_trx_id IN NUMBER,
1496 p_trx_number IN ar_payment_schedules.trx_number%TYPE) IS
1497
1498 l_trh_rec AR_TRANSACTION_HISTORY%ROWTYPE;
1499 l_trx_rec RA_CUSTOMER_TRX%ROWTYPE;
1500
1501 BEGIN
1502 IF PG_DEBUG in ('Y', 'C') THEN
1503 arp_util.debug('AR_BILLS_CREATION_VAL_PVT.Validate_Assignment_Status ()+');
1504 END IF;
1505
1506 l_trh_rec.customer_trx_id := p_customer_trx_id;
1507 ARP_TRANSACTION_HISTORY_PKG.fetch_f_trx_id (l_trh_rec);
1508 ARP_CT_PKG.fetch_p (l_trx_rec, p_customer_trx_id);
1509
1510 IF (l_trh_rec.status <> C_UNPAID)
1511 THEN
1512 IF PG_DEBUG in ('Y', 'C') THEN
1513 arp_util.debug('Validate_Assignment_Status: ' || '>>>>>>>>>> The BR to be exchanged must be Unpaid');
1514 arp_util.debug('Validate_Assignment_Status: ' || ' Status : ' || l_trh_rec.status);
1515 arp_util.debug('Validate_Assignment_Status: ' || ' Event : ' || l_trh_rec.event);
1516 END IF;
1517 FND_MESSAGE.SET_NAME ('AR' , 'AR_BR_CANNOT_ASSIGN');
1518 FND_MESSAGE.set_token ('TRXNUM', p_trx_number);
1519 app_exception.raise_exception;
1520 END IF;
1521
1522 IF PG_DEBUG in ('Y', 'C') THEN
1523 arp_util.debug('AR_BILLS_CREATION_VAL_PVT.Validate_Assignment_Status ()-');
1524 END IF;
1525
1526 EXCEPTION
1527 WHEN NO_DATA_FOUND THEN
1528 IF PG_DEBUG in ('Y', 'C') THEN
1529 arp_util.debug('>>>>>>>>>> EXCEPTION : Validate_Assignment_Status () ');
1530 arp_util.debug('Validate_Assignment_Status: ' || '>>>>>>>>>> Invalid BR ID');
1531 arp_util.debug('Validate_Assignment_Status: ' || ' Customer Trx ID : ' || p_customer_trx_id);
1532 END IF;
1533 FND_MESSAGE.SET_NAME ('AR', 'AR_BR_INVALID_BR_ID');
1534 app_exception.raise_exception;
1535
1536 WHEN OTHERS THEN
1537 IF PG_DEBUG in ('Y', 'C') THEN
1538 arp_util.debug('>>>>>>>>>> EXCEPTION : Validate_Assignment_Status () ');
1539 arp_util.debug('Validate_Assignment_Status: ' || ' p_customer_trx_id = ' || p_customer_trx_id);
1540 arp_util.debug('Validate_Assignment_Status: ' || ' p_trx_number = ' || p_trx_number);
1541 END IF;
1542 RAISE;
1543
1544 END Validate_Assignment_Status;
1545
1546
1547 /*==============================================================================+
1548 | PROCEDURE |
1549 | Validate_BR_Assignment |
1550 | |
1551 | DESCRIPTION |
1552 | Validates the BR Assignment Information before insertion or update |
1553 | |
1554 +==============================================================================*/
1555
1556
1557 PROCEDURE Validate_BR_Assignment (p_trl_rec IN OUT NOCOPY ra_customer_trx_lines%ROWTYPE ,
1558 p_ps_rec IN ar_payment_schedules%ROWTYPE ,
1559 p_trx_rec IN ra_customer_trx%ROWTYPE ,
1560 p_BR_rec IN ra_customer_trx%ROWTYPE )
1561 IS
1562
1563 l_type VARCHAR2(20);
1564
1565 BEGIN
1566
1567 IF PG_DEBUG in ('Y', 'C') THEN
1568 arp_util.debug('AR_BILLS_CREATION_VAL_PVT.Validate_BR_Assignment ()+');
1569 END IF;
1570
1571
1572 /*----------------------------------------------+
1573 | Validate the status of the BR : |
1574 | must be INCOMPLETE |
1575 +-----------------------------------------------*/
1576
1577 Validate_BR_Status (p_trl_rec.customer_trx_id);
1578
1579
1580
1581 SELECT type
1582 INTO l_type
1583 FROM RA_CUST_TRX_TYPES
1584 WHERE cust_trx_type_id = p_ps_rec.cust_trx_type_id;
1585
1586 /*----------------------------------------------+
1587 | Validate that the assignment is not a |
1588 | guarantee |
1589 +-----------------------------------------------*/
1590
1591 IF (l_type = 'GUAR')
1592 THEN
1593 IF PG_DEBUG in ('Y', 'C') THEN
1594 arp_util.debug ('Validate_BR_Assignment: ' || '>>>>>>>>>> Guarantee cannot be exchanged for BR');
1595 END IF;
1596 FND_MESSAGE.SET_NAME ('AR', 'AR_BR_INVALID_TRX_TYPE');
1597 app_exception.raise_exception;
1598
1599 ELSIF (l_type = 'BR')
1600 THEN
1601
1602 /*----------------------------------------------+
1603 | If the transaction to be exchanged is a BR, |
1604 | validate the status of the BR exchanged. |
1605 +-----------------------------------------------*/
1606
1607 Validate_Assignment_Status (p_trl_rec.br_ref_customer_trx_id, p_ps_rec.trx_number);
1608
1609 /*----------------------------------------------+
1610 | Only Total Exchange is allowed |
1611 +-----------------------------------------------*/
1612
1613 IF (AR_BILLS_MAINTAIN_STATUS_PUB.Is_Payment_Schedule_Reduced(p_ps_rec))
1614 THEN
1615 IF PG_DEBUG in ('Y', 'C') THEN
1616 arp_util.debug ('Validate_BR_Assignment: ' || '>>>>>>>>>> The BR ' || p_trx_rec.trx_number || ' cannot be exchanged');
1617 arp_util.debug ('Validate_BR_Assignment: ' || ' Only total exchange is allowed for BR');
1618 arp_util.debug ('Validate_BR_Assignment: ' || ' amount_due_original : ' || p_ps_rec.amount_due_original);
1619 arp_util.debug ('Validate_BR_Assignment: ' || ' amount_due_remaining : ' || p_ps_rec.amount_due_remaining);
1620 END IF;
1621 FND_MESSAGE.SET_NAME ('AR', 'AR_BR_CANNOT_ASSIGN');
1622 FND_MESSAGE.SET_TOKEN ('TRXNUM', p_trx_rec.trx_number);
1623 app_exception.raise_exception;
1624 END IF;
1625
1626
1627 IF (p_trl_rec.extended_amount <> p_ps_rec.amount_due_original)
1628 THEN
1629 IF PG_DEBUG in ('Y', 'C') THEN
1630 arp_util.debug ('Validate_BR_Assignment: ' || '>>>>>>>>>> The BR ' || p_trx_rec.trx_number || ' cannot be exchanged');
1631 arp_util.debug ('Validate_BR_Assignment: ' || ' Only total exchange is allowed for BR');
1632 arp_util.debug ('Validate_BR_Assignment: ' || ' amount assigned : ' || p_trl_rec.extended_amount);
1633 arp_util.debug ('Validate_BR_Assignment: ' || ' amount_due_original : ' || p_ps_rec.amount_due_original);
1634 END IF;
1635 FND_MESSAGE.SET_NAME ('AR', 'AR_BR_CANNOT_ASSIGN');
1636 FND_MESSAGE.SET_TOKEN ('TRXNUM', p_trx_rec.trx_number);
1637 app_exception.raise_exception;
1638 END IF;
1639
1640 END IF;
1641
1642
1643 /*----------------------------------------------+
1644 | Validate the reserved columns of the |
1645 | exchanged Payment Schedule |
1646 +-----------------------------------------------*/
1647
1648 IF AR_BILLS_MAINTAIN_STATUS_PUB.Is_BR_Reserved (p_ps_rec)
1649 THEN
1650 IF PG_DEBUG in ('Y', 'C') THEN
1651 arp_util.debug ('Validate_BR_Assignment: ' || 'The transaction ' || p_trx_rec.trx_number || ' is reserved, it cannot be assigned');
1652 END IF;
1653 FND_MESSAGE.SET_NAME ('AR', 'AR_BR_TRX_ALREADY_ASSIGN');
1654 FND_MESSAGE.SET_TOKEN ('TRXNUM', p_trx_rec.trx_number);
1655 app_exception.raise_exception;
1656 END IF;
1657
1658
1659 /*----------------------------------------------+
1660 | Validate The Assigned Amount, |
1661 | overapplication is not allowed. |
1662 | And Calculate the accounted assigned amount |
1663 +-----------------------------------------------*/
1664
1665 Validate_Assigned_Amount (p_trl_rec, p_ps_rec);
1666
1667
1668
1669 /*-------------------------------------------------+
1670 | 3553211 : Validate and default the flexfields |
1671 | for manual BR creation only |
1672 +--------------------------------------------------*/
1673 IF p_BR_rec.created_from = 'ARBRMAIN' THEN
1674
1675 AR_BILLS_CREATION_LIB_PVT.Validate_Desc_Flexfield (
1676 p_trl_rec.attribute_category ,
1677 p_trl_rec.attribute1 ,
1678 p_trl_rec.attribute2 ,
1679 p_trl_rec.attribute3 ,
1680 p_trl_rec.attribute4 ,
1681 p_trl_rec.attribute5 ,
1682 p_trl_rec.attribute6 ,
1683 p_trl_rec.attribute7 ,
1684 p_trl_rec.attribute8 ,
1685 p_trl_rec.attribute9 ,
1686 p_trl_rec.attribute10 ,
1687 p_trl_rec.attribute11 ,
1688 p_trl_rec.attribute12 ,
1689 p_trl_rec.attribute13 ,
1690 p_trl_rec.attribute14 ,
1691 p_trl_rec.attribute15 ,
1692 'RA_CUSTOMER_TRX_LINES' );
1693
1694 END IF;
1695
1696
1697 IF PG_DEBUG in ('Y', 'C') THEN
1698 arp_util.debug('AR_BILLS_CREATION_VAL_PVT.Validate_BR_Assignment ()-');
1699 END IF;
1700
1701
1702 EXCEPTION
1703 WHEN Others THEN
1704 IF PG_DEBUG in ('Y', 'C') THEN
1705 arp_util.debug('>>>>>>>>>> EXCEPTION : AR_BILLS_CREATION_VAL_PVT.Validate_BR_Assignment () ');
1706 END IF;
1707 RAISE;
1708
1709 END Validate_BR_Assignment;
1710
1711
1712
1713 END AR_BILLS_CREATION_VAL_PVT;