[Home] [Help]
PACKAGE BODY: APPS.CE_VALIDATE_BANKINFO
Source
1 package body CE_VALIDATE_BANKINFO as
2 /* $Header: cevlbnkb.pls 120.34.12010000.5 2008/11/21 10:50:22 vnetan ship $ */
3
4
5 -- bug 3855002
6 --l_DEBUG varchar2(1) := NVL(FND_PROFILE.value('CE_DEBUG'), 'N');
7 --l_DEBUG varchar2(1) := 'Y';
8 --confirmed sql 6/25/02
9
10 -- bug 6856840
11 -- package variable to track whether bank ID needs to be mapped to Bank Num
12 BANK_ID_IS_NUM BOOLEAN := FALSE;
13
14 cursor get_bank_num ( Xi_BANK_ID NUMBER) IS
15 select OrgProfileBank.BANK_OR_BRANCH_NUMBER
16 From HZ_PARTIES PartyBank,
17 HZ_ORGANIZATION_PROFILES OrgProfileBank,
18 HZ_CODE_ASSIGNMENTS CABank
19 Where
20 PartyBank.party_id = Xi_BANK_ID
21 and PartyBank.PARTY_TYPE = 'ORGANIZATION'
22 and PartyBank.status = 'A'
23 And PartyBank.PARTY_ID = OrgProfileBank.PARTY_ID
24 and sysdate between trunc(OrgProfileBank.EFFECTIVE_START_DATE)
25 and nvl(trunc(OrgProfileBank.EFFECTIVE_END_DATE),sysdate)
26 And CABank.CLASS_CATEGORY = 'BANK_INSTITUTION_TYPE'
27 And CABank.CLASS_CODE = 'BANK'
28 And CABank.OWNER_TABLE_NAME = 'HZ_PARTIES'
29 And CABank.OWNER_TABLE_ID = PartyBank.PARTY_ID
30 And nvl(CABank.status, 'A') = 'A';
31
32
33
34 function ce_check_numeric(check_value VARCHAR2,
35 pos_from NUMBER,
36 pos_for NUMBER)
37 RETURN VARCHAR2
38 IS
39 num_check VARCHAR2(40);
40 BEGIN
41 num_check := '1';
42 num_check := nvl(
43 rtrim(
44 translate(substr(check_value,pos_from,pos_for),
45 '1234567890',
46 ' ')
47 ), '0'
48 );
49 RETURN(num_check);
50 END ce_check_numeric;
51
52 -- SEPA 6700007
53
54 PROCEDURE CE_VALIDATE_BIC( X_BIC_CODE IN varchar2,
55 p_init_msg_list IN VARCHAR2,
56 x_msg_count OUT NOCOPY NUMBER,
57 x_msg_data OUT NOCOPY VARCHAR2,
58 x_return_status IN OUT NOCOPY VARCHAR2
59 ) AS
60 l_bic varchar2(30) ;
61 l_string varchar2(30) ;
62
63 BEGIN
64 l_DEBUG := NVL(FND_PROFILE.value('CE_DEBUG'), 'N');
65
66 IF l_DEBUG in ('Y', 'C') THEN
67 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_bic');
68 END IF;
69 -- Initialize message list if p_init_msg_list is set to TRUE.
70 IF FND_API.to_Boolean(p_init_msg_list) THEN
71 FND_MSG_PUB.initialize;
72 END IF;
73 -- initialize API return status to success.
74 x_return_status := fnd_api.g_ret_sts_success;
75
76 l_bic := upper(X_BIC_CODE) ;
77
78 If length(l_bic) IN ( 8,11 ) Then
79 l_string := nvl(translate(l_bic,'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890','0'),'0');
80 l_string := nvl(length(ltrim(rtrim(replace(l_string, '0', ' ')))),'0') ;
81
82 if to_number(l_string) > 0 Then
83 fnd_message.set_name('CE', 'CE_INVALID_BIC_CODE');
84 fnd_msg_pub.add;
85 x_return_status := fnd_api.g_ret_sts_error;
86 End If ;
87 Else
88 fnd_message.set_name('CE', 'CE_INVALID_BIC_LENGTH');
89 fnd_msg_pub.add;
90 x_return_status := fnd_api.g_ret_sts_error;
91 End If ;
92
93 FND_MSG_PUB.Count_And_Get(
94 p_encoded => FND_API.G_FALSE,
95 p_count => x_msg_count,
96 p_data => x_msg_data);
97
98 end CE_VALIDATE_BIC;
99
100 function ce_remove_formats(check_value VARCHAR2)
101 RETURN VARCHAR2
102 IS
103 num_check VARCHAR2(40);
104 BEGIN
105
106 num_check := upper(replace(check_value,' ',''));
107 num_check := replace(num_check,'-','');
108 num_check := replace(num_check,'.','');
109
110 RETURN(num_check);
111 END ce_remove_formats;
112
113
114
115 /* --------------------------------------------------------------------
116 | PRIVATE PROCEDURE |
117 | COMPARE_BANK_AND_BRANCH_NUM |
118 | |
119 | CALLED BY |
120 | CE_VALIDATE_BRANCH_* |
121 | |
122 | DESCRIPTION |
123 | Verify that the value entered for Bank number and Branch number |
124 | fields are the same when both fields are entered for some |
125 | countries |
126 --------------------------------------------------------------------- */
127 PROCEDURE COMPARE_BANK_AND_BRANCH_NUM(
128 Xi_branch_num IN VARCHAR2,
129 Xi_BANK_ID IN NUMBER
130 ) AS
131 BANK_NUM varchar2(60);
132 bank_count number;
133 BEGIN
134
135 IF l_DEBUG in ('Y', 'C') THEN
136 cep_standard.debug('>>CE_VALIDATE_BANKINFO.compare_bank_and_branch_num');
137 END IF;
138
139 -- Bug 6856840: Added IF clause to handle cases where Bank ID is the Bank Number --
140 IF BANK_ID_IS_NUM = TRUE
141 THEN
142 -- Bank ID is the bank number. No need to fetch from the table --
143 IF ((nvl(Xi_BANK_ID,Xi_BRANCH_NUM) = Xi_BRANCH_NUM))
144 THEN
145 IF l_DEBUG in ('Y', 'C') THEN
146 cep_standard.debug('COMPARE_BANK_AND_BRANCH_NUM: ' || ' passed_check');
147 END IF;
148 ELSE
149 IF l_DEBUG in ('Y', 'C') THEN
150 cep_standard.debug('COMPARE_BANK_AND_BRANCH_NUM: ' ||
151 'Bank number and branch number does not match'||
152 'CE_BANK_BRANCH_NUM_NOT_MATCHED');
153 END IF;
154 fnd_message.set_name('CE', 'CE_BANK_BRANCH_NUM_NOT_MATCHED');
155 fnd_msg_pub.add;
156
157 END IF;
158
159 ELSE
160 -- Bank ID is being used. Check if Bank exists and fetch Bank Number --
161 SELECT count(*) INTO bank_count
162 FROM HZ_PARTIES PartyBank,
163 HZ_ORGANIZATION_PROFILES OrgProfileBank,
164 HZ_CODE_ASSIGNMENTS CABank
165 WHERE
166 PartyBank.party_id = Xi_BANK_ID
167 AND PartyBank.PARTY_TYPE = 'ORGANIZATION'
168 AND PartyBank.status = 'A'
169 AND PartyBank.PARTY_ID = OrgProfileBank.PARTY_ID
170 AND sysdate BETWEEN trunc(OrgProfileBank.EFFECTIVE_START_DATE)
171 AND nvl(trunc(OrgProfileBank.EFFECTIVE_END_DATE),sysdate)
172 AND CABank.CLASS_CATEGORY = 'BANK_INSTITUTION_TYPE'
173 AND CABank.CLASS_CODE = 'BANK'
174 AND CABank.OWNER_TABLE_NAME = 'HZ_PARTIES'
175 AND CABank.OWNER_TABLE_ID = PartyBank.PARTY_ID
176 AND nvl(CABank.status, 'A') = 'A';
177
178
179 IF (bank_count = 1)
180 THEN
181 OPEN get_bank_num(Xi_BANK_ID);
182 FETCH get_bank_num INTO bank_num;
183 CLOSE get_bank_num;
184
185 IF (BANK_NUM IS NULL)
186 THEN
187 null;
188 ELSIF (BANK_NUM IS NOT NULL)
189 THEN
190 BANK_NUM := upper(replace(BANK_NUM,' ',''));
191 BANK_NUM := upper(replace(BANK_NUM,'-',''));
192
193 IF l_DEBUG in ('Y', 'C') THEN
194 cep_standard.debug('COMPARE_BANK_AND_BRANCH_NUM: ' || 'BANK_NUM : ' ||BANK_NUM);
195 END IF;
196
197 IF ((nvl(BANK_NUM,Xi_branch_num) <> Xi_branch_num))
198 THEN
199 IF l_DEBUG in ('Y', 'C') THEN
200 cep_standard.debug('COMPARE_BANK_AND_BRANCH_NUM: ' ||
201 'Bank number and branch number does not match'||
202 'CE_BANK_BRANCH_NUM_NOT_MATCHED');
203 END IF;
204 fnd_message.set_name('CE', 'CE_BANK_BRANCH_NUM_NOT_MATCHED');
205 fnd_msg_pub.add;
206 END IF;
207 END IF;
208 ELSIF (bank_count > 1)
209 THEN
210 IF l_DEBUG in ('Y', 'C') THEN
211 cep_standard.debug('COMPARE_BANK_AND_BRANCH_NUM: ' ||
212 'EXCEPTION: More than one bank match ');
213 END IF;
214 fnd_message.set_name('CE', 'CE_MANY_BANKS');
215 fnd_msg_pub.add;
216
217 ELSIF (bank_count = 0)
218 THEN
219 IF l_DEBUG in ('Y', 'C') THEN
220 cep_standard.debug('COMPARE_BANK_AND_BRANCH_NUM: ' || ' CE_BANK_DOES_NOT_EXISTS');
221 END IF;
222 fnd_message.set_name ('CE', 'CE_BANK_DOES_NOT_EXISTS');
223 fnd_msg_pub.add;
224
225 ELSE
226 IF l_DEBUG in ('Y', 'C') THEN
227 cep_standard.debug('COMPARE_BANK_AND_BRANCH_NUM: ' || ' passed_check');
228 END IF;
229 END IF;
230
231 IF l_DEBUG in ('Y', 'C') THEN
232 cep_standard.debug('<<CE_VALIDATE_BANKINFO.compare_bank_and_branch_num');
233 END IF;
234 END IF; /* end of check for BANK_ID_IS_NUM*/
235
236 EXCEPTION
237 WHEN OTHERS THEN
238 IF l_DEBUG in ('Y', 'C') THEN
239 cep_standard.debug('CE_VALIDATE_BANKINFO.COMPARE_BANK_AND_BRANCH_NUM ' );
240 END IF;
241
242 FND_MESSAGE.set_name('CE', 'CE_UNHANDLED_EXCEPTION');
243 fnd_message.set_token('PROCEDURE', 'CE_VALIDATE_BANKINFO.compare_bank_and_branch_num');
244 fnd_msg_pub.add;
245 RAISE;
246
247 END COMPARE_BANK_AND_BRANCH_NUM;
248
249 /* --------------------------------------------------------------------
250 | PRIVATE PROCEDURE |
251 | COMPARE_ACCOUNT_NUM_AND_CD |
252 | |
253 | CALLED BY |
254 | CE_VALIDATE_CD_* |
255 | |
256 | DESCRIPTION |
257 | Verify that the check digit entered on the account number |
258 | and check digit fields are the same |
259 --------------------------------------------------------------------- */
260
261 FUNCTION COMPARE_ACCOUNT_NUM_AND_CD(Xi_account_num IN VARCHAR2,
262 Xi_CD IN NUMBER,
263 Xi_CD_length in number,
264 Xi_CD_pos_from_right IN Number default 0) RETURN BOOLEAN AS
265
266 cd_position number;
267 acct_cd number;
268
269 /**************************/
270
271 procedure pass_check is
272 begin
273 IF l_DEBUG in ('Y', 'C') THEN
274 cep_standard.debug('COMPARE_ACCOUNT_NUM_AND_CD: ' || 'CD match');
275 END IF;
276 end pass_check;
277
278 /**************************/
279
280
281 BEGIN
282 IF l_DEBUG in ('Y', 'C') THEN
283 cep_standard.debug('>>CE_VALIDATE_BANKINFO.COMPARE_ACCOUNT_NUM_AND_CD');
284 END IF;
285
286 cd_position := (length(Xi_account_num) - Xi_CD_pos_from_right);
287 acct_cd := substr(Xi_account_num, cd_position, Xi_CD_length);
288
289 IF l_DEBUG in ('Y', 'C') THEN
290 cep_standard.debug('COMPARE_ACCOUNT_NUM_AND_CD: ' || 'cd_position : '||cd_position ||
291 'acct_cd : '||acct_cd || 'Xi_CD : '||Xi_CD );
292 END IF;
293
294
295 IF ( acct_cd <> Xi_CD) then
296 IF l_DEBUG in ('Y', 'C') THEN
297 cep_standard.debug('COMPARE_ACCOUNT_NUM_AND_CD: ' || 'CD does not match'||
298 'CE_ACCT_NUM_AND_CD_NOT_MATCHED');
299 END IF;
300 fnd_message.set_name('CE', 'CE_ACCT_NUM_AND_CD_NOT_MATCHED');
301 fnd_msg_pub.add;
302 return false;
303 ELSE
304 pass_check;
305 return true;
306 END IF;
307
308
309 IF l_DEBUG in ('Y', 'C') THEN
310 cep_standard.debug('<<CE_VALIDATE_BANKINFO.COMPARE_ACCOUNT_NUM_AND_CD');
311 END IF;
312
313 END COMPARE_ACCOUNT_NUM_AND_CD;
314
315 /* --------------------------------------------------------------------
316 | PRIVATE FUNCTION |
317 | CE_VAL_UNIQUE_TAX_PAYER_ID |
318 | |
319 | CALLED BY |
320 | CE_VALIDATE_BANK |
321 | |
322 | DESCRIPTION |
323 | Unique Tax Payer ID VALIDATIONS |
324 | |
325 --------------------------------------------------------------------- */
326
327 FUNCTION CE_VAL_UNIQUE_TAX_PAYER_ID (
328 p_country_code IN VARCHAR2,
329 p_taxpayer_id IN VARCHAR2
330 ) RETURN VARCHAR2 IS
331
332 CURSOR CHECK_UNIQUE_TAXID_BK IS -- Banks
333 SELECT JGZZ_FISCAL_CODE
334 FROM HZ_PARTIES
335 WHERE JGZZ_FISCAL_CODE = p_taxpayer_id
336 AND country = p_country_code;
337
338 l_taxid VARCHAR2(30);
339
340 BEGIN
341 IF l_DEBUG in ('Y', 'C') THEN
342 cep_standard.debug('>>CE_VALIDATE_BANKINFO.CE_VAL_UNIQUE_TAX_PAYER_ID');
343 END IF;
344
345 OPEN CHECK_UNIQUE_TAXID_BK;
346 FETCH CHECK_UNIQUE_TAXID_BK INTO l_taxid;
347
348 IF (CHECK_UNIQUE_TAXID_BK%NOTFOUND)
349 THEN
350 CLOSE CHECK_UNIQUE_TAXID_BK;
351 RETURN('TRUE');
352 IF l_DEBUG in ('Y', 'C') THEN
353 cep_standard.debug('CE_VAL_UNIQUE_TAX_PAYER_ID true');
354 END IF;
355 ELSE
356 CLOSE CHECK_UNIQUE_TAXID_BK;
357 RETURN('FALSE');
358 IF l_DEBUG in ('Y', 'C') THEN
359 cep_standard.debug('CE_VAL_UNIQUE_TAX_PAYER_ID false');
360 END IF;
361 END IF;
362
363 IF l_DEBUG in ('Y', 'C') THEN
364 cep_standard.debug('<<CE_VALIDATE_BANKINFO.CE_VAL_UNIQUE_TAX_PAYER_ID');
365 END IF;
366 END CE_VAL_UNIQUE_TAX_PAYER_ID;
367
368 /* --------------------------------------------------------------------
369 | PRIVATE PROCEDURE |
370 | CE_CHECK_CROSS_MODULE_TAX_ID |
371 | |
372 | CALLED BY |
373 | CE_VALIDATE_BANK |
374 | |
375 | DESCRIPTION |
376 | Unique Tax Payer ID VALIDATIONS |
377 | |
378 --------------------------------------------------------------------- */
379 -- Check the cross validation
380 -- This procedure checks in AR, AP and HR to see if the TAX ID entered
381 -- for the Bank is used by a Customer, Supplier or a Company.
382 -- If it is used then the Customer name, Supplier name or the Company
383 -- name should match with the Bank name.
384 -- Depending upon the different combinations different error codes are
385 -- returned
386 -- The messages codes returned are:
387 -- bk1 Tax ID is used by a different Company
391 -- bk5 Bank exists as a Supplier with different Tax ID or Tax ID Type
388 -- bk2 Tax ID is used by a different Customer
389 -- bk3 Tax ID is used by a different Supplier
390 -- bk4 Bank exists as a Customer with different Tax ID or Tax ID Type
392 -- bk6 Bank exists as a Company with different Tax ID or Tax ID Type
393
394 PROCEDURE ce_check_cross_module_tax_id(p_country_code IN VARCHAR2,
395 p_entity_name IN VARCHAR2, --l_bank_name
396 p_taxpayer_id IN VARCHAR2,
397 p_return_ar OUT NOCOPY VARCHAR2,
398 p_return_ap OUT NOCOPY VARCHAR2,
399 p_return_hr OUT NOCOPY VARCHAR2,
400 p_return_bk OUT NOCOPY VARCHAR2) IS
401
402 CURSOR CHECK_CROSS_AP IS --Suppliers
403 SELECT AP.VENDOR_NAME, AP.NUM_1099
404 FROM PO_VENDORS AP
405 WHERE (AP.VENDOR_NAME=p_entity_name
406 OR AP.NUM_1099= p_taxpayer_id)
407 AND substrb(nvl(AP.GLOBAL_ATTRIBUTE_CATEGORY,'XX.XX'),4,2) = p_country_code;
408
409 /*
410 CURSOR CHECK_CROSS_AR IS --Customers
411 SELECT AR.CUSTOMER_NAME, AR.JGZZ_FISCAL_CODE
412 FROM RA_CUSTOMERS AR
413 WHERE (AR.CUSTOMER_NAME=p_entity_name
414 OR AR.JGZZ_FISCAL_CODE= p_taxpayer_id)
415 AND substrb(nvl(AR.GLOBAL_ATTRIBUTE_CATEGORY,'XX.XX'),4,2) = p_country_code;
416 */
417 -- replaced ra_customers with hz_parties
418
419 CURSOR CHECK_CROSS_AR IS --Customers
420 SELECT AR.PARTY_NAME, AR.JGZZ_FISCAL_CODE
421 FROM HZ_PARTIES AR
422 WHERE (AR.PARTY_NAME=p_entity_name
423 OR AR.JGZZ_FISCAL_CODE= p_taxpayer_id)
424 AND substrb(nvl(AR.GLOBAL_ATTRIBUTE_CATEGORY,'XX.XX'),4,2) = p_country_code;
425
426 CURSOR CHECK_CROSS_HR IS --Companies
427 SELECT HR.GLOBAL_ATTRIBUTE8, HR.GLOBAL_ATTRIBUTE11
428 FROM HR_LOCATIONS HR
429 WHERE (HR.GLOBAL_ATTRIBUTE8= p_entity_name
430 OR HR.GLOBAL_ATTRIBUTE11= p_taxpayer_id)
431 AND substrb(nvl(HR.GLOBAL_ATTRIBUTE_CATEGORY,'XX.XX'),4,2) = p_country_code
432 AND HR.LOCATION_USE = 'HR';
433
434 l_taxid VARCHAR2(30);
435 l_taxid_type VARCHAR2(150);
436 l_entity_name VARCHAR2(80);
437
438 BEGIN
439 IF l_DEBUG in ('Y', 'C') THEN
440 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_check_cross_module_tax_id'||
441 'ce_check_cross_module_tax_id - p_taxpayer_id ' || p_taxpayer_id );
442 END IF;
443
444 -- Checking cross module Banks/Customers
445
446 OPEN CHECK_CROSS_AR;
447 FETCH CHECK_CROSS_AR INTO l_entity_name, l_taxid;
448
449 IF l_DEBUG in ('Y', 'C') THEN
450 cep_standard.debug('ce_check_cross_module_tax_id - l_entity_name ' ||l_entity_name ||
451 'l_taxid ' ||l_taxid );
452 END IF;
453
454 IF CHECK_CROSS_AR%NOTFOUND THEN
455 p_return_ar:='SUCCESS';
456
457 ELSIF (l_taxid IS NULL AND l_entity_name=p_entity_name) THEN
458 p_return_ar:='SUCCESS';
459
460 ELSIF (l_taxid IS NOT NULL) THEN
461
462 IF (l_entity_name=p_entity_name AND l_taxid=p_taxpayer_id ) THEN
463 p_return_ar:='SUCCESS';
464
465 -- Check if Tax ID is used by a different Customer
466
467 ELSIF (l_entity_name<>p_entity_name AND l_taxid=p_taxpayer_id) THEN
468 p_return_ar:='bk2';
469
470 -- Check if Bank exists as Customer with different TAX ID or Tax ID
471 -- Type
472
473 ELSIF (l_entity_name=p_entity_name AND (l_taxid<>p_taxpayer_id )) THEN
474 p_return_ar:='bk4';
475
476 END IF;
477
478 END IF;
479
480 IF l_DEBUG in ('Y', 'C') THEN
481 cep_standard.debug('ce_check_cross_module_tax_id - p_return_ar ' || p_return_ar );
482 END IF;
483
484 CLOSE CHECK_CROSS_AR;
485
486 -- Checking cross module Banks/Companies
487
488 IF p_country_code='CO' THEN
489 l_taxid_type:='LEGAL_ENTITY';
490 END IF;
491
492 OPEN CHECK_CROSS_HR;
493 FETCH CHECK_CROSS_HR INTO l_entity_name, l_taxid;
494
495 IF CHECK_CROSS_HR%NOTFOUND THEN
496 p_return_hr:='SUCCESS';
497
498 ELSIF (l_taxid IS NULL AND l_entity_name=p_entity_name) THEN
499 p_return_hr:='SUCCESS';
500
501 ELSIF (l_taxid IS NOT NULL) THEN
502
503 IF (l_entity_name=p_entity_name AND l_taxid=p_taxpayer_id ) THEN
504 p_return_hr:='SUCCESS';
505
506 -- Check if Tax ID is used by a different Company
507
508 ELSIF (l_entity_name<>p_entity_name AND l_taxid=p_taxpayer_id) THEN
509 p_return_hr:='bk1';
510
511 -- Check if Bank exists as Company with different Tax ID
512
513 ELSIF (l_entity_name=p_entity_name AND (l_taxid<>p_taxpayer_id)) THEN
514 p_return_hr:='bk6';
515
516 END IF;
517
518 END IF;
519
520 CLOSE CHECK_CROSS_HR;
521
522 -- Checking cross module Banks/Suppliers
523
524 OPEN CHECK_CROSS_AP;
528 p_return_ap:='SUCCESS';
525 FETCH CHECK_CROSS_AP INTO l_entity_name, l_taxid;
526
527 IF CHECK_CROSS_AP%NOTFOUND THEN
529
530 ELSIF (l_taxid IS NULL AND l_entity_name=p_entity_name) THEN
531 p_return_ap:='SUCCESS';
532
533 ELSIF (l_taxid IS NOT NULL) THEN
534
535 IF (l_entity_name=p_entity_name AND l_taxid=p_taxpayer_id) THEN
536 p_return_ap:='SUCCESS';
537
538 -- Check if Tax ID is used by a different Supplier
539
540 ELSIF (l_entity_name<>p_entity_name AND l_taxid=p_taxpayer_id) THEN
541 p_return_ap:='bk3';
542
543 -- Check if Bank exists as Supplier with different Tax ID
544
545 ELSIF (l_entity_name=p_entity_name AND (l_taxid<>p_taxpayer_id )) THEN
546 p_return_ap:='bk5';
547
548 END IF;
549
550 END IF;
551
552 CLOSE CHECK_CROSS_AP;
553 p_return_bk:='NA';
554
555 IF l_DEBUG in ('Y', 'C') THEN
556 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_check_cross_module_tax_id');
557 END IF;
558
559 END ce_check_cross_module_tax_id;
560 /* --------------------------------------------------------------------
561 | PRIVATE FUNCTION |
562 | CE_TAX_ID_CHECK_ALGORITHM |
563 | |
564 | CALLED BY |
565 | CE_VALIDATE_BANK |
566 | |
567 | DESCRIPTION |
568 | Unique Tax Payer ID VALIDATIONS |
569 | |
570 --------------------------------------------------------------------- */
571 -- Taxpayer ID Validation
572
573 FUNCTION ce_tax_id_check_algorithm(p_taxpayer_id IN VARCHAR2,
574 p_country IN VARCHAR2,
575 p_tax_id_cd IN VARCHAR2
576 ) RETURN VARCHAR2 IS
577 l_var1 VARCHAR2(20);
578 l_val_digit VARCHAR2(2);
579 l_mod_value NUMBER(2);
580 BEGIN
581
582 IF l_DEBUG in ('Y', 'C') THEN
583 cep_standard.debug('>>CE_VALIDATE_BANKINFO.CE_TAX_ID_CHECK_ALGORITHM'|| '----------' ||
584 'CE_VALIDATE_BANKINFO.CE_TAX_ID_CHECK_ALGORITHM ' ||p_COUNTRY );
585 END IF;
586
587 -- Check the Taxpayer ID Valdiation digit for Colombia
588
589 IF p_country='CO' THEN
590
591 l_var1:=LPAD(p_taxpayer_id,15,'0');
592 l_mod_value:=(MOD(((TO_NUMBER(SUBSTR(l_var1,15,1))) *3 +
593 (TO_NUMBER(SUBSTR(l_var1,14,1))) *7 +
594 (TO_NUMBER(SUBSTR(l_var1,13,1))) *13 +
595 (TO_NUMBER(SUBSTR(l_var1,12,1))) *17 +
596 (TO_NUMBER(SUBSTR(l_var1,11,1))) *19 +
597 (TO_NUMBER(SUBSTR(l_var1,10,1))) *23 +
598 (TO_NUMBER(SUBSTR(l_var1,9,1))) *29 +
599 (TO_NUMBER(SUBSTR(l_var1,8,1))) *37 +
600 (TO_NUMBER(SUBSTR(l_var1,7,1))) *41 +
601 (TO_NUMBER(SUBSTR(l_var1,6,1))) *43 +
602 (TO_NUMBER(SUBSTR(l_var1,5,1))) *47 +
603 (TO_NUMBER(SUBSTR(l_var1,4,1))) *53 +
604 (TO_NUMBER(SUBSTR(l_var1,3,1))) *59 +
605 (TO_NUMBER(SUBSTR(l_var1,2,1))) *67 +
606 (TO_NUMBER(SUBSTR(l_var1,1,1))) *71),11));
607
608 IF l_DEBUG in ('Y', 'C') THEN
609 cep_standard.debug('CE_VALIDATE_BANKINFO.ce_tax_id_check_algorithm - l_mod_value: '|| l_mod_value);
610 END IF;
611
612 IF (l_mod_value IN (1,0)) THEN
613 l_val_digit:=l_mod_value;
614 ELSE
615 l_val_digit:=11-l_mod_value;
616 END IF;
617
618 IF l_DEBUG in ('Y', 'C') THEN
619 cep_standard.debug('CE_VALIDATE_BANKINFO.ce_tax_id_check_algorithm - l_val_digit: '|| l_val_digit|| '----------' ||
620 'CE_VALIDATE_BANKINFO.ce_tax_id_check_algorithm - p_tax_id_cd : '|| p_tax_id_cd );
621 END IF;
622
623 IF l_val_digit<> p_tax_id_cd THEN
624 IF l_DEBUG in ('Y', 'C') THEN
625 cep_standard.debug('failed ce_tax_id_check_algorithm' );
626 END IF;
627 RETURN('FALSE');
628
629 ELSE
630 IF l_DEBUG in ('Y', 'C') THEN
631 cep_standard.debug('passed ce_tax_id_check_algorithm' );
632 END IF;
633 RETURN('TRUE');
634 END IF;
635
636 END IF;
637 IF l_DEBUG in ('Y', 'C') THEN
638 cep_standard.debug('<<CE_VALIDATE_BANKINFO.CE_TAX_ID_CHECK_ALGORITHM');
639 END IF;
640
641 END ce_tax_id_check_algorithm;
642
643
644 /* --------------------------------------------------------------------
645 | PRIVATE PROCEDURE |
646 | CE_UNIQUE_BRANCH_NAME |
647 | |
651 | CALLED BY |
648 | DESCRIPTION |
649 | Unique bank_id, branch_name VALIDATIONS |
650 | |
652 |
653 --------------------------------------------------------------------- */
654 PROCEDURE CE_UNIQUE_BRANCH_NAME(Xi_COUNTRY_NAME IN varchar2,
655 Xi_BRANCH_NAME IN varchar2,
656 Xi_BANK_ID IN varchar2,
657 Xi_BRANCH_ID IN varchar2) AS
658
659 temp_name number;
660
661 BEGIN
662 IF l_DEBUG in ('Y', 'C') THEN
663 cep_standard.debug('>>CE_VALIDATE_BANKINFO.CE_UNIQUE_BRANCH_NAME');
664 END IF;
665
666 -- unique combination -> bank_id, branch_name, country --confirmed sql 6/25/02
667
668 select count(*) into temp_name
669 From HZ_PARTIES BankParty,
670 HZ_PARTIES BranchParty,
671 HZ_ORGANIZATION_PROFILES BankOrgProfile,
672 HZ_ORGANIZATION_PROFILES BranchOrgProfile,
673 HZ_RELATIONSHIPS BRRel,
674 HZ_CODE_ASSIGNMENTS BankCA,
675 HZ_CODE_ASSIGNMENTS BranchCA
676 Where BankParty.PARTY_TYPE = 'ORGANIZATION'
677 And BankParty.status = 'A'
678 And BankParty.PARTY_ID = BankOrgProfile.PARTY_ID
679 And SYSDATE between TRUNC(BankOrgProfile.effective_start_date)
680 and NVL(TRUNC(BankOrgProfile.effective_end_date), SYSDATE+1)
681 And BankCA.CLASS_CATEGORY = 'BANK_INSTITUTION_TYPE'
682 And BankCA.CLASS_CODE = 'BANK'
683 And BankCA.OWNER_TABLE_NAME = 'HZ_PARTIES'
684 And BankCA.OWNER_TABLE_ID = BankParty.PARTY_ID
685 And NVL(BankCA.STATUS, 'A') = 'A'
686 And BranchParty.PARTY_TYPE(+) = 'ORGANIZATION'
687 And BranchParty.status(+) = 'A'
688 And BranchOrgProfile.PARTY_ID(+) = BranchParty.PARTY_ID
689 And SYSDATE between TRUNC(BranchOrgProfile.effective_start_date(+))
690 and NVL(TRUNC(BranchOrgProfile.effective_end_date(+)), SYSDATE+1)
691 And BranchCA.CLASS_CATEGORY(+) = 'BANK_INSTITUTION_TYPE'
692 And BranchCA.CLASS_CODE(+) = 'BANK_BRANCH'
693 And BranchCA.OWNER_TABLE_NAME(+) = 'HZ_PARTIES'
694 And BranchCA.OWNER_TABLE_ID(+) = BranchParty.PARTY_ID
695 And NVL(BranchCA.STATUS(+), 'A') = 'A'
696 And BRRel.OBJECT_ID(+) = BankParty.PARTY_ID
697 And BranchParty.PARTY_ID(+) = BRRel.SUBJECT_ID
698 And BRRel.RELATIONSHIP_TYPE(+) = 'BANK_AND_BRANCH'
699 And BRRel.RELATIONSHIP_CODE(+) = 'BRANCH_OF'
700 And BRRel.STATUS(+) = 'A'
701 And BRRel.SUBJECT_TABLE_NAME(+) = 'HZ_PARTIES'
702 And BRRel.SUBJECT_TYPE(+) = 'ORGANIZATION'
703 And BRRel.OBJECT_TABLE_NAME(+) = 'HZ_PARTIES'
704 And BRRel.OBJECT_TYPE(+) = 'ORGANIZATION'
705 and BankParty.PARTY_ID = Xi_BANK_ID
706 and BranchParty.party_name = Xi_BRANCH_NAME
707 and BranchParty.country = Xi_COUNTRY_NAME
708 and BranchParty.PARTY_ID <> nvl(Xi_BRANCH_ID, -1);
709
710
711 IF l_DEBUG in ('Y', 'C') THEN
712 cep_standard.debug('CE_UNIQUE_BRANCH_NAME - temp_name: ' ||temp_name);
713 END IF;
714
715 IF (nvl(temp_name,0) > 0) then
716 IF l_DEBUG in ('Y', 'C') THEN
717 cep_standard.debug('CE_UNIQUE_BRANCH_NAME: ' || 'CE_BANK_BRANCH_NAME_EXISTS');
718 END IF;
719 fnd_message.set_name('CE', 'CE_BANK_BRANCH_NAME_EXISTS');
720 fnd_msg_pub.add;
721 END IF;
722
723 IF l_DEBUG in ('Y', 'C') THEN
724 cep_standard.debug('<<CE_VALIDATE_BANKINFO.CE_UNIQUE_BRANCH_NAME');
725 END IF;
726 END CE_UNIQUE_BRANCH_NAME;
727
728 /* --------------------------------------------------------------------
729 | PRIVATE PROCEDURE |
730 | CE_UNIQUE_BRANCH_NUMBER |
731 | |
732 | DESCRIPTION |
733 | Unique bank_id, branch_number VALIDATIONS |
734 |
735 | CALLED BY |
736 |
737 --------------------------------------------------------------------- */
738 PROCEDURE CE_UNIQUE_BRANCH_NUMBER(Xi_COUNTRY_NAME IN varchar2,
739 Xi_BRANCH_NUMBER IN varchar2,
740 Xi_BANK_ID IN varchar2,
741 Xi_BRANCH_ID IN varchar2) AS
742
743 temp_number number;
744 BEGIN
745 IF l_DEBUG in ('Y', 'C') THEN
746 cep_standard.debug('CE_UNIQUE_BRANCH_NAME: ' || '>>CE_VALIDATE_BANKINFO.CE_UNIQUE_BRANCH_NUMBER');
747 END IF;
748
749 -- unique combination -> bank_id, branch_number, country --confirmed sql 6/25/02
750
751 select count(*) into temp_number
752 From HZ_PARTIES BankParty,
753 HZ_PARTIES BranchParty,
754 HZ_ORGANIZATION_PROFILES BankOrgProfile,
755 HZ_ORGANIZATION_PROFILES BranchOrgProfile,
756 HZ_RELATIONSHIPS BRRel,
757 HZ_CODE_ASSIGNMENTS BankCA,
758 HZ_CODE_ASSIGNMENTS BranchCA
759 Where BankParty.PARTY_TYPE = 'ORGANIZATION'
760 And BankParty.status = 'A'
761 And BankParty.PARTY_ID = BankOrgProfile.PARTY_ID
762 And SYSDATE between TRUNC(BankOrgProfile.effective_start_date)
766 And BankCA.OWNER_TABLE_NAME = 'HZ_PARTIES'
763 and NVL(TRUNC(BankOrgProfile.effective_end_date), SYSDATE+1)
764 And BankCA.CLASS_CATEGORY = 'BANK_INSTITUTION_TYPE'
765 And BankCA.CLASS_CODE = 'BANK'
767 And BankCA.OWNER_TABLE_ID = BankParty.PARTY_ID
768 And NVL(BankCA.STATUS, 'A') = 'A'
769 And BranchParty.PARTY_TYPE(+) = 'ORGANIZATION'
770 And BranchParty.status(+) = 'A'
771 And BranchOrgProfile.PARTY_ID(+) = BranchParty.PARTY_ID
772 And SYSDATE between TRUNC(BranchOrgProfile.effective_start_date(+))
773 and NVL(TRUNC(BranchOrgProfile.effective_end_date(+)), SYSDATE+1)
774 And BranchCA.CLASS_CATEGORY(+) = 'BANK_INSTITUTION_TYPE'
775 And BranchCA.CLASS_CODE(+) = 'BANK_BRANCH'
776 And BranchCA.OWNER_TABLE_NAME(+) = 'HZ_PARTIES'
777 And BranchCA.OWNER_TABLE_ID(+) = BranchParty.PARTY_ID
778 And NVL(BranchCA.STATUS(+), 'A') = 'A'
779 And BRRel.OBJECT_ID(+) = BankParty.PARTY_ID
780 And BranchParty.PARTY_ID(+) = BRRel.SUBJECT_ID
781 And BRRel.RELATIONSHIP_TYPE(+) = 'BANK_AND_BRANCH'
782 And BRRel.RELATIONSHIP_CODE(+) = 'BRANCH_OF'
783 And BRRel.STATUS(+) = 'A'
784 And BRRel.SUBJECT_TABLE_NAME(+) = 'HZ_PARTIES'
785 And BRRel.SUBJECT_TYPE(+) = 'ORGANIZATION'
786 And BRRel.OBJECT_TABLE_NAME(+) = 'HZ_PARTIES'
787 And BRRel.OBJECT_TYPE(+) = 'ORGANIZATION'
788 and BankParty.PARTY_ID = Xi_BANK_ID
789 and BranchOrgProfile.BANK_OR_BRANCH_NUMBER = Xi_BRANCH_NUMBER
790 and BranchParty.country = Xi_COUNTRY_NAME
791 and BranchParty.PARTY_ID <> nvl(Xi_BRANCH_ID, -1);
792
793
794 IF l_DEBUG in ('Y', 'C') THEN
795 cep_standard.debug('CE_UNIQUE_BRANCH_NAME: ' || 'CE_UNIQUE_BRANCH_NUMBER - temp_number: ' ||temp_number);
796 END IF;
797
798 IF (nvl(temp_number,0) > 0) then
799 IF l_DEBUG in ('Y', 'C') THEN
800 cep_standard.debug('CE_UNIQUE_BRANCH_NAME: ' || 'CE_BANK_BRANCH_NUMBER_EXISTS');
801 END IF;
802 fnd_message.set_name('CE', 'CE_BANK_BRANCH_NUMBER_EXISTS');
803 fnd_msg_pub.add;
804 END IF;
805
806
807 IF l_DEBUG in ('Y', 'C') THEN
808 cep_standard.debug('CE_UNIQUE_BRANCH_NAME: ' || '<<CE_VALIDATE_BANKINFO.CE_UNIQUE_BRANCH_NUMBER');
809 END IF;
810 END CE_UNIQUE_BRANCH_NUMBER;
811
812 /* --------------------------------------------------------------------
813 | PRIVATE PROCEDURE |
814 | CE_UNIQUE_BRANCH_NAME_ALT |
815 | |
816 | DESCRIPTION |
817 | Unique bank_id, branch_number_alt VALIDATIONS |
818 | |
819 | CALLED BY |
820 | Japan
821 |
822 --------------------------------------------------------------------- */
823 PROCEDURE CE_UNIQUE_BRANCH_NAME_ALT(Xi_COUNTRY_NAME IN varchar2,
824 Xi_BRANCH_NAME_ALT IN varchar2,
825 Xi_BANK_ID IN varchar2,
826 Xi_BRANCH_ID IN varchar2) AS
827
828 temp_name_alt number;
829 BEGIN
830 IF l_DEBUG in ('Y', 'C') THEN
831 cep_standard.debug('>>CE_VALIDATE_BANKINFO.CE_UNIQUE_BRANCH_NAME_ALT');
832 END IF;
833
834 -- unique combination -> bank_id, branch_name_alt, country bug 2363959 --confirmed sql 6/25/02
835
836 select count(*) into temp_name_alt
837 From HZ_PARTIES BankParty,
838 HZ_PARTIES BranchParty,
839 HZ_ORGANIZATION_PROFILES BankOrgProfile,
840 HZ_ORGANIZATION_PROFILES BranchOrgProfile,
841 HZ_RELATIONSHIPS BRRel,
842 HZ_CODE_ASSIGNMENTS BankCA,
843 HZ_CODE_ASSIGNMENTS BranchCA
844 Where BankParty.PARTY_TYPE = 'ORGANIZATION'
845 And BankParty.status = 'A'
846 And BankParty.PARTY_ID = BankOrgProfile.PARTY_ID
847 And SYSDATE between TRUNC(BankOrgProfile.effective_start_date)
848 and NVL(TRUNC(BankOrgProfile.effective_end_date), SYSDATE+1)
849 And BankCA.CLASS_CATEGORY = 'BANK_INSTITUTION_TYPE'
850 And BankCA.CLASS_CODE = 'BANK'
851 And BankCA.OWNER_TABLE_NAME = 'HZ_PARTIES'
852 And BankCA.OWNER_TABLE_ID = BankParty.PARTY_ID
853 And NVL(BankCA.STATUS, 'A') = 'A'
854 And BranchParty.PARTY_TYPE(+) = 'ORGANIZATION'
855 And BranchParty.status(+) = 'A'
856 And BranchOrgProfile.PARTY_ID(+) = BranchParty.PARTY_ID
857 And SYSDATE between TRUNC(BranchOrgProfile.effective_start_date(+))
858 and NVL(TRUNC(BranchOrgProfile.effective_end_date(+)), SYSDATE+1)
859 And BranchCA.CLASS_CATEGORY(+) = 'BANK_INSTITUTION_TYPE'
860 And BranchCA.CLASS_CODE(+) = 'BANK_BRANCH'
861 And BranchCA.OWNER_TABLE_NAME(+) = 'HZ_PARTIES'
862 And BranchCA.OWNER_TABLE_ID(+) = BranchParty.PARTY_ID
863 And NVL(BranchCA.STATUS(+), 'A') = 'A'
864 And BRRel.OBJECT_ID(+) = BankParty.PARTY_ID
865 And BranchParty.PARTY_ID(+) = BRRel.SUBJECT_ID
866 And BRRel.RELATIONSHIP_TYPE(+) = 'BANK_AND_BRANCH'
867 And BRRel.RELATIONSHIP_CODE(+) = 'BRANCH_OF'
868 And BRRel.STATUS(+) = 'A'
869 And BRRel.SUBJECT_TABLE_NAME(+) = 'HZ_PARTIES'
870 And BRRel.SUBJECT_TYPE(+) = 'ORGANIZATION'
871 And BRRel.OBJECT_TABLE_NAME(+) = 'HZ_PARTIES'
872 And BRRel.OBJECT_TYPE(+) = 'ORGANIZATION'
876 and BranchParty.PARTY_ID <> nvl(Xi_BRANCH_ID, -1);
873 and BankParty.PARTY_ID = Xi_BANK_ID
874 and BranchParty.ORGANIZATION_NAME_PHONETIC = Xi_BRANCH_NAME_ALT
875 and BranchParty.country = Xi_COUNTRY_NAME
877
878 IF l_DEBUG in ('Y', 'C') THEN
879 cep_standard.debug('CE_UNIQUE_BRANCH_NAME_ALT - temp_name_alt: ' ||temp_name_alt);
880 END IF;
881
882 IF (nvl(temp_name_alt,0) > 0) then
883 IF l_DEBUG in ('Y', 'C') THEN
884 cep_standard.debug('CE_UNIQUE_BRANCH_NAME: ' || 'CE_BANK_BRANCH_NAME_ALT_EXISTS');
885 END IF;
886 fnd_message.set_name('CE', 'CE_BANK_BRANCH_NAME_ALT_EXISTS');
887 fnd_msg_pub.add;
888 END IF;
889
890
891 IF l_DEBUG in ('Y', 'C') THEN
892 cep_standard.debug('<<CE_VALIDATE_BANKINFO.CE_UNIQUE_BRANCH_NAME_ALT');
893 END IF;
894 END CE_UNIQUE_BRANCH_NAME_ALT;
895
896
897 /* --------------------------------------------------------------------
898 | PRIVATE PROCEDURE |
899 | CE_UNIQUE_ACCOUNT_NAME |
900 | |
901 | |
902 | DESCRIPTION |
903 | Unique bank_branch_id, bank account name VALIDATIONS |
904 | |
905 | CALLED BY |
906 | CE_VALIDATE_UNIQUE_ACCOUNT_* |
907 | |
908 | CALLS |
909 |
910 --------------------------------------------------------------------- */
911 PROCEDURE CE_UNIQUE_ACCOUNT_NAME(Xi_ACCOUNT_NAME IN varchar2,
912 Xi_BRANCH_ID IN varchar2,
913 Xi_ACCOUNT_ID IN varchar2) AS
914
915 temp_name number;
916
917
918 BEGIN
919 IF l_DEBUG in ('Y', 'C') THEN
920 cep_standard.debug('>>CE_VALIDATE_BANKINFO.CE_UNIQUE_ACCOUNT_NAME'||
921 'Xi_ACCOUNT_NAME ' ||Xi_ACCOUNT_NAME ||
922 ', Xi_BRANCH_ID ' ||Xi_BRANCH_ID );
923 END IF;
924
925 -- unique combination -> bank_branch_id, bank account name --confirmed sql
926
927 select count(*) into temp_name
928 from ce_bank_accounts ba
929 where ba.bank_account_name = Xi_ACCOUNT_NAME
930 and ba.bank_branch_id = Xi_BRANCH_ID
931 and ba.bank_account_id <> nvl(Xi_ACCOUNT_ID,-1);
932
933 /*IF (Xi_ACCOUNT_ID is not null) then
934 select count(*) into temp_name
935 from ce_bank_accounts ba
936 where ba.bank_account_name = Xi_ACCOUNT_NAME
937 and ba.bank_branch_id = Xi_BRANCH_ID
938 and ba.bank_account_id <> Xi_ACCOUNT_ID;
939 ELSE
940 select count(*) into temp_name
941 from ce_bank_accounts ba
942 where ba.bank_account_name = Xi_ACCOUNT_NAME
943 and ba.bank_branch_id = Xi_BRANCH_ID;
944
945 END IF;*/
946
947 IF l_DEBUG in ('Y', 'C') THEN
948 cep_standard.debug('CE_UNIQUE_ACCOUNT_NAME: ' || 'temp_name: '||temp_name);
949 END IF;
950
951 IF (nvl(temp_name,0) > 0) then
952 fnd_message.set_name('CE', 'CE_BANK_ACCOUNT_NAME_EXISTS');
953 fnd_msg_pub.add;
954 IF l_DEBUG in ('Y', 'C') THEN
955 cep_standard.debug('CE_UNIQUE_ACCOUNT_NAME: ' || 'CE_BANK_ACCOUNT_NAME_EXISTS');
956 END IF;
957 END IF;
958
959
960 IF l_DEBUG in ('Y', 'C') THEN
961 cep_standard.debug('<<CE_VALIDATE_BANKINFO.CE_UNIQUE_ACCOUNT_NAME');
962 END IF;
963
964 END CE_UNIQUE_ACCOUNT_NAME;
965
966
967 /* --------------------------------------------------------------------
968 | PRIVATE PROCEDURE |
969 | CE_VALIDATE_CD |
970 | |
971 | CALLED BY |
972 | OA - BANK ACCOUNT INFORMATION PAGE |
973 | |
974 | CALLS |
975 | CE_VALIDATE_CD_* for each country |
976 --------------------------------------------------------------------- */
977
978
979 PROCEDURE CE_VALIDATE_CD(X_COUNTRY_NAME IN varchar2,
980 X_CD IN varchar2,
981 X_BANK_NUMBER IN varchar2,
982 X_BRANCH_NUMBER IN varchar2,
983 X_ACCOUNT_NUMBER IN varchar2,
984 p_init_msg_list IN VARCHAR2,
985 x_msg_count OUT NOCOPY NUMBER,
986 x_msg_data OUT NOCOPY VARCHAR2,
987 x_return_status IN OUT NOCOPY VARCHAR2,
988 X_ACCOUNT_CLASSIFICATION IN VARCHAR2 DEFAULT NULL) AS
989 -- X_VALUE_OUT OUT NOCOPY varchar2) AS
990
991 COUNTRY_NAME VARCHAR2(2);
992
993 X_PASS_MAND_CHECK VARCHAR2(1);
994
995
996 BEGIN
997 l_DEBUG := NVL(FND_PROFILE.value('CE_DEBUG'), 'N');
1001 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_cd');
998 --l_DEBUG := 'Y';
999
1000 IF l_DEBUG in ('Y', 'C') THEN
1002 END IF;
1003 -- initialize API return status to success.
1004 x_return_status := fnd_api.g_ret_sts_success;
1005
1006 COUNTRY_NAME := X_COUNTRY_NAME;
1007
1008 --X_VALUE_OUT := X_CD;
1009
1010 IF l_DEBUG in ('Y', 'C') THEN
1011 cep_standard.debug('CE_VALIDATE_BANKINFO.ce_validate_cd - COUNTRY_NAME: '|| COUNTRY_NAME||
1012 --'CE_VALIDATE_BANKINFO.ce_validate_cd - X_VALUE_OUT: '|| X_VALUE_OUT|| '----------' ||
1013 'CE_VALIDATE_BANKINFO.ce_validate_cd - P_INIT_MSG_LIST: '|| P_INIT_MSG_LIST);
1014 END IF;
1015
1016 -- Initialize message list if p_init_msg_list is set to TRUE.
1017 IF FND_API.to_Boolean(p_init_msg_list) THEN
1018 FND_MSG_PUB.initialize;
1019 END IF;
1020
1021 /* We must validate the Check Digit
1022 Bug 6632733 Making check digit validation optional so assigning P instead of earlier F */
1023
1024 IF X_CD is null
1025 AND (X_BANK_NUMBER is not null
1026 OR X_BRANCH_NUMBER is not null
1027 OR X_ACCOUNT_NUMBER is not null)
1028 then
1029
1030 X_PASS_MAND_CHECK := 'P';
1031
1032 ELSIF X_CD is not null then
1033 X_PASS_MAND_CHECK := 'P';
1034 ELSE
1035 X_PASS_MAND_CHECK := ' ';
1036
1037 END IF;
1038
1039 IF l_DEBUG in ('Y', 'C') THEN
1040 cep_standard.debug('CE_VALIDATE_BANKINFO.ce_validate_cd - X_PASS_MAND_CHECK: '|| X_PASS_MAND_CHECK);
1041 END IF;
1042
1043 If X_CD is Not Null then -- Bug 6632733 Perform all the validations only if check digit is entered
1044
1045 IF (COUNTRY_NAME = 'FR') then
1046
1047 CE_VALIDATE_BANKINFO.CE_VALIDATE_CD_FR(X_CD,
1048 X_PASS_MAND_CHECK,
1049 X_BANK_NUMBER,
1050 X_BRANCH_NUMBER,
1051 translate(X_ACCOUNT_NUMBER,
1052 'ABCDEFGHIJKLMNOPQRSTUVWXYZ ',
1053 '123456789123456789234567890') );
1054
1055 ELSIF (COUNTRY_NAME = 'ES') then
1056
1057 CE_VALIDATE_BANKINFO.CE_VALIDATE_CD_ES(X_CD,
1058 X_PASS_MAND_CHECK,
1059 X_BANK_NUMBER,
1060 X_BRANCH_NUMBER,
1061 translate(X_ACCOUNT_NUMBER,
1062 'ABCDEFGHIJKLMNOPQRSTUVWXYZ ',
1063 '123456789123456789234567890') );
1064
1065 ELSIF (COUNTRY_NAME = 'PT') then
1066
1067 CE_VALIDATE_BANKINFO.CE_VALIDATE_CD_PT(X_CD,
1068 X_PASS_MAND_CHECK,
1069 X_BANK_NUMBER,
1070 X_BRANCH_NUMBER,
1071 translate(X_ACCOUNT_NUMBER,
1072 'ABCDEFGHIJKLMNOPQRSTUVWXYZ ',
1073 '123456789123456789234567890') );
1077 ELSIF (COUNTRY_NAME = 'DE') then
1074
1075 -- added 5/14/02
1076
1078
1079 CE_VALIDATE_BANKINFO.CE_VALIDATE_CD_DE(X_CD,
1080 X_ACCOUNT_NUMBER);
1081
1082 ELSIF (COUNTRY_NAME = 'GR') then
1083
1084 CE_VALIDATE_BANKINFO.CE_VALIDATE_CD_GR(X_CD,
1085 X_PASS_MAND_CHECK,
1086 X_BANK_NUMBER,
1087 X_BRANCH_NUMBER,
1088 translate(X_ACCOUNT_NUMBER,
1089 'ABCDEFGHIJKLMNOPQRSTUVWXYZ ',
1090 '123456789123456789234567890') );
1091
1092 ELSIF (COUNTRY_NAME = 'IS') then
1093
1094 CE_VALIDATE_BANKINFO.CE_VALIDATE_CD_IS(X_CD,
1095 translate(X_ACCOUNT_NUMBER,
1096 'ABCDEFGHIJKLMNOPQRSTUVWXYZ ',
1097 '123456789123456789234567890') );
1098
1099 ELSIF (COUNTRY_NAME = 'IT') then
1100
1101 CE_VALIDATE_BANKINFO.CE_VALIDATE_CD_IT(X_CD,
1102 X_PASS_MAND_CHECK,
1103 X_BANK_NUMBER,
1104 X_BRANCH_NUMBER,
1105 -- Bug 6836343: Removed translate command as the substitution is done in
1106 -- the procedure itself. Passing X_ACCOUNT_NUMBER directly
1107 -- translate(X_ACCOUNT_NUMBER,
1108 -- 'ABCDEFGHIJKLMNOPQRSTUVWXYZ ',
1109 -- '123456789123456789234567890') );
1110 X_ACCOUNT_NUMBER);
1111
1112 ELSIF (COUNTRY_NAME = 'LU') then
1113
1114 CE_VALIDATE_BANKINFO.CE_VALIDATE_CD_LU(X_CD,
1115 X_BANK_NUMBER,
1116 X_BRANCH_NUMBER,
1117 X_ACCOUNT_NUMBER);
1118 -- X_VALUE_OUT);
1119
1120 ELSIF (COUNTRY_NAME = 'SE') then
1121
1122 CE_VALIDATE_BANKINFO.CE_VALIDATE_CD_SE(X_CD,
1123 X_ACCOUNT_NUMBER);
1124
1125
1126 END IF;
1127
1128 End If ; -- End Bug 6632733
1129
1130 FND_MSG_PUB.Count_And_Get(
1131 p_encoded => FND_API.G_FALSE,
1132 p_count => x_msg_count,
1133 p_data => x_msg_data);
1134
1135 IF x_msg_count > 0 THEN
1136 x_return_status := fnd_api.g_ret_sts_error;
1137 END IF;
1138
1139 IF l_DEBUG in ('Y', 'C') THEN
1140 cep_standard.debug('CE_VALIDATE_BANKINFO.ce_validate_cd - P_COUNT: '|| x_msg_count||
1141 --' P_DATA: '|| x_msg_data||
1142 --'X_VALUE_OUT: '|| X_VALUE_OUT||
1143 '<<CE_VALIDATE_BANKINFO.ce_validate_cd');
1144 END IF;
1145 EXCEPTION
1146 WHEN OTHERS THEN
1147 IF l_DEBUG in ('Y', 'C') THEN
1148 cep_standard.debug('CE_VALIDATE_BANKINFO.ce_validate_cd ' ||X_COUNTRY_NAME );
1149 END IF;
1150
1151 FND_MESSAGE.set_name('CE', 'CE_UNHANDLED_EXCEPTION');
1152 fnd_message.set_token('PROCEDURE', 'CE_VALIDATE_BANKINFO.cd_validate_cd');
1153 fnd_msg_pub.add;
1154 RAISE;
1155
1156
1157 END CE_VALIDATE_CD;
1158
1159
1160 /* --------------------------------------------------------------------
1161 | PRIVATE PROCEDURE |
1162 | CE_VALIDATE_BRANCH |
1163 | |
1164 | CALLED BY |
1165 | OA - BANK BRANCH INFORMATION PAGE |
1166 | |
1167 | CALLS |
1168 | CE_VALIDATE_BRANCH_* for each country |
1169 | CE_VALIDATE_UNIQUE_BRANCH_* for each country |
1170 --------------------------------------------------------------------- */
1171
1172
1173 PROCEDURE CE_VALIDATE_BRANCH(X_COUNTRY_NAME IN varchar2,
1174 X_BANK_NUMBER IN varchar2,
1175 X_BRANCH_NUMBER IN varchar2,
1176 X_BANK_NAME IN varchar2,
1177 X_BRANCH_NAME IN varchar2,
1178 X_BRANCH_NAME_ALT IN varchar2,
1179 X_BANK_ID IN NUMBER,
1180 X_BRANCH_ID IN NUMBER,
1181 p_init_msg_list IN VARCHAR2,
1182 x_msg_count OUT NOCOPY NUMBER,
1183 x_msg_data OUT NOCOPY VARCHAR2,
1184 X_VALUE_OUT OUT NOCOPY varchar2,
1185 x_return_status IN OUT NOCOPY VARCHAR2,
1186 X_ACCOUNT_CLASSIFICATION IN VARCHAR2 DEFAULT NULL)
1187 AS
1188
1189 COUNTRY_NAME VARCHAR2(2);
1190
1191 X_PASS_MAND_CHECK VARCHAR2(1);
1192
1193 BEGIN
1194 l_DEBUG := NVL(FND_PROFILE.value('CE_DEBUG'), 'N');
1195 --l_DEBUG := 'Y';
1196
1197 IF l_DEBUG in ('Y', 'C') THEN
1198 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_branch');
1199 END IF;
1200
1201 -- initialize API return status to success.
1202 x_return_status := fnd_api.g_ret_sts_success;
1203
1204 COUNTRY_NAME := X_COUNTRY_NAME;
1205
1206 X_VALUE_OUT := X_BRANCH_NUMBER;
1207
1208 IF l_DEBUG in ('Y', 'C') THEN
1209 cep_standard.debug('CE_VALIDATE_BANKINFO.ce_validate_branch - COUNTRY_NAME: '|| COUNTRY_NAME||
1210 ', X_VALUE_OUT: '|| X_VALUE_OUT);
1211 END IF;
1212
1213 -- Initialize message list if p_init_msg_list is set to TRUE.
1214 IF FND_API.to_Boolean(p_init_msg_list) THEN
1215 FND_MSG_PUB.initialize;
1216 END IF;
1217
1218 IF l_DEBUG in ('Y', 'C') THEN
1219 cep_standard.debug('CE_VALIDATE_BANKINFO.ce_validate_branch - P_INIT_MSG_LIST: '|| P_INIT_MSG_LIST);
1220 END IF;
1221
1222 /* We must validate the Bank Branch Number */
1223
1224 IF X_BRANCH_NUMBER is null then
1225 X_PASS_MAND_CHECK := 'F';
1226 ELSE
1227 X_PASS_MAND_CHECK := 'P';
1228 END IF;
1229
1230 IF l_DEBUG in ('Y', 'C') THEN
1231 cep_standard.debug('CE_VALIDATE_BANKINFO.ce_validate_branch - X_PASS_MAND_CHECK: '|| X_PASS_MAND_CHECK);
1232 END IF;
1233
1234 IF (COUNTRY_NAME = 'AT')
1235 THEN
1236 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_AT(X_BRANCH_NUMBER,
1237 X_PASS_MAND_CHECK,
1238 X_VALUE_OUT);
1239
1240 ELSIF (COUNTRY_NAME = 'ES')
1241 then
1242 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_ES(X_BRANCH_NUMBER,
1243 X_PASS_MAND_CHECK,
1244 X_VALUE_OUT);
1245
1246 ELSIF (COUNTRY_NAME = 'FR')
1247 then
1248 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_FR(X_BRANCH_NUMBER,
1249 X_PASS_MAND_CHECK,
1250 X_VALUE_OUT);
1251
1252 ELSIF (COUNTRY_NAME = 'PT')
1253 then
1254 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_PT(X_BRANCH_NUMBER,
1255 X_PASS_MAND_CHECK);
1256
1257 ELSIF (COUNTRY_NAME = 'BR')
1258 then
1259 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_BR(X_BRANCH_NUMBER,
1260 X_PASS_MAND_CHECK,
1261 X_VALUE_OUT);
1262
1263 -- added 5/14/02
1264
1265 ELSIF (COUNTRY_NAME = 'DE')
1266 then
1267 IF l_DEBUG in ('Y', 'C') THEN
1268 cep_standard.debug('call CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_DE' );
1269 END IF;
1270 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_DE(X_BRANCH_NUMBER,
1271 X_BANK_ID);
1272
1273 ELSIF (COUNTRY_NAME = 'GR')
1274 then
1275 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_GR(X_BRANCH_NUMBER);
1276
1277 ELSIF (COUNTRY_NAME = 'IS')
1278 then
1279 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_IS(X_BRANCH_NUMBER,
1280 X_BANK_ID,
1281 X_VALUE_OUT);
1282
1283 ELSIF (COUNTRY_NAME = 'IE')
1284 then
1285 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_IE(X_BRANCH_NUMBER,
1286 X_BANK_ID);
1287
1288 ELSIF (COUNTRY_NAME = 'IT')
1289 then
1290 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_IT(X_BRANCH_NUMBER,
1291 X_PASS_MAND_CHECK);
1292
1293 ELSIF (COUNTRY_NAME = 'LU')
1294 then
1295 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_LU(X_BRANCH_NUMBER,
1296 X_BANK_ID);
1297
1298 ELSIF (COUNTRY_NAME = 'PL')
1299 then
1300 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_PL(X_BRANCH_NUMBER,
1301 X_BANK_ID);
1302
1303 ELSIF (COUNTRY_NAME = 'SE')
1304 then
1305 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_SE(X_BRANCH_NUMBER,
1306 X_BANK_ID);
1307
1308 ELSIF (COUNTRY_NAME = 'CH')
1309 then
1310 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_CH(X_BRANCH_NUMBER,
1311 X_BANK_ID);
1312
1313 ELSIF (COUNTRY_NAME = 'GB')
1317
1314 then
1315 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_GB(X_BRANCH_NUMBER,
1316 X_BANK_ID);
1318 ELSIF (COUNTRY_NAME = 'US')
1319 then
1320 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_US(X_BRANCH_NUMBER,
1321 X_PASS_MAND_CHECK,
1322 X_VALUE_OUT);
1323
1324 -- added 10/19/04
1325
1326 ELSIF (COUNTRY_NAME = 'AU')
1327 then
1328 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_AU(X_BRANCH_NUMBER,
1329 X_BANK_ID,
1330 X_PASS_MAND_CHECK);
1331 ELSIF (COUNTRY_NAME = 'IL')
1332 then
1333 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_IL(X_BRANCH_NUMBER,
1334 X_PASS_MAND_CHECK);
1335 ELSIF (COUNTRY_NAME = 'NZ')
1336 then
1337 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_NZ(X_BRANCH_NUMBER,
1338 X_PASS_MAND_CHECK);
1339
1340 ELSIF (COUNTRY_NAME = 'JP')
1341 then
1342 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_JP(X_BRANCH_NUMBER,
1343 X_BRANCH_NAME_ALT,
1344 X_PASS_MAND_CHECK);
1345
1346 END IF;
1347
1348
1349 /** UNIQUE VALIDATION CHECK for branch **/
1350
1351 IF l_DEBUG in ('Y', 'C') THEN
1352 cep_standard.debug('UNIQUE VALIDATION CHECK for branch' );
1353 END IF;
1354
1355 -- bug 4730717,
1356 -- 11/30/05 unique validation for US and Germany bank branches should not be removed
1357 /*
1358 IF (COUNTRY_NAME = 'DE') THEN
1359 IF l_DEBUG in ('Y', 'C') THEN
1360 cep_standard.debug('call CE_VALIDATE_BANKINFO.CE_VALIDATE_UNIQUE_BRANCH_DE' );
1361 END IF;
1362
1363 CE_VALIDATE_BANKINFO.CE_VALIDATE_UNIQUE_BRANCH_DE(X_BRANCH_NUMBER,
1364 X_BRANCH_NAME,
1365 X_BANK_ID,
1366 X_BRANCH_ID);
1367
1368 ELSIF (COUNTRY_NAME = 'US') THEN
1369 IF l_DEBUG in ('Y', 'C') THEN
1370 cep_standard.debug('call CE_VALIDATE_BANKINFO.CE_VALIDATE_UNIQUE_BRANCH_US' );
1371 END IF;
1372
1373 CE_VALIDATE_BANKINFO.CE_VALIDATE_UNIQUE_BRANCH_US(X_BRANCH_NUMBER,
1374 X_BRANCH_NAME,
1375 X_BANK_ID,
1376 X_BRANCH_ID);
1377 */
1378 IF (COUNTRY_NAME = 'JP') THEN
1379 IF l_DEBUG in ('Y', 'C') THEN
1380 cep_standard.debug('call CE_VALIDATE_BANKINFO.CE_VALIDATE_UNIQUE_BRANCH_JP' );
1381 END IF;
1382
1383 CE_VALIDATE_BANKINFO.CE_VALIDATE_UNIQUE_BRANCH_JP(X_COUNTRY_NAME,
1384 X_BRANCH_NUMBER,
1385 X_BRANCH_NAME,
1386 X_BRANCH_NAME_ALT,
1387 X_BANK_ID,
1388 X_BRANCH_ID);
1389 ELSE
1390 IF l_DEBUG in ('Y', 'C') THEN
1391 cep_standard.debug('call CE_VALIDATE_BANKINFO.CE_VALIDATE_UNIQUE_BRANCH' );
1392 END IF;
1393 CE_VALIDATE_BANKINFO.CE_VALIDATE_UNIQUE_BRANCH(X_COUNTRY_NAME,
1394 X_BRANCH_NUMBER,
1395 X_BRANCH_NAME,
1396 X_BANK_ID,
1397 X_BRANCH_ID);
1398
1399
1400 END IF;
1401 /** end country unique check for branch **/
1402
1403 IF l_DEBUG in ('Y', 'C') THEN
1404 cep_standard.debug('UNIQUE VALIDATION CHECK for branch end' );
1405 END IF;
1406
1407 FND_MSG_PUB.Count_And_Get(
1408 p_encoded => FND_API.G_FALSE,
1409 p_count => x_msg_count,
1410 p_data => x_msg_data);
1411
1412 IF x_msg_count > 0 THEN
1413 x_return_status := fnd_api.g_ret_sts_error;
1414 END IF;
1415
1416 IF l_DEBUG in ('Y', 'C') THEN
1417 cep_standard.debug('CE_VALIDATE_BANKINFO.ce_validate_branch - P_COUNT: '|| x_msg_count||
1418 --'P_DATA: '|| x_msg_data||
1419 ' X_VALUE_OUT: '|| X_VALUE_OUT||
1420 '<<CE_VALIDATE_BANKINFO.ce_validate_branch');
1421 END IF;
1422 EXCEPTION
1423 WHEN OTHERS THEN
1424 IF l_DEBUG in ('Y', 'C') THEN
1425 cep_standard.debug('CE_VALIDATE_BANKINFO.ce_validate_branch ' ||X_COUNTRY_NAME );
1426 END IF;
1427
1428 FND_MESSAGE.set_name('CE', 'CE_UNHANDLED_EXCEPTION');
1429 fnd_message.set_token('PROCEDURE', 'CE_VALIDATE_BANKINFO.cd_validate_branch');
1430 fnd_msg_pub.add;
1431 RAISE;
1432
1433 END CE_VALIDATE_BRANCH;
1434
1435
1436 /* -------------------------------------------------------------------
1437 | PUBLIC PROCEDURE |
1438 | UPD_BRANCH_UNIQUE |
1439 | Description: Branch uniqueness validation |
1440 | Usage: Called in update flow due to the Upgrade changes |
1441 | Calls: CE_VALIDATE_UNIQUE_BRANCH_* |
1442 --------------------------------------------------------------------- */
1443 PROCEDURE UPD_BRANCH_UNIQUE
1444 (X_COUNTRY_NAME IN varchar2,
1445 X_BANK_NUMBER IN varchar2,
1449 X_BRANCH_NAME_ALT IN varchar2,
1446 X_BRANCH_NUMBER IN varchar2,
1447 X_BANK_NAME IN varchar2,
1448 X_BRANCH_NAME IN varchar2,
1450 X_BANK_ID IN NUMBER,
1451 X_BRANCH_ID IN NUMBER,
1452 p_init_msg_list IN VARCHAR2,
1453 x_msg_count OUT NOCOPY NUMBER,
1454 x_msg_data OUT NOCOPY VARCHAR2,
1455 X_VALUE_OUT OUT NOCOPY varchar2,
1456 x_return_status IN OUT NOCOPY VARCHAR2,
1457 X_ACCOUNT_CLASSIFICATION IN VARCHAR2 DEFAULT NULL) AS
1458
1459 COUNTRY_NAME VARCHAR2(2);
1460
1461 X_PASS_MAND_CHECK VARCHAR2(1);
1462
1463 BEGIN
1464 l_DEBUG := NVL(FND_PROFILE.value('CE_DEBUG'), 'N');
1465 --l_DEBUG := 'Y';
1466
1467 IF l_DEBUG in ('Y', 'C') THEN
1468 cep_standard.debug('>>CE_VALIDATE_BANKINFO.upd_branch_unique');
1469 END IF;
1470
1471 -- initialize API return status to success.
1472 x_return_status := fnd_api.g_ret_sts_success;
1473
1474 COUNTRY_NAME := X_COUNTRY_NAME;
1475
1476 X_VALUE_OUT := X_BRANCH_NUMBER;
1477
1478 IF l_DEBUG in ('Y', 'C') THEN
1479 cep_standard.debug('CE_VALIDATE_BANKINFO.upd_branch_unique - COUNTRY_NAME: '|| COUNTRY_NAME||
1480 ', X_VALUE_OUT: '|| X_VALUE_OUT);
1481 END IF;
1482
1483 -- Initialize message list if p_init_msg_list is set to TRUE.
1484 IF FND_API.to_Boolean(p_init_msg_list) THEN
1485 FND_MSG_PUB.initialize;
1486 END IF;
1487
1488 /** UNIQUE VALIDATION CHECK for branch **/
1489
1490 IF l_DEBUG in ('Y', 'C') THEN
1491 cep_standard.debug('UNIQUE VALIDATION CHECK for branch' );
1492 END IF;
1493
1494 -- bug 4730717,
1495 -- 11/30/05 unique validation for US and Germany bank branches should not be removed
1496 /*
1497 IF (COUNTRY_NAME = 'DE') THEN
1498 IF l_DEBUG in ('Y', 'C') THEN
1499 cep_standard.debug('call CE_VALIDATE_BANKINFO.CE_VALIDATE_UNIQUE_BRANCH_DE' );
1500 END IF;
1501
1502 CE_VALIDATE_BANKINFO.CE_VALIDATE_UNIQUE_BRANCH_DE(X_BRANCH_NUMBER,
1503 X_BRANCH_NAME,
1504 X_BANK_ID,
1505 X_BRANCH_ID);
1506
1507 ELSIF (COUNTRY_NAME = 'US') THEN
1508 IF l_DEBUG in ('Y', 'C') THEN
1509 cep_standard.debug('call CE_VALIDATE_BANKINFO.CE_VALIDATE_UNIQUE_BRANCH_US' );
1510 END IF;
1511
1512 CE_VALIDATE_BANKINFO.CE_VALIDATE_UNIQUE_BRANCH_US(X_BRANCH_NUMBER,
1513 X_BRANCH_NAME,
1514 X_BANK_ID,
1515 X_BRANCH_ID);
1516
1517 */
1518 IF (COUNTRY_NAME = 'JP') THEN
1519 IF l_DEBUG in ('Y', 'C') THEN
1520 cep_standard.debug('call CE_VALIDATE_BANKINFO.CE_VALIDATE_UNIQUE_BRANCH_JP' );
1521 END IF;
1522
1523 CE_VALIDATE_BANKINFO.CE_VALIDATE_UNIQUE_BRANCH_JP(X_COUNTRY_NAME,
1524 X_BRANCH_NUMBER,
1525 X_BRANCH_NAME,
1526 X_BRANCH_NAME_ALT,
1527 X_BANK_ID,
1528 X_BRANCH_ID);
1529 ELSE
1530 IF l_DEBUG in ('Y', 'C') THEN
1531 cep_standard.debug('call CE_VALIDATE_BANKINFO.CE_VALIDATE_UNIQUE_BRANCH' );
1532 END IF;
1533 CE_VALIDATE_BANKINFO.CE_VALIDATE_UNIQUE_BRANCH(X_COUNTRY_NAME,
1534 X_BRANCH_NUMBER,
1535 X_BRANCH_NAME,
1536 X_BANK_ID,
1537 X_BRANCH_ID);
1538
1539
1540 END IF;
1541 /** end country unique check for branch **/
1542
1543
1544 FND_MSG_PUB.Count_And_Get(
1545 p_encoded => FND_API.G_FALSE,
1546 p_count => x_msg_count,
1547 p_data => x_msg_data);
1548
1549 IF x_msg_count > 0 THEN
1550 x_return_status := fnd_api.g_ret_sts_error;
1551 END IF;
1552
1553 IF l_DEBUG in ('Y', 'C') THEN
1554 cep_standard.debug('CE_VALIDATE_BANKINFO.upd_branch_unique - P_COUNT: '|| x_msg_count||
1555 --'P_DATA: '|| x_msg_data||
1556 ' X_VALUE_OUT: '|| X_VALUE_OUT||
1557 '<<CE_VALIDATE_BANKINFO.upd_branch_unique');
1558 END IF;
1559 EXCEPTION
1560 WHEN OTHERS THEN
1561 IF l_DEBUG in ('Y', 'C') THEN
1562 cep_standard.debug('CE_VALIDATE_BANKINFO.upd_branch_unique ' ||X_COUNTRY_NAME );
1563 END IF;
1564
1565 FND_MESSAGE.set_name('CE', 'CE_UNHANDLED_EXCEPTION');
1566 fnd_message.set_token('PROCEDURE', 'CE_VALIDATE_BANKINFO.upd_branch_unique');
1567 fnd_msg_pub.add;
1568 RAISE;
1569 END UPD_BRANCH_UNIQUE;
1570
1571
1572 /* -------------------------------------------------------------------
1573 | PUBLIC PROCEDURE |
1574 | UPD_BRANCH_VALIDATE |
1575 | Description: Country specific Branch validation |
1579 | Calls: CE_VALIDATE_BRANCH_* |
1576 | that does not include the uniqueness validation |
1577 | Usage: Called in update flow due to the Upgrade changes |
1578 | errors found in this API are treated as warnings |
1580 --------------------------------------------------------------------- */
1581 PROCEDURE UPD_BRANCH_VALIDATE
1582 (X_COUNTRY_NAME IN varchar2,
1583 X_BANK_NUMBER IN varchar2,
1584 X_BRANCH_NUMBER IN varchar2,
1585 X_BANK_NAME IN varchar2,
1586 X_BRANCH_NAME IN varchar2,
1587 X_BRANCH_NAME_ALT IN varchar2,
1588 X_BANK_ID IN NUMBER,
1589 X_BRANCH_ID IN NUMBER,
1590 p_init_msg_list IN VARCHAR2,
1591 x_msg_count OUT NOCOPY NUMBER,
1592 x_msg_data OUT NOCOPY VARCHAR2,
1593 X_VALUE_OUT OUT NOCOPY varchar2,
1594 x_return_status IN OUT NOCOPY VARCHAR2,
1595 X_ACCOUNT_CLASSIFICATION IN VARCHAR2 DEFAULT NULL) AS
1596
1597 COUNTRY_NAME VARCHAR2(2);
1598
1599 X_PASS_MAND_CHECK VARCHAR2(1);
1600
1601 BEGIN
1602 l_DEBUG := NVL(FND_PROFILE.value('CE_DEBUG'), 'N');
1603 --l_DEBUG := 'Y';
1604
1605 IF l_DEBUG in ('Y', 'C') THEN
1606 cep_standard.debug('>>CE_VALIDATE_BANKINFO.upd_branch_validate');
1607 END IF;
1608
1609 -- initialize API return status to success.
1610 x_return_status := fnd_api.g_ret_sts_success;
1611
1612 COUNTRY_NAME := X_COUNTRY_NAME;
1613
1614 X_VALUE_OUT := X_BRANCH_NUMBER;
1615
1616 IF l_DEBUG in ('Y', 'C') THEN
1617 cep_standard.debug('CE_VALIDATE_BANKINFO.ce_validate_branch - COUNTRY_NAME: '|| COUNTRY_NAME||
1618 ', X_VALUE_OUT: '|| X_VALUE_OUT);
1619 END IF;
1620
1621 -- Initialize message list if p_init_msg_list is set to TRUE.
1622 IF FND_API.to_Boolean(p_init_msg_list) THEN
1623 FND_MSG_PUB.initialize;
1624 END IF;
1625
1626 /* We must validate the Bank Branch Number */
1627
1628 IF X_BRANCH_NUMBER is null then
1629 X_PASS_MAND_CHECK := 'F';
1630 ELSE
1631 X_PASS_MAND_CHECK := 'P';
1632 END IF;
1633
1634 IF l_DEBUG in ('Y', 'C') THEN
1635 cep_standard.debug('CE_VALIDATE_BANKINFO.ce_validate_branch - X_PASS_MAND_CHECK: '|| X_PASS_MAND_CHECK);
1636 END IF;
1637
1638 IF (COUNTRY_NAME = 'AT')
1639 THEN
1640 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_AT(X_BRANCH_NUMBER,
1641 X_PASS_MAND_CHECK,
1642 X_VALUE_OUT);
1643
1644 ELSIF (COUNTRY_NAME = 'ES')
1645 then
1646 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_ES(X_BRANCH_NUMBER,
1647 X_PASS_MAND_CHECK,
1648 X_VALUE_OUT);
1649
1650 ELSIF (COUNTRY_NAME = 'FR')
1651 then
1652 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_FR(X_BRANCH_NUMBER,
1653 X_PASS_MAND_CHECK,
1654 X_VALUE_OUT);
1655
1656 ELSIF (COUNTRY_NAME = 'PT')
1657 then
1658 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_PT(X_BRANCH_NUMBER,
1659 X_PASS_MAND_CHECK);
1660
1661 ELSIF (COUNTRY_NAME = 'BR')
1662 then
1663 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_BR(X_BRANCH_NUMBER,
1664 X_PASS_MAND_CHECK,
1665 X_VALUE_OUT);
1666
1667 -- added 5/14/02
1668
1669 ELSIF (COUNTRY_NAME = 'DE')
1670 then
1671 IF l_DEBUG in ('Y', 'C') THEN
1672 cep_standard.debug('call CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_DE' );
1673 END IF;
1674 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_DE(X_BRANCH_NUMBER,
1675 X_BANK_ID);
1676
1677 ELSIF (COUNTRY_NAME = 'GR')
1678 then
1679 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_GR(X_BRANCH_NUMBER);
1680
1681 ELSIF (COUNTRY_NAME = 'IS')
1682 then
1683 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_IS(X_BRANCH_NUMBER,
1684 X_BANK_ID,
1685 X_VALUE_OUT);
1686
1687 ELSIF (COUNTRY_NAME = 'IE')
1688 then
1689 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_IE(X_BRANCH_NUMBER,
1690 X_BANK_ID);
1691
1692 ELSIF (COUNTRY_NAME = 'IT')
1693 then
1694 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_IT(X_BRANCH_NUMBER,
1695 X_PASS_MAND_CHECK);
1696
1697 ELSIF (COUNTRY_NAME = 'LU')
1698 then
1699 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_LU(X_BRANCH_NUMBER,
1700 X_BANK_ID);
1701
1702 ELSIF (COUNTRY_NAME = 'PL')
1703 then
1704 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_PL(X_BRANCH_NUMBER,
1705 X_BANK_ID);
1706
1707 ELSIF (COUNTRY_NAME = 'SE')
1708 then
1712 ELSIF (COUNTRY_NAME = 'CH')
1709 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_SE(X_BRANCH_NUMBER,
1710 X_BANK_ID);
1711
1713 then
1714 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_CH(X_BRANCH_NUMBER,
1715 X_BANK_ID);
1716
1717 ELSIF (COUNTRY_NAME = 'GB')
1718 then
1719 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_GB(X_BRANCH_NUMBER,
1720 X_BANK_ID);
1721
1722 ELSIF (COUNTRY_NAME = 'US')
1723 then
1724 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_US(X_BRANCH_NUMBER,
1725 X_PASS_MAND_CHECK,
1726 X_VALUE_OUT);
1727
1728 -- added 10/19/04
1729
1730 ELSIF (COUNTRY_NAME = 'AU')
1731 then
1732 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_AU(X_BRANCH_NUMBER,
1733 X_BANK_ID,
1734 X_PASS_MAND_CHECK);
1735 ELSIF (COUNTRY_NAME = 'IL')
1736 then
1737 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_IL(X_BRANCH_NUMBER,
1738 X_PASS_MAND_CHECK);
1739 ELSIF (COUNTRY_NAME = 'NZ')
1740 then
1741 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_NZ(X_BRANCH_NUMBER,
1742 X_PASS_MAND_CHECK);
1743
1744 ELSIF (COUNTRY_NAME = 'JP')
1745 then
1746 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_JP(X_BRANCH_NUMBER,
1747 X_BRANCH_NAME_ALT,
1748 X_PASS_MAND_CHECK);
1749
1750 END IF;
1751
1752 FND_MSG_PUB.Count_And_Get(
1753 p_encoded => FND_API.G_FALSE,
1754 p_count => x_msg_count,
1755 p_data => x_msg_data);
1756
1757 IF x_msg_count > 0 THEN
1758 x_return_status := fnd_api.g_ret_sts_error;
1759 END IF;
1760
1761 IF l_DEBUG in ('Y', 'C') THEN
1762 cep_standard.debug('CE_VALIDATE_BANKINFO.upd_branch_validate - P_COUNT: '|| x_msg_count||
1763 --'P_DATA: '|| x_msg_data||
1764 ' X_VALUE_OUT: '|| X_VALUE_OUT||
1765 '<<CE_VALIDATE_BANKINFO.upd_branch_validate');
1766 END IF;
1767 EXCEPTION
1768 WHEN OTHERS THEN
1769 IF l_DEBUG in ('Y', 'C') THEN
1770 cep_standard.debug('CE_VALIDATE_BANKINFO.upd_branch_validate ' ||X_COUNTRY_NAME );
1771 END IF;
1772
1773 FND_MESSAGE.set_name('CE', 'CE_UNHANDLED_EXCEPTION');
1774 fnd_message.set_token('PROCEDURE', 'CE_VALIDATE_BANKINFO.upd_branch_validate');
1775 fnd_msg_pub.add;
1776 RAISE;
1777 END UPD_BRANCH_VALIDATE;
1778
1779 /* ----------------------------------------------------------------------- */
1780
1781 procedure CE_FORMAT_ELECTRONIC_NUM_BE(
1782 X_ACCOUNT_NUMBER IN varchar2,
1783 X_ACCOUNT_CLASSIFICATION IN VARCHAR2 DEFAULT NULL,
1784 X_ELECTRONIC_ACCT_NUM OUT NOCOPY varchar2)
1785 AS
1786
1787 account_value varchar2(30);
1788 l_bank_account_num varchar2(30);
1789
1790 BEGIN
1791 IF l_DEBUG in ('Y', 'C') THEN
1792 cep_standard.debug('>>CE_VALIDATE_BANKINFO.CE_FORMAT_ELECTRONIC_NUM_BE');
1793 END IF;
1794
1795 account_value:= ce_remove_formats(X_ACCOUNT_NUMBER);
1796
1797 IF X_ACCOUNT_CLASSIFICATION = 'EXTERNAL' THEN
1798 -- Bug 6175680 changed the character for l_bank_account_num from 12 to 14.
1799 l_bank_account_num := lpad(ltrim(rtrim(to_char(X_ACCOUNT_NUMBER))),14,'0');
1800 l_bank_account_num := rpad(nvl(l_bank_account_num, ' '), 14, ' ');
1801
1802 account_value := to_number(substr(l_bank_account_num,1,3)
1803 ||substr(l_bank_account_num,5,7)
1804 ||substr(l_bank_account_num,13,2));
1805
1806 IF l_DEBUG in ('Y', 'C') THEN
1807 cep_standard.debug('account_value ' ||account_value);
1808 END IF;
1809 END IF;
1810
1811 X_ELECTRONIC_ACCT_NUM := account_value;
1812
1813 IF l_DEBUG in ('Y', 'C') THEN
1814 cep_standard.debug('X_ELECTRONIC_ACCT_NUM ' ||X_ELECTRONIC_ACCT_NUM ||
1815 '<<CE_VALIDATE_BANKINFO.CE_FORMAT_ELECTRONIC_NUM_BE');
1816 END IF;
1817 END CE_FORMAT_ELECTRONIC_NUM_BE;
1818
1819 /* ----------------------------------------------------------------------- */
1820
1821 procedure CE_FORMAT_ELECTRONIC_NUM_FI(
1822 X_ACCOUNT_NUMBER IN varchar2,
1823 X_ACCOUNT_CLASSIFICATION IN VARCHAR2 DEFAULT NULL,
1824 X_ELECTRONIC_ACCT_NUM OUT NOCOPY varchar2)
1825 AS
1826
1827 bb_value varchar2(60);
1828 account_value varchar2(30);
1829 account_value1 varchar2(30);
1830 account_value2 varchar2(30);
1831 acct_length number;
1832
1833 BEGIN
1834 IF l_DEBUG in ('Y', 'C') THEN
1835 cep_standard.debug('>>CE_VALIDATE_BANKINFO.CE_FORMAT_ELECTRONIC_NUM_FI');
1836 END IF;
1837 /*
1838 --bank_value := ce_remove_formats(X_BANK_NUMBER);
1839 --branch_value := ce_remove_formats(X_BRANCH_NUMBER);
1840
1841 --bb_value := substr((bank_value || branch_value),1,3);
1842 --cd_value := ce_remove_formats(X_CD);
1843
1844 account_value1 := ce_remove_formats(X_ACCOUNT_NUMBER);
1848 ACCOUNT_VALUE := lpad(account_value2,8,0);
1845 bb_value := substr(account_value1,1,6);
1846 account_value2 := substr(account_value1,7,length(account_value1));
1847
1849
1850 X_ELECTRONIC_ACCT_NUM := bb_value || account_value;
1851 */
1852 select
1853 lpad(decode(
1854 decode (
1855 substr(X_ACCOUNT_NUMBER,1,1),'7', substr(X_ACCOUNT_NUMBER,1,2),
1856 substr(X_ACCOUNT_NUMBER,1,1)),
1857 '4', substr(X_ACCOUNT_NUMBER,1,6)||substr(X_ACCOUNT_NUMBER,8,1)||
1858 lpad(substr(X_ACCOUNT_NUMBER,9),7,'0'),
1859 '5', substr(X_ACCOUNT_NUMBER,1,6)||substr(X_ACCOUNT_NUMBER,8,1)||
1860 lpad(substr(X_ACCOUNT_NUMBER,9),7,'0'),
1861 '71', substr(X_ACCOUNT_NUMBER,1,6)||substr(X_ACCOUNT_NUMBER,8,1)||
1862 lpad(substr(X_ACCOUNT_NUMBER,9),7,'0'),
1863 substr(X_ACCOUNT_NUMBER,1,6)||lpad(substr(X_ACCOUNT_NUMBER,8),8,'0')
1864 ),14,' ')
1865 into account_value
1866 from dual;
1867
1868 X_ELECTRONIC_ACCT_NUM := account_value;
1869
1870 IF l_DEBUG in ('Y', 'C') THEN
1871 cep_standard.debug('X_ELECTRONIC_ACCT_NUM ' ||X_ELECTRONIC_ACCT_NUM ||
1872 ', <<CE_VALIDATE_BANKINFO.CE_FORMAT_ELECTRONIC_NUM_FI');
1873 END IF;
1874 END CE_FORMAT_ELECTRONIC_NUM_FI;
1875
1876 /* ----------------------------------------------------------------------- */
1877
1878 procedure CE_FORMAT_ELECTRONIC_NUM_NL(
1879 X_ACCOUNT_NUMBER IN varchar2,
1880 X_ACCOUNT_CLASSIFICATION IN VARCHAR2 DEFAULT NULL,
1881 X_ELECTRONIC_ACCT_NUM OUT NOCOPY varchar2)
1882 AS
1883 account_value varchar2(100);
1884 BEGIN
1885 IF l_DEBUG in ('Y', 'C') THEN
1886 cep_standard.debug('>>CE_VALIDATE_BANKINFO.CE_FORMAT_ELECTRONIC_NUM_NL');
1887 END IF;
1888 select rpad(
1889 decode(
1890 upper(substr(X_ACCOUNT_NUMBER, 1, 1)),
1891 'P', rpad(upper(X_ACCOUNT_NUMBER), 10, ' '),
1892 'G', rpad('P' || substr(X_ACCOUNT_NUMBER, 2), 10, ' '),
1893 'I', rpad('P' || substr(X_ACCOUNT_NUMBER, 2), 10, ' '),
1894 NULL, lpad(' ', 10, ' '),
1895 lpad(X_ACCOUNT_NUMBER, 10, '0')
1896 )
1897 ,35,' ')
1898 into account_value
1899 from dual;
1900
1901 X_ELECTRONIC_ACCT_NUM := account_value;
1902
1903 IF l_DEBUG in ('Y', 'C') THEN
1904 cep_standard.debug('X_ELECTRONIC_ACCT_NUM ' ||X_ELECTRONIC_ACCT_NUM ||
1905 ', <<CE_VALIDATE_BANKINFO.CE_FORMAT_ELECTRONIC_NUM_NL');
1906 END IF;
1907 END CE_FORMAT_ELECTRONIC_NUM_NL;
1908
1909 /* ----------------------------------------------------------------------- */
1910
1911 procedure CE_FORMAT_ELECTRONIC_NUM_NO(
1912 X_ACCOUNT_NUMBER IN varchar2,
1913 X_ACCOUNT_CLASSIFICATION IN VARCHAR2 DEFAULT NULL,
1914 X_ELECTRONIC_ACCT_NUM OUT NOCOPY varchar2)
1915 AS
1916
1917 account_value varchar2(30);
1918
1919 BEGIN
1920 IF l_DEBUG in ('Y', 'C') THEN
1921 cep_standard.debug('>>CE_VALIDATE_BANKINFO.CE_FORMAT_ELECTRONIC_NUM_NO');
1922 END IF;
1923
1924 account_value:= lpad(replace(replace(NVL(X_ACCOUNT_NUMBER,''),'.',''),' ',''),11,0);
1925 X_ELECTRONIC_ACCT_NUM := account_value;
1926
1927 IF l_DEBUG in ('Y', 'C') THEN
1928 cep_standard.debug('X_ELECTRONIC_ACCT_NUM ' ||X_ELECTRONIC_ACCT_NUM ||
1929 '<<CE_VALIDATE_BANKINFO.CE_FORMAT_ELECTRONIC_NUM_NO');
1930 END IF;
1931
1932 END CE_FORMAT_ELECTRONIC_NUM_NO;
1933
1934 /* ----------------------------------------------------------------------- */
1935
1936 procedure CE_FORMAT_ELECTRONIC_NUM_SE(
1937 X_ACCOUNT_NUMBER IN varchar2,
1938 X_ACCOUNT_CLASSIFICATION IN VARCHAR2 DEFAULT NULL,
1939 X_ELECTRONIC_ACCT_NUM OUT NOCOPY varchar2)
1940 AS
1941 account_value varchar2(30);
1942
1943 BEGIN
1944 IF l_DEBUG in ('Y', 'C') THEN
1945 cep_standard.debug('>>CE_VALIDATE_BANKINFO.CE_FORMAT_ELECTRONIC_NUM_SE');
1946 END IF;
1947
1948 account_value:= ce_remove_formats(X_ACCOUNT_NUMBER);
1949 X_ELECTRONIC_ACCT_NUM := account_value;
1950
1951 IF l_DEBUG in ('Y', 'C') THEN
1952 cep_standard.debug('X_ELECTRONIC_ACCT_NUM ' ||X_ELECTRONIC_ACCT_NUM ||
1953 '<<CE_VALIDATE_BANKINFO.CE_FORMAT_ELECTRONIC_NUM_SE');
1954 END IF;
1955 END CE_FORMAT_ELECTRONIC_NUM_SE;
1956
1957 /* --------------------------------------------------------------------
1958 | PUBLIC PROCEDURE |
1959 | CE_FORMAT_ELECTRONIC_NUM |
1960 | |
1961 | CALLED BY |
1962 | CE_VALIDATE_ACCOUNT |
1963 | |
1964 | CALLS |
1968
1965 | CE_FORMAT_ELECTRONIC_NUM_* for each country |
1966 --------------------------------------------------------------------- */
1967
1969 PROCEDURE CE_FORMAT_ELECTRONIC_NUM(X_COUNTRY_NAME IN varchar2,
1970 X_BANK_NUMBER IN varchar2,
1971 X_BRANCH_NUMBER IN varchar2,
1972 X_ACCOUNT_NUMBER IN varchar2,
1973 X_CD IN varchar2 DEFAULT NULL,
1974 X_ACCOUNT_SUFFIX IN varchar2,
1975 X_SECONDARY_ACCOUNT_REFERENCE IN varchar2,
1976 X_ACCOUNT_CLASSIFICATION IN VARCHAR2 DEFAULT NULL,
1977 X_ELECTRONIC_ACCT_NUM OUT NOCOPY varchar2,
1978 p_init_msg_list IN VARCHAR2,
1979 x_msg_count OUT NOCOPY NUMBER,
1980 x_msg_data OUT NOCOPY VARCHAR2,
1981 x_return_status IN OUT NOCOPY VARCHAR2
1982 ) AS
1983 COUNTRY_NAME VARCHAR2(2);
1984
1985 BEGIN
1986 --l_DEBUG := NVL(FND_PROFILE.value('CE_DEBUG'), 'N');
1987 --l_DEBUG := 'Y';
1988
1989 IF l_DEBUG in ('Y', 'C') THEN
1990 cep_standard.debug('>>CE_VALIDATE_BANKINFO.CE_FORMAT_ELECTRONIC_NUM');
1991 END IF;
1992 -- initialize API return status to success.
1993 x_return_status := fnd_api.g_ret_sts_success;
1994
1995 COUNTRY_NAME := X_COUNTRY_NAME;
1996 X_ELECTRONIC_ACCT_NUM := X_ACCOUNT_NUMBER;
1997
1998 IF l_DEBUG in ('Y', 'C') THEN
1999 cep_standard.debug('COUNTRY_NAME: '|| COUNTRY_NAME||
2000 ', X_ELECTRONIC_ACCT_NUM: '|| X_ELECTRONIC_ACCT_NUM);
2001 END IF;
2002
2003 -- Initialize message list if p_init_msg_list is set to TRUE.
2004 IF FND_API.to_Boolean(p_init_msg_list) THEN
2005 FND_MSG_PUB.initialize;
2006 END IF;
2007
2008 IF l_DEBUG in ('Y', 'C') THEN
2009 cep_standard.debug('P_INIT_MSG_LIST: '|| P_INIT_MSG_LIST);
2010 END IF;
2011
2012 IF (COUNTRY_NAME = 'BE') then
2013 CE_VALIDATE_BANKINFO.CE_FORMAT_ELECTRONIC_NUM_BE(
2014 X_ACCOUNT_NUMBER ,
2015 X_ACCOUNT_CLASSIFICATION,
2016 X_ELECTRONIC_ACCT_NUM
2017 );
2018
2019 ELSIF (COUNTRY_NAME = 'FI') then
2020 CE_VALIDATE_BANKINFO.CE_FORMAT_ELECTRONIC_NUM_FI(
2021 X_ACCOUNT_NUMBER ,
2022 X_ACCOUNT_CLASSIFICATION,
2023 X_ELECTRONIC_ACCT_NUM
2024 );
2025
2026 ELSIF (COUNTRY_NAME = 'NL') then
2027 CE_VALIDATE_BANKINFO.CE_FORMAT_ELECTRONIC_NUM_NL(
2028 X_ACCOUNT_NUMBER ,
2029 X_ACCOUNT_CLASSIFICATION,
2030 X_ELECTRONIC_ACCT_NUM
2031 );
2032
2033 ELSIF (COUNTRY_NAME = 'N0') then
2034 CE_VALIDATE_BANKINFO.CE_FORMAT_ELECTRONIC_NUM_NO(
2035 X_ACCOUNT_NUMBER ,
2036 X_ACCOUNT_CLASSIFICATION,
2037 X_ELECTRONIC_ACCT_NUM
2038 );
2039 ELSIF (COUNTRY_NAME = 'SE') then
2040 CE_VALIDATE_BANKINFO.CE_FORMAT_ELECTRONIC_NUM_SE(
2041 X_ACCOUNT_NUMBER ,
2042 X_ACCOUNT_CLASSIFICATION,
2043 X_ELECTRONIC_ACCT_NUM
2044 );
2045 END IF;
2046
2047 FND_MSG_PUB.Count_And_Get(
2048 p_encoded => FND_API.G_FALSE,
2049 p_count => x_msg_count,
2050 p_data => x_msg_data);
2051
2052 IF x_msg_count > 0 THEN
2053 x_return_status := fnd_api.g_ret_sts_error;
2054 END IF;
2055
2056 IF l_DEBUG in ('Y', 'C') THEN
2057 cep_standard.debug('P_COUNT: '|| x_msg_count||
2058 ', <<CE_VALIDATE_BANKINFO.CE_FORMAT_ELECTRONIC_NUM');
2059 END IF;
2060 EXCEPTION
2061 WHEN OTHERS THEN
2062
2063 IF l_DEBUG in ('Y', 'C') THEN
2064 cep_standard.debug('CE_VALIDATE_BANKINFO.CE_FORMAT_ELECTRONIC_NUM ' ||X_COUNTRY_NAME );
2065 END IF;
2066 FND_MESSAGE.set_name('CE', 'CE_UNHANDLED_EXCEPTION');
2067 fnd_message.set_token('PROCEDURE', 'CE_VALIDATE_BANKINFO.CE_FORMAT_ELECTRONIC_NUM');
2068 fnd_msg_pub.add;
2069 RAISE;
2070
2071 END CE_FORMAT_ELECTRONIC_NUM;
2072
2073 /* --------------------------------------------------------------------
2074 | PRIVATE PROCEDURE |
2075 | CE_VALIDATE_ACCOUNT |
2076 | |
2077 | CALLED BY |
2078 | OA - BANK ACCOUNT INFORMATION PAGE |
2079 | |
2080 | CALLS |
2081 | CE_VALIDATE_ACCOUNT_* for each country |
2082 | CE_VALIDATE_UNIQUE_ACCOUNT_* for each country |
2083 --------------------------------------------------------------------- */
2084
2085
2086 PROCEDURE CE_VALIDATE_ACCOUNT(X_COUNTRY_NAME IN varchar2,
2090 X_BANK_ID IN number,
2087 X_BANK_NUMBER IN varchar2,
2088 X_BRANCH_NUMBER IN varchar2,
2089 X_ACCOUNT_NUMBER IN varchar2,
2091 X_BRANCH_ID IN number,
2092 X_ACCOUNT_ID IN number,
2093 X_CURRENCY_CODE IN varchar2,
2094 X_ACCOUNT_TYPE IN varchar2,
2095 X_ACCOUNT_SUFFIX IN varchar2,
2096 X_SECONDARY_ACCOUNT_REFERENCE IN varchar2,
2097 X_ACCOUNT_NAME IN varchar2,
2098 p_init_msg_list IN VARCHAR2,
2099 x_msg_count OUT NOCOPY NUMBER,
2100 x_msg_data OUT NOCOPY VARCHAR2,
2101 X_VALUE_OUT OUT NOCOPY varchar2,
2102 x_return_status IN OUT NOCOPY VARCHAR2,
2103 X_ACCOUNT_CLASSIFICATION IN VARCHAR2 DEFAULT NULL,
2104 X_CD IN varchar2 DEFAULT NULL,
2105 X_ELECTRONIC_ACCT_NUM OUT NOCOPY varchar2
2106 )
2107 AS
2108
2109 COUNTRY_NAME VARCHAR2(2);
2110 NEW_ACCOUNT_NUM VARCHAR2(100);
2111 X_PASS_MAND_CHECK VARCHAR2(1);
2112
2113 BEGIN
2114 l_DEBUG := NVL(FND_PROFILE.value('CE_DEBUG'), 'N');
2115 --l_DEBUG := 'Y';
2116
2117 IF l_DEBUG in ('Y', 'C') THEN
2118 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_account');
2119 END IF;
2120 -- initialize API return status to success.
2121 x_return_status := fnd_api.g_ret_sts_success;
2122
2123 COUNTRY_NAME := X_COUNTRY_NAME;
2124 X_VALUE_OUT := X_ACCOUNT_NUMBER;
2125 X_ELECTRONIC_ACCT_NUM := X_ACCOUNT_NUMBER;
2126
2127 IF l_DEBUG in ('Y', 'C') THEN
2128 cep_standard.debug('COUNTRY_NAME: '|| COUNTRY_NAME||
2129 ', X_VALUE_OUT: '|| X_VALUE_OUT);
2130 END IF;
2131
2132 -- Initialize message list if p_init_msg_list is set to TRUE.
2133 IF FND_API.to_Boolean(p_init_msg_list) THEN
2134 FND_MSG_PUB.initialize;
2135 END IF;
2136
2137 IF l_DEBUG in ('Y', 'C') THEN
2138 cep_standard.debug('P_INIT_MSG_LIST: '|| P_INIT_MSG_LIST);
2139 END IF;
2140
2141 /* We must validate the Bank Account Number */
2142
2143 IF X_ACCOUNT_NUMBER is null then
2144 X_PASS_MAND_CHECK := 'F';
2145 ELSE
2146 X_PASS_MAND_CHECK := 'P';
2147 END IF;
2148
2149 IF l_DEBUG in ('Y', 'C') THEN
2150 cep_standard.debug('X_PASS_MAND_CHECK: '|| X_PASS_MAND_CHECK);
2151 END IF;
2152
2153 IF (COUNTRY_NAME = 'AT')
2154 then
2155 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_AT(X_ACCOUNT_NUMBER,
2156 X_PASS_MAND_CHECK,
2157 X_VALUE_OUT);
2158
2159 ELSIF (COUNTRY_NAME = 'DK')
2160 then
2161 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_DK(X_ACCOUNT_NUMBER,
2162 X_PASS_MAND_CHECK,
2163 X_VALUE_OUT);
2164
2165 ELSIF (COUNTRY_NAME = 'NO')
2166 then
2167 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_NO(X_ACCOUNT_NUMBER,
2168 X_PASS_MAND_CHECK);
2169
2170 ELSIF (COUNTRY_NAME = 'ES')
2171 then
2172
2173 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_ES(X_ACCOUNT_NUMBER,
2174 X_PASS_MAND_CHECK,
2175 X_VALUE_OUT);
2176
2177
2178 ELSIF (COUNTRY_NAME = 'NL')
2179 then
2180
2181 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_NL(X_ACCOUNT_NUMBER,
2182 X_PASS_MAND_CHECK);
2183
2184 ELSIF (COUNTRY_NAME = 'FR')
2185 then
2186
2187 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_FR(X_ACCOUNT_NUMBER,
2188 X_PASS_MAND_CHECK,
2189 X_VALUE_OUT);
2190
2191
2192 ELSIF (COUNTRY_NAME = 'BE')
2193 then
2194
2195 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_BE(X_ACCOUNT_NUMBER,
2196 X_PASS_MAND_CHECK);
2197
2198
2199 ELSIF (COUNTRY_NAME = 'PT')
2200 then
2201
2202 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_PT(X_ACCOUNT_NUMBER,
2203 X_PASS_MAND_CHECK,
2204 X_VALUE_OUT);
2205
2206 ELSIF (COUNTRY_NAME = 'FI')
2207 AND (X_BRANCH_NUMBER='LMP')
2208 then
2209
2210 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_FI(X_ACCOUNT_NUMBER,
2211 X_PASS_MAND_CHECK);
2212
2213 -- added 5/14/02
2214
2215 ELSIF (COUNTRY_NAME = 'DE')
2216 then
2217
2218 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_DE(X_ACCOUNT_NUMBER,
2219 X_VALUE_OUT );
2220
2221 ELSIF (COUNTRY_NAME = 'GR')
2222 then
2223
2224 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_GR(X_ACCOUNT_NUMBER,
2225 X_VALUE_OUT);
2226
2227 ELSIF (COUNTRY_NAME = 'IS')
2228 then
2229
2230 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_IS(X_ACCOUNT_NUMBER,
2231 X_VALUE_OUT );
2232
2233
2237 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_IE(X_ACCOUNT_NUMBER);
2234 ELSIF (COUNTRY_NAME = 'IE')
2235 then
2236
2238
2239 ELSIF (COUNTRY_NAME = 'IT')
2240 then
2241 IF l_DEBUG in ('Y', 'C') THEN
2242 cep_standard.debug('X_ACCOUNT_NUMBER : '|| X_ACCOUNT_NUMBER||
2243 ', X_VALUE_OUT : '|| X_VALUE_OUT);
2244 END IF;
2245
2246 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_IT(X_ACCOUNT_NUMBER,
2247 X_VALUE_OUT);
2248
2249 ELSIF (COUNTRY_NAME = 'LU')
2250 then
2251
2252 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_LU(X_ACCOUNT_NUMBER);
2253
2254
2255 ELSIF (COUNTRY_NAME = 'PL')
2256 then
2257
2258 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_PL(X_ACCOUNT_NUMBER);
2259
2260
2261 ELSIF (COUNTRY_NAME = 'SE')
2262 then
2263
2264 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_SE(X_ACCOUNT_NUMBER);
2265
2266
2267 ELSIF (COUNTRY_NAME = 'CH')
2268 then
2269
2270 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_CH(X_ACCOUNT_NUMBER,
2271 X_ACCOUNT_TYPE );
2272
2273 ELSIF (COUNTRY_NAME = 'GB')
2274 then
2275
2276 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_GB(X_ACCOUNT_NUMBER,
2277 X_VALUE_OUT);
2278
2279 ELSIF (COUNTRY_NAME = 'BR')
2280 then
2281
2282 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_BR(X_ACCOUNT_NUMBER,
2283 X_SECONDARY_ACCOUNT_REFERENCE);
2284
2285 -- added 10/19/04
2286 ELSIF (COUNTRY_NAME = 'AU')
2287 then
2288
2289 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_AU(X_ACCOUNT_NUMBER,X_CURRENCY_CODE);
2290
2291 ELSIF (COUNTRY_NAME = 'IL')
2292 then
2293
2294 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_IL(X_ACCOUNT_NUMBER);
2295 ELSIF (COUNTRY_NAME = 'NZ')
2296 then
2297
2298 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_NZ(X_ACCOUNT_NUMBER,
2299 X_ACCOUNT_SUFFIX);
2300 ELSIF (COUNTRY_NAME = 'JP')
2301 then
2302 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_JP(X_ACCOUNT_NUMBER,
2303 X_ACCOUNT_TYPE );
2304 END IF; /** country account check **/
2305
2306 /** UNIQUE VALIDATION CHECK for account **/
2307
2308 IF l_DEBUG in ('Y', 'C') THEN
2309 cep_standard.debug('UNIQUE_VALIDATION CHECK for account');
2310 END IF;
2311
2312 IF (COUNTRY_NAME = 'JP') THEN
2313 CE_VALIDATE_BANKINFO.CE_VALIDATE_UNIQUE_ACCOUNT_JP(X_ACCOUNT_NUMBER,
2314 X_CURRENCY_CODE,
2315 X_ACCOUNT_TYPE,
2316 X_ACCOUNT_NAME,
2317 X_BRANCH_ID,
2318 X_ACCOUNT_ID);
2319
2320 ELSIF (COUNTRY_NAME = 'NZ') THEN
2321 CE_VALIDATE_BANKINFO.CE_VALIDATE_UNIQUE_ACCOUNT_NZ(X_ACCOUNT_NUMBER,
2322 X_CURRENCY_CODE,
2323 X_ACCOUNT_SUFFIX,
2324 X_ACCOUNT_NAME,
2325 X_BRANCH_ID,
2326 X_ACCOUNT_ID);
2327 ELSE
2328 IF l_DEBUG in ('Y', 'C') THEN
2329 cep_standard.debug('call CE_VALIDATE_BANKINFO.CE_VALIDATE_UNIQUE_ACCOUNT' );
2330 END IF;
2331 CE_VALIDATE_BANKINFO.CE_VALIDATE_UNIQUE_ACCOUNT(
2332 X_ACCOUNT_NUMBER,
2333 X_CURRENCY_CODE,
2334 X_ACCOUNT_NAME,
2335 X_BRANCH_ID,
2336 X_ACCOUNT_ID);
2337
2338 END IF;
2339
2340 IF l_DEBUG in ('Y', 'C') THEN
2341 cep_standard.debug(' UNIQUE_VALIDATION CHECK for account end ');
2342 END IF;
2343
2344 -- ER 3973203
2345 -- Format Electronic Bank Account Num (CE_BANK_ACCOUNTS.BANK_ACCOUNT_NUM_ELECTRONIC)
2346
2347 IF X_VALUE_OUT IS NOT NULL THEN
2348 NEW_ACCOUNT_NUM := X_VALUE_OUT;
2349 ELSE
2350 NEW_ACCOUNT_NUM := X_ACCOUNT_NUMBER;
2351
2352 END IF;
2353 IF l_DEBUG in ('Y', 'C') THEN
2354 cep_standard.debug('CE_VALIDATE_ACCOUNT: NEW_ACCOUNT_NUM: '|| NEW_ACCOUNT_NUM);
2355 END IF;
2356
2357 CE_FORMAT_ELECTRONIC_NUM(X_COUNTRY_NAME ,
2358 X_BANK_NUMBER ,
2359 X_BRANCH_NUMBER ,
2360 NEW_ACCOUNT_NUM ,
2361 X_CD,
2362 X_ACCOUNT_SUFFIX,
2363 X_SECONDARY_ACCOUNT_REFERENCE,
2364 X_ACCOUNT_CLASSIFICATION,
2365 X_ELECTRONIC_ACCT_NUM ,
2366 p_init_msg_list ,
2367 x_msg_count ,
2368 x_msg_data ,
2369 x_return_status );
2370
2371 IF l_DEBUG in ('Y', 'C') THEN
2372 cep_standard.debug('CE_VALIDATE_ACCOUNT: X_ELECTRONIC_ACCT_NUM: '|| X_ELECTRONIC_ACCT_NUM);
2373 END IF;
2374
2375
2376 FND_MSG_PUB.Count_And_Get(
2377 p_encoded => FND_API.G_FALSE,
2378 p_count => x_msg_count,
2382 x_return_status := fnd_api.g_ret_sts_error;
2379 p_data => x_msg_data);
2380
2381 IF x_msg_count > 0 THEN
2383 END IF;
2384
2385 IF l_DEBUG in ('Y', 'C') THEN
2386 cep_standard.debug('CE_VALIDATE_ACCOUNT: P_COUNT: '|| x_msg_count||
2387 --'ce_validate_account - P_DATA: '|| x_msg_data||
2388 ', X_VALUE_OUT: '|| X_VALUE_OUT||
2389 ', <<CE_VALIDATE_BANKINFO.ce_validate_account');
2390 END IF;
2391 EXCEPTION
2392 WHEN OTHERS THEN
2393
2394 IF l_DEBUG in ('Y', 'C') THEN
2395 cep_standard.debug('CE_VALIDATE_BANKINFO.ce_validate_account ' ||X_COUNTRY_NAME );
2396 END IF;
2397 FND_MESSAGE.set_name('CE', 'CE_UNHANDLED_EXCEPTION');
2398 fnd_message.set_token('PROCEDURE', 'CE_VALIDATE_BANKINFO.ce_validate_account');
2399 fnd_msg_pub.add;
2400 RAISE;
2401
2402 END CE_VALIDATE_ACCOUNT;
2403
2404
2405 /* -------------------------------------------------------------------
2406 | PUBLIC PROCEDURE |
2407 | UPD_ACCOUNT_UNIQUE |
2408 | Description: Bank Account uniqueness validation |
2409 | Usage: Called in update flow due to the Upgrade changes |
2410 | Calls: CE_VALIDATE_UNIQUE_ACCOUNT_* |
2411 --------------------------------------------------------------------- */
2412 PROCEDURE UPD_ACCOUNT_UNIQUE
2413 (X_COUNTRY_NAME IN varchar2,
2414 X_BANK_NUMBER IN varchar2,
2415 X_BRANCH_NUMBER IN varchar2,
2416 X_ACCOUNT_NUMBER IN varchar2,
2417 X_BANK_ID IN number,
2418 X_BRANCH_ID IN number,
2419 X_ACCOUNT_ID IN number,
2420 X_CURRENCY_CODE IN varchar2,
2421 X_ACCOUNT_TYPE IN varchar2,
2422 X_ACCOUNT_SUFFIX IN varchar2,
2423 X_SECONDARY_ACCOUNT_REFERENCE IN varchar2,
2424 X_ACCOUNT_NAME IN varchar2,
2425 p_init_msg_list IN VARCHAR2,
2426 x_msg_count OUT NOCOPY NUMBER,
2427 x_msg_data OUT NOCOPY VARCHAR2,
2428 X_VALUE_OUT OUT NOCOPY varchar2,
2429 x_return_status IN OUT NOCOPY VARCHAR2,
2430 X_ACCOUNT_CLASSIFICATION IN VARCHAR2 DEFAULT NULL) AS
2431
2432 COUNTRY_NAME VARCHAR2(2);
2433
2434 X_PASS_MAND_CHECK VARCHAR2(1);
2435
2436 BEGIN
2437 l_DEBUG := NVL(FND_PROFILE.value('CE_DEBUG'), 'N');
2438 --l_DEBUG := 'Y';
2439
2440 IF l_DEBUG in ('Y', 'C') THEN
2441 cep_standard.debug('>>CE_VALIDATE_BANKINFO.upd_account_unique');
2442 END IF;
2443 -- initialize API return status to success.
2444 x_return_status := fnd_api.g_ret_sts_success;
2445
2446 COUNTRY_NAME := X_COUNTRY_NAME;
2447 X_VALUE_OUT := X_ACCOUNT_NUMBER;
2448
2449 IF l_DEBUG in ('Y', 'C') THEN
2450 cep_standard.debug('CE_VALIDATE_BANKINFO.upd_account_unique - COUNTRY_NAME: '|| COUNTRY_NAME||
2451 ', X_VALUE_OUT: '|| X_VALUE_OUT);
2452 END IF;
2453
2454 -- Initialize message list if p_init_msg_list is set to TRUE.
2455 IF FND_API.to_Boolean(p_init_msg_list) THEN
2456 FND_MSG_PUB.initialize;
2457 END IF;
2458
2459 IF l_DEBUG in ('Y', 'C') THEN
2460 cep_standard.debug('CE_VALIDATE_BANKINFO.upd_account_unique - P_INIT_MSG_LIST: '|| P_INIT_MSG_LIST);
2461 END IF;
2462
2463 /** UNIQUE VALIDATION CHECK for account **/
2464
2465 IF l_DEBUG in ('Y', 'C') THEN
2466 cep_standard.debug('UNIQUE_VALIDATION CHECK for account');
2467 END IF;
2468
2469 IF (COUNTRY_NAME = 'JP') THEN
2470 CE_VALIDATE_BANKINFO.CE_VALIDATE_UNIQUE_ACCOUNT_JP(X_ACCOUNT_NUMBER,
2471 X_CURRENCY_CODE,
2472 X_ACCOUNT_TYPE,
2473 X_ACCOUNT_NAME,
2474 X_BRANCH_ID,
2475 X_ACCOUNT_ID);
2476
2477 ELSIF (COUNTRY_NAME = 'NZ') THEN
2478 CE_VALIDATE_BANKINFO.CE_VALIDATE_UNIQUE_ACCOUNT_NZ(X_ACCOUNT_NUMBER,
2479 X_CURRENCY_CODE,
2480 X_ACCOUNT_SUFFIX,
2481 X_ACCOUNT_NAME,
2482 X_BRANCH_ID,
2483 X_ACCOUNT_ID);
2484 ELSE
2485 IF l_DEBUG in ('Y', 'C') THEN
2486 cep_standard.debug('call CE_VALIDATE_BANKINFO.CE_VALIDATE_UNIQUE_ACCOUNT' );
2487 END IF;
2488 CE_VALIDATE_BANKINFO.CE_VALIDATE_UNIQUE_ACCOUNT(
2489 X_ACCOUNT_NUMBER,
2490 X_CURRENCY_CODE,
2491 X_ACCOUNT_NAME,
2492 X_BRANCH_ID,
2493 X_ACCOUNT_ID);
2494
2495 END IF;
2496
2497 IF l_DEBUG in ('Y', 'C') THEN
2501 FND_MSG_PUB.Count_And_Get(
2498 cep_standard.debug(' UNIQUE_VALIDATION CHECK for account end ');
2499 END IF;
2500
2502 p_encoded => FND_API.G_FALSE,
2503 p_count => x_msg_count,
2504 p_data => x_msg_data);
2505
2506 IF x_msg_count > 0 THEN
2507 x_return_status := fnd_api.g_ret_sts_error;
2508 END IF;
2509
2510 IF l_DEBUG in ('Y', 'C') THEN
2511 cep_standard.debug('CE_VALIDATE_BANKINFO.upd_account_unique - P_COUNT: '|| x_msg_count||
2512 --'CE_VALIDATE_BANKINFO.upd_account_unique - P_DATA: '|| x_msg_data||
2513 ', X_VALUE_OUT: '|| X_VALUE_OUT||
2514 '<<CE_VALIDATE_BANKINFO.upd_account_unique');
2515 END IF;
2516 EXCEPTION
2517 WHEN OTHERS THEN
2518
2519 IF l_DEBUG in ('Y', 'C') THEN
2520 cep_standard.debug('CE_VALIDATE_BANKINFO.upd_account_unique ' ||X_COUNTRY_NAME );
2521 END IF;
2522 FND_MESSAGE.set_name('CE', 'CE_UNHANDLED_EXCEPTION');
2523 fnd_message.set_token('PROCEDURE', 'CE_VALIDATE_BANKINFO.upd_account_unique');
2524 fnd_msg_pub.add;
2525 RAISE;
2526
2527 END UPD_ACCOUNT_UNIQUE;
2528
2529
2530 /* -------------------------------------------------------------------
2531 | PUBLIC PROCEDURE |
2532 | UPD_ACCOUNT_VALIDATE |
2533 | Description: Country specific Bank Account validation |
2534 | that does not include the uniqueness validations |
2535 | Usage: Called in update flow due to the Upgrade changes |
2536 | errors found in this API are treated as warnings |
2537 | Calls: CE_VALIDATE_ACCOUNT_* |
2538 --------------------------------------------------------------------- */
2539 PROCEDURE UPD_ACCOUNT_VALIDATE
2540 (X_COUNTRY_NAME IN varchar2,
2541 X_BANK_NUMBER IN varchar2,
2542 X_BRANCH_NUMBER IN varchar2,
2543 X_ACCOUNT_NUMBER IN varchar2,
2544 X_BANK_ID IN number,
2545 X_BRANCH_ID IN number,
2546 X_ACCOUNT_ID IN number,
2547 X_CURRENCY_CODE IN varchar2,
2548 X_ACCOUNT_TYPE IN varchar2,
2549 X_ACCOUNT_SUFFIX IN varchar2,
2550 X_SECONDARY_ACCOUNT_REFERENCE IN varchar2,
2551 X_ACCOUNT_NAME IN varchar2,
2552 p_init_msg_list IN VARCHAR2,
2553 x_msg_count OUT NOCOPY NUMBER,
2554 x_msg_data OUT NOCOPY VARCHAR2,
2555 X_VALUE_OUT OUT NOCOPY varchar2,
2556 x_return_status IN OUT NOCOPY VARCHAR2,
2557 X_ACCOUNT_CLASSIFICATION IN VARCHAR2 DEFAULT NULL,
2558 X_CD IN varchar2 DEFAULT NULL,
2559 X_ELECTRONIC_ACCT_NUM OUT NOCOPY varchar2) AS
2560
2561 COUNTRY_NAME VARCHAR2(2);
2562
2563 X_PASS_MAND_CHECK VARCHAR2(1);
2564 NEW_ACCOUNT_NUM VARCHAR2(100);
2565
2566 BEGIN
2567 l_DEBUG := NVL(FND_PROFILE.value('CE_DEBUG'), 'N');
2568 --l_DEBUG := 'Y';
2569
2570 IF l_DEBUG in ('Y', 'C') THEN
2571 cep_standard.debug('>>CE_VALIDATE_BANKINFO.upd_account_validate');
2572 END IF;
2573 -- initialize API return status to success.
2574 x_return_status := fnd_api.g_ret_sts_success;
2575
2576 COUNTRY_NAME := X_COUNTRY_NAME;
2577 X_VALUE_OUT := X_ACCOUNT_NUMBER;
2578 X_ELECTRONIC_ACCT_NUM := X_ACCOUNT_NUMBER;
2579
2580 IF l_DEBUG in ('Y', 'C') THEN
2581 cep_standard.debug('CE_VALIDATE_BANKINFO.upd_account_validate - COUNTRY_NAME: '|| COUNTRY_NAME||
2582 ', X_VALUE_OUT: '|| X_VALUE_OUT);
2583 END IF;
2584
2585 -- Initialize message list if p_init_msg_list is set to TRUE.
2586 --IF FND_API.to_Boolean(p_init_msg_list) THEN
2587 FND_MSG_PUB.initialize;
2588 --END IF;
2589
2590 IF l_DEBUG in ('Y', 'C') THEN
2591 cep_standard.debug('CE_VALIDATE_BANKINFO.upd_account_validate - P_INIT_MSG_LIST: '|| P_INIT_MSG_LIST);
2592 END IF;
2593
2594 /* We must validate the Bank Account Number */
2595
2596 IF X_ACCOUNT_NUMBER is null then
2597 X_PASS_MAND_CHECK := 'F';
2598 ELSE
2599 X_PASS_MAND_CHECK := 'P';
2600 END IF;
2601
2602 IF (COUNTRY_NAME = 'AT')
2603 then
2604 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_AT(X_ACCOUNT_NUMBER,
2605 X_PASS_MAND_CHECK,
2606 X_VALUE_OUT);
2607
2608 ELSIF (COUNTRY_NAME = 'DK')
2609 then
2610 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_DK(X_ACCOUNT_NUMBER,
2611 X_PASS_MAND_CHECK,
2612 X_VALUE_OUT);
2613
2614 ELSIF (COUNTRY_NAME = 'NO')
2615 then
2616 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_NO(X_ACCOUNT_NUMBER,
2617 X_PASS_MAND_CHECK);
2618
2619 ELSIF (COUNTRY_NAME = 'ES')
2620 then
2621
2625
2622 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_ES(X_ACCOUNT_NUMBER,
2623 X_PASS_MAND_CHECK,
2624 X_VALUE_OUT);
2626 ELSIF (COUNTRY_NAME = 'NL')
2627 then
2628
2629 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_NL(X_ACCOUNT_NUMBER,
2630 X_PASS_MAND_CHECK);
2631
2632 ELSIF (COUNTRY_NAME = 'FR')
2633 then
2634
2635 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_FR(X_ACCOUNT_NUMBER,
2636 X_PASS_MAND_CHECK,
2637 X_VALUE_OUT);
2638
2639
2640 ELSIF (COUNTRY_NAME = 'BE')
2641 then
2642
2643 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_BE(X_ACCOUNT_NUMBER,
2644 X_PASS_MAND_CHECK);
2645
2646
2647 ELSIF (COUNTRY_NAME = 'PT')
2648 then
2649
2650 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_PT(X_ACCOUNT_NUMBER,
2651 X_PASS_MAND_CHECK,
2652 X_VALUE_OUT);
2653
2654 ELSIF (COUNTRY_NAME = 'FI')
2655 AND (X_BRANCH_NUMBER='LMP')
2656 then
2657
2658 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_FI(X_ACCOUNT_NUMBER,
2659 X_PASS_MAND_CHECK);
2660
2661 -- added 5/14/02
2662
2663 ELSIF (COUNTRY_NAME = 'DE')
2664 then
2665
2666 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_DE(X_ACCOUNT_NUMBER,
2667 X_VALUE_OUT );
2668
2669 ELSIF (COUNTRY_NAME = 'GR')
2670 then
2671
2672 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_GR(X_ACCOUNT_NUMBER,
2673 X_VALUE_OUT);
2674
2675 ELSIF (COUNTRY_NAME = 'IS')
2676 then
2677
2678 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_IS(X_ACCOUNT_NUMBER,
2679 X_VALUE_OUT );
2680
2681 ELSIF (COUNTRY_NAME = 'IE')
2682 then
2683
2684 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_IE(X_ACCOUNT_NUMBER);
2685
2686 ELSIF (COUNTRY_NAME = 'IT')
2687 then
2688 IF l_DEBUG in ('Y', 'C') THEN
2689 cep_standard.debug('X_ACCOUNT_NUMBER : '|| X_ACCOUNT_NUMBER||
2690 ', X_VALUE_OUT : '|| X_VALUE_OUT);
2691 END IF;
2692
2693 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_IT(X_ACCOUNT_NUMBER,
2694 X_VALUE_OUT);
2695
2696 ELSIF (COUNTRY_NAME = 'LU')
2697 then
2698
2699 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_LU(X_ACCOUNT_NUMBER);
2700
2701
2702 ELSIF (COUNTRY_NAME = 'PL')
2703 then
2704
2705 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_PL(X_ACCOUNT_NUMBER);
2706
2707
2708 ELSIF (COUNTRY_NAME = 'SE')
2709 then
2710
2711 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_SE(X_ACCOUNT_NUMBER);
2712
2713 ELSIF (COUNTRY_NAME = 'CH')
2714 then
2715
2716 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_CH(X_ACCOUNT_NUMBER,
2717 X_ACCOUNT_TYPE );
2718
2719 ELSIF (COUNTRY_NAME = 'GB')
2720 then
2721
2722 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_GB(X_ACCOUNT_NUMBER,
2723 X_VALUE_OUT);
2724
2725 ELSIF (COUNTRY_NAME = 'BR')
2726 then
2727
2728 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_BR(X_ACCOUNT_NUMBER,
2729 X_SECONDARY_ACCOUNT_REFERENCE);
2730
2731 -- added 10/19/04
2732 ELSIF (COUNTRY_NAME = 'AU')
2733 then
2734
2735 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_AU(X_ACCOUNT_NUMBER,X_CURRENCY_CODE);
2736
2737 ELSIF (COUNTRY_NAME = 'IL')
2738 then
2739
2740 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_IL(X_ACCOUNT_NUMBER);
2741 ELSIF (COUNTRY_NAME = 'NZ')
2742 then
2743
2744 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_NZ(X_ACCOUNT_NUMBER,
2745 X_ACCOUNT_SUFFIX);
2746
2747 ELSIF (COUNTRY_NAME = 'JP')
2748 then
2749 CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_JP(X_ACCOUNT_NUMBER,
2750 X_ACCOUNT_TYPE );
2751 END IF; /** country account check **/
2752
2753
2754
2755 -- ER 3973203
2756 -- Format Electronic Bank Account Num (CE_BANK_ACCOUNTS.BANK_ACCOUNT_NUM_ELECTRONIC)
2757
2758 IF X_VALUE_OUT IS NOT NULL THEN
2759 NEW_ACCOUNT_NUM := X_VALUE_OUT;
2760 ELSE
2761 NEW_ACCOUNT_NUM := X_ACCOUNT_NUMBER;
2762
2763 END IF;
2764
2765 CE_FORMAT_ELECTRONIC_NUM(X_COUNTRY_NAME ,
2766 X_BANK_NUMBER ,
2767 X_BRANCH_NUMBER ,
2768 NEW_ACCOUNT_NUM ,
2769 X_CD,
2770 X_ACCOUNT_SUFFIX,
2771 X_SECONDARY_ACCOUNT_REFERENCE,
2772 X_ACCOUNT_CLASSIFICATION,
2773 X_ELECTRONIC_ACCT_NUM ,
2774 p_init_msg_list ,
2775 x_msg_count ,
2776 x_msg_data ,
2777 x_return_status );
2778
2779
2783 p_count => x_msg_count,
2780
2781 FND_MSG_PUB.Count_And_Get(
2782 p_encoded => FND_API.G_FALSE,
2784 p_data => x_msg_data);
2785
2786 IF x_msg_count > 0 THEN
2787 x_return_status := fnd_api.g_ret_sts_error;
2788 END IF;
2789
2790 IF l_DEBUG in ('Y', 'C') THEN
2791 cep_standard.debug('CE_VALIDATE_BANKINFO.upd_account_validate - P_COUNT: '|| x_msg_count||
2792 --'CE_VALIDATE_BANKINFO.upd_account_validate - P_DATA: '|| x_msg_data||
2793 ', X_VALUE_OUT: '|| X_VALUE_OUT||
2794 '<<CE_VALIDATE_BANKINFO.upd_account_validate');
2795 END IF;
2796 EXCEPTION
2797 WHEN OTHERS THEN
2798
2799 IF l_DEBUG in ('Y', 'C') THEN
2800 cep_standard.debug('CE_VALIDATE_BANKINFO.upd_account_validate ' ||X_COUNTRY_NAME );
2801 END IF;
2802 FND_MESSAGE.set_name('CE', 'CE_UNHANDLED_EXCEPTION');
2803 fnd_message.set_token('PROCEDURE', 'CE_VALIDATE_BANKINFO.upd_account_validate');
2804 fnd_msg_pub.add;
2805 RAISE;
2806 END UPD_ACCOUNT_VALIDATE;
2807
2808
2809 /* --------------------------------------------------------------------
2810 | PRIVATE PROCEDURE |
2811 | CE_VALIDATE_BANK |
2812 | |
2813 | CALLED BY |
2814 | OA - BANK INFORMATION PAGE |
2815 | |
2816 | CALLS |
2817 | CE_VALIDATE_BANK_* for each country |
2818 | CE_VALIDATE_UNIQUE_BANK_* for each country |
2819 --------------------------------------------------------------------- */
2820
2821
2822 PROCEDURE CE_VALIDATE_BANK( X_COUNTRY_NAME IN varchar2,
2823 X_BANK_NUMBER IN varchar2,
2824 X_BANK_NAME IN varchar2,
2825 X_BANK_NAME_ALT IN varchar2,
2826 X_TAX_PAYER_ID IN varchar2,
2827 X_BANK_ID IN NUMBER,
2828 p_init_msg_list IN VARCHAR2,
2829 x_msg_count OUT NOCOPY NUMBER,
2830 x_msg_data OUT NOCOPY VARCHAR2,
2831 X_VALUE_OUT OUT NOCOPY varchar2,
2832 x_return_status IN OUT NOCOPY VARCHAR2,
2833 X_ACCOUNT_CLASSIFICATION IN VARCHAR2 DEFAULT NULL) AS
2834
2835 COUNTRY_NAME VARCHAR2(2);
2836
2837 X_PASS_MAND_CHECK VARCHAR2(1);
2838
2839 BEGIN
2840 l_DEBUG := NVL(FND_PROFILE.value('CE_DEBUG'), 'N');
2841 --l_DEBUG := 'Y';
2842
2843 IF l_DEBUG in ('Y', 'C') THEN
2844 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_bank');
2845 END IF;
2846 -- initialize API return status to success.
2847 x_return_status := fnd_api.g_ret_sts_success;
2848
2849 COUNTRY_NAME := X_COUNTRY_NAME;
2850 X_VALUE_OUT := X_BANK_NUMBER;
2851
2852 IF l_DEBUG in ('Y', 'C') THEN
2853 cep_standard.debug('CE_VALIDATE_BANKINFO.ce_validate_bank - COUNTRY_NAME: '|| COUNTRY_NAME||
2854 ', X_VALUE_OUT: '|| X_VALUE_OUT);
2855 END IF;
2856
2857
2858 -- Initialize message list if p_init_msg_list is set to TRUE.
2859 IF FND_API.to_Boolean(p_init_msg_list) THEN
2860 FND_MSG_PUB.initialize;
2861 END IF;
2862
2863 IF l_DEBUG in ('Y', 'C') THEN
2864 cep_standard.debug('CE_VALIDATE_BANKINFO.ce_validate_bank - P_INIT_MSG_LIST: '|| P_INIT_MSG_LIST);
2865 END IF;
2866
2867 /* We must validate the Bank Number */
2868
2869 IF X_BANK_NUMBER is null then
2870 X_PASS_MAND_CHECK := 'F';
2871 ELSE
2872 X_PASS_MAND_CHECK := 'P';
2873 END IF;
2874
2875 IF l_DEBUG in ('Y', 'C') THEN
2876 cep_standard.debug('CE_VALIDATE_BANKINFO.ce_validate_bank - X_PASS_MAND_CHECK: '|| X_PASS_MAND_CHECK);
2877 END IF;
2878
2879 IF (COUNTRY_NAME = 'ES')
2880 then
2881 CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_ES(X_BANK_NUMBER,
2882 X_PASS_MAND_CHECK,
2883 X_VALUE_OUT);
2884
2885 ELSIF (COUNTRY_NAME = 'FR')
2886 then
2887 CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_FR(X_BANK_NUMBER,
2888 X_PASS_MAND_CHECK,
2889 X_VALUE_OUT);
2890
2891 ELSIF (COUNTRY_NAME = 'PT')
2892 then
2893 CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_PT(X_BANK_NUMBER,
2894 X_PASS_MAND_CHECK);
2895
2896 ELSIF (COUNTRY_NAME = 'BR')
2897 then
2898 CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_BR(X_BANK_NUMBER,
2899 X_PASS_MAND_CHECK,
2900 X_VALUE_OUT);
2901
2902 -- Added 5/14/02
2903
2904
2905 ELSIF (COUNTRY_NAME = 'DE')
2906 then
2907 CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_DE(X_BANK_NUMBER);
2908
2909 ELSIF (COUNTRY_NAME = 'GR')
2910 then
2911 CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_GR(X_BANK_NUMBER);
2912
2913 ELSIF (COUNTRY_NAME = 'IS')
2914 then
2918 ELSIF (COUNTRY_NAME = 'IE')
2915 CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_IS(X_BANK_NUMBER,
2916 X_VALUE_OUT);
2917
2919 then
2920 CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_IE(X_BANK_NUMBER);
2921
2922 ELSIF (COUNTRY_NAME = 'IT')
2923 then
2924 CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_IT(X_BANK_NUMBER,
2925 X_PASS_MAND_CHECK);
2926
2927 ELSIF (COUNTRY_NAME = 'LU')
2928 then
2929 CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_LU(X_BANK_NUMBER);
2930
2931
2932 ELSIF (COUNTRY_NAME = 'PL')
2933 then
2934 CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_PL(X_BANK_NUMBER);
2935
2936 ELSIF (COUNTRY_NAME = 'SE')
2937 then
2938 CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_SE(X_BANK_NUMBER);
2939
2940 ELSIF (COUNTRY_NAME = 'CH')
2941 then
2942 CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_CH(X_BANK_NUMBER);
2943
2944 ELSIF (COUNTRY_NAME = 'GB')
2945 then
2946 CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_GB(X_BANK_NUMBER);
2947
2948 ELSIF (COUNTRY_NAME = 'CO')
2949 then
2950 CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_CO(X_COUNTRY_NAME,
2951 X_BANK_NAME ,
2952 X_TAX_PAYER_ID);
2953
2954 -- Added 10/19/04
2955
2956 ELSIF (COUNTRY_NAME = 'AU')
2957 then
2958 CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_AU(X_BANK_NUMBER);
2959 ELSIF (COUNTRY_NAME = 'IL')
2960 then
2961 CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_IL(X_BANK_NUMBER,
2962 X_PASS_MAND_CHECK);
2963 ELSIF (COUNTRY_NAME = 'NZ')
2964 then
2965 CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_NZ(X_BANK_NUMBER,
2966 X_PASS_MAND_CHECK);
2967
2968 ELSIF (COUNTRY_NAME = 'JP')
2969 then
2970 CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_JP(X_BANK_NUMBER,
2971 X_BANK_NAME_ALT,
2972 X_PASS_MAND_CHECK);
2973
2974 END IF; /** country check for bank **/
2975
2976
2977 /** UNIQUE VALIDATION CHECK for bank **/
2978
2979 IF l_DEBUG in ('Y', 'C') THEN
2980 cep_standard.debug('UNIQUE VALIDATION CHECK for bank' );
2981 END IF;
2982
2983 IF (COUNTRY_NAME = 'JP') THEN
2984 IF l_DEBUG in ('Y', 'C') THEN
2985 cep_standard.debug('call CE_VALIDATE_BANKINFO.CE_VALIDATE_UNIQUE_BANK_JP' );
2986 END IF;
2987
2988 CE_VALIDATE_BANKINFO.CE_VALIDATE_UNIQUE_BANK_JP(X_COUNTRY_NAME,
2989 X_BANK_NUMBER ,
2990 X_BANK_NAME ,
2991 X_BANK_NAME_ALT,
2992 X_BANK_ID);
2993
2994 END IF; /** country unique check for bank **/
2995
2996 IF l_DEBUG in ('Y', 'C') THEN
2997 cep_standard.debug('CE_VALIDATE_CD: ' || 'UNIQUE VALIDATION CHECK for bank end' );
2998 END IF;
2999
3000 FND_MSG_PUB.Count_And_Get(
3001 p_encoded => FND_API.G_FALSE,
3002 p_count => x_msg_count,
3003 p_data => x_msg_data);
3004
3005 IF x_msg_count > 0 THEN
3006 x_return_status := fnd_api.g_ret_sts_error;
3007 END IF;
3008
3009 IF l_DEBUG in ('Y', 'C') THEN
3010 cep_standard.debug('CE_VALIDATE_BANKINFO.ce_validate_bank - P_COUNT: '|| x_msg_count||
3011 --'CE_VALIDATE_BANKINFO.ce_validate_bank - P_DATA: '|| x_msg_data||
3012 ', X_VALUE_OUT: '|| X_VALUE_OUT||
3013 '<<CE_VALIDATE_BANKINFO.ce_validate_bank');
3014 END IF;
3015 EXCEPTION
3016 WHEN OTHERS THEN
3017 IF l_DEBUG in ('Y', 'C') THEN
3018 cep_standard.debug('CE_VALIDATE_BANKINFO.ce_validate_bank ' ||X_COUNTRY_NAME );
3019 END IF;
3020
3021 FND_MESSAGE.set_name('CE', 'CE_UNHANDLED_EXCEPTION');
3022 fnd_message.set_token('PROCEDURE', 'CE_VALIDATE_BANKINFO.cd_validate_bank');
3023 fnd_msg_pub.add;
3024 RAISE;
3025
3026
3027 END CE_VALIDATE_BANK;
3028
3029
3030 /* -------------------------------------------------------------------
3031 | PUBLIC PROCEDURE |
3032 | UPD_BANK_UNIQUE |
3033 | Description: Bank uniqueness validation |
3034 | Usage: Called in update flow due to the Upgrade changes |
3035 | Calls: CE_VALIDATE_UNIQUE_BANK_* |
3036 --------------------------------------------------------------------- */
3037 PROCEDURE UPD_BANK_UNIQUE
3038 ( X_COUNTRY_NAME IN varchar2,
3039 X_BANK_NUMBER IN varchar2,
3040 X_BANK_NAME IN varchar2,
3041 X_BANK_NAME_ALT IN varchar2,
3042 X_TAX_PAYER_ID IN varchar2,
3043 X_BANK_ID IN NUMBER,
3044 p_init_msg_list IN VARCHAR2,
3045 x_msg_count OUT NOCOPY NUMBER,
3046 x_msg_data OUT NOCOPY VARCHAR2,
3047 X_VALUE_OUT OUT NOCOPY varchar2,
3048 x_return_status IN OUT NOCOPY VARCHAR2,
3052
3049 X_ACCOUNT_CLASSIFICATION IN VARCHAR2 DEFAULT NULL) AS
3050
3051 COUNTRY_NAME VARCHAR2(2);
3053 X_PASS_MAND_CHECK VARCHAR2(1);
3054
3055 BEGIN
3056 l_DEBUG := NVL(FND_PROFILE.value('CE_DEBUG'), 'N');
3057 --l_DEBUG := 'Y';
3058
3059 IF l_DEBUG in ('Y', 'C') THEN
3060 cep_standard.debug('>>CE_VALIDATE_BANKINFO.upd_bank_unique');
3061 END IF;
3062 -- initialize API return status to success.
3063 x_return_status := fnd_api.g_ret_sts_success;
3064
3065 COUNTRY_NAME := X_COUNTRY_NAME;
3066 X_VALUE_OUT := X_BANK_NUMBER;
3067
3068 IF l_DEBUG in ('Y', 'C') THEN
3069 cep_standard.debug('CE_VALIDATE_BANKINFO.ce_validate_bank - COUNTRY_NAME: '|| COUNTRY_NAME||
3070 ', X_VALUE_OUT: '|| X_VALUE_OUT);
3071 END IF;
3072
3073
3074 -- Initialize message list if p_init_msg_list is set to TRUE.
3075 IF FND_API.to_Boolean(p_init_msg_list) THEN
3076 FND_MSG_PUB.initialize;
3077 END IF;
3078
3079 IF l_DEBUG in ('Y', 'C') THEN
3080 cep_standard.debug('CE_VALIDATE_BANKINFO.ce_validate_bank - P_INIT_MSG_LIST: '|| P_INIT_MSG_LIST);
3081 END IF;
3082
3083 /** UNIQUE VALIDATION CHECK for bank **/
3084
3085 IF l_DEBUG in ('Y', 'C') THEN
3086 cep_standard.debug('UNIQUE VALIDATION CHECK for bank' );
3087 END IF;
3088
3089 IF (COUNTRY_NAME = 'JP') THEN
3090 IF l_DEBUG in ('Y', 'C') THEN
3091 cep_standard.debug('call CE_VALIDATE_BANKINFO.CE_VALIDATE_UNIQUE_BANK_JP' );
3092 END IF;
3093
3094 CE_VALIDATE_BANKINFO.CE_VALIDATE_UNIQUE_BANK_JP(X_COUNTRY_NAME,
3095 X_BANK_NUMBER ,
3096 X_BANK_NAME ,
3097 X_BANK_NAME_ALT,
3098 X_BANK_ID);
3099
3100 END IF; /** country unique check for bank **/
3101
3102 IF l_DEBUG in ('Y', 'C') THEN
3103 cep_standard.debug('CE_VALIDATE_CD: ' || 'UNIQUE VALIDATION CHECK for bank end' );
3104 END IF;
3105
3106 FND_MSG_PUB.Count_And_Get(
3107 p_encoded => FND_API.G_FALSE,
3108 p_count => x_msg_count,
3109 p_data => x_msg_data);
3110
3111 IF x_msg_count > 0 THEN
3112 x_return_status := fnd_api.g_ret_sts_error;
3113 END IF;
3114
3115 IF l_DEBUG in ('Y', 'C') THEN
3116 cep_standard.debug('CE_VALIDATE_BANKINFO.upd_bank_unique - P_COUNT: '|| x_msg_count||
3117 --'CE_VALIDATE_BANKINFO.upd_bank_unique - P_DATA: '|| x_msg_data||
3118 ', X_VALUE_OUT: '|| X_VALUE_OUT||
3119 '<<CE_VALIDATE_BANKINFO.upd_bank_unique');
3120 END IF;
3121 EXCEPTION
3122 WHEN OTHERS THEN
3123 IF l_DEBUG in ('Y', 'C') THEN
3124 cep_standard.debug('CE_VALIDATE_BANKINFO.upd_bank_unique ' ||X_COUNTRY_NAME );
3125 END IF;
3126
3127 FND_MESSAGE.set_name('CE', 'CE_UNHANDLED_EXCEPTION');
3128 fnd_message.set_token('PROCEDURE', 'CE_VALIDATE_BANKINFO.upd_bank_unique');
3129 fnd_msg_pub.add;
3130 RAISE;
3131
3132 END UPD_BANK_UNIQUE;
3133
3134
3135 /* -------------------------------------------------------------------
3136 | PUBLIC PROCEDURE |
3137 | UPD_BANK_VALIDATE |
3138 | Description: Country specific Bank validation that does not |
3139 | include the uniqueness validations |
3140 | Usage: Called in update flow due to the Upgrade changes |
3141 | errors found in this API are treated as warnings |
3142 | Calls: CE_VALIDATE_BANK_* |
3143 --------------------------------------------------------------------- */
3144 PROCEDURE UPD_BANK_VALIDATE
3145 ( X_COUNTRY_NAME IN varchar2,
3146 X_BANK_NUMBER IN varchar2,
3147 X_BANK_NAME IN varchar2,
3148 X_BANK_NAME_ALT IN varchar2,
3149 X_TAX_PAYER_ID IN varchar2,
3150 X_BANK_ID IN NUMBER,
3151 p_init_msg_list IN VARCHAR2,
3152 x_msg_count OUT NOCOPY NUMBER,
3153 x_msg_data OUT NOCOPY VARCHAR2,
3154 X_VALUE_OUT OUT NOCOPY varchar2,
3155 x_return_status IN OUT NOCOPY VARCHAR2,
3156 X_ACCOUNT_CLASSIFICATION IN VARCHAR2 DEFAULT NULL) AS
3157
3158 COUNTRY_NAME VARCHAR2(2);
3159
3160 X_PASS_MAND_CHECK VARCHAR2(1);
3161
3162 BEGIN
3163 l_DEBUG := NVL(FND_PROFILE.value('CE_DEBUG'), 'N');
3164 --l_DEBUG := 'Y';
3165
3166 IF l_DEBUG in ('Y', 'C') THEN
3167 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_bank');
3168 END IF;
3169 -- initialize API return status to success.
3170 x_return_status := fnd_api.g_ret_sts_success;
3171
3172 COUNTRY_NAME := X_COUNTRY_NAME;
3173 X_VALUE_OUT := X_BANK_NUMBER;
3174
3175 IF l_DEBUG in ('Y', 'C') THEN
3176 cep_standard.debug('CE_VALIDATE_BANKINFO.upd_bank_validate - COUNTRY_NAME: '|| COUNTRY_NAME||
3177 ', X_VALUE_OUT: '|| X_VALUE_OUT);
3178 END IF;
3179
3180
3184 END IF;
3181 -- Initialize message list if p_init_msg_list is set to TRUE.
3182 IF FND_API.to_Boolean(p_init_msg_list) THEN
3183 FND_MSG_PUB.initialize;
3185
3186 IF l_DEBUG in ('Y', 'C') THEN
3187 cep_standard.debug('CE_VALIDATE_BANKINFO.upd_bank_validate - P_INIT_MSG_LIST: '|| P_INIT_MSG_LIST);
3188 END IF;
3189
3190 /* We must validate the Bank Number */
3191
3192 IF X_BANK_NUMBER is null then
3193 X_PASS_MAND_CHECK := 'F';
3194 ELSE
3195 X_PASS_MAND_CHECK := 'P';
3196 END IF;
3197
3198 IF (COUNTRY_NAME = 'ES')
3199 then
3200 CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_ES(X_BANK_NUMBER,
3201 X_PASS_MAND_CHECK,
3202 X_VALUE_OUT);
3203
3204 ELSIF (COUNTRY_NAME = 'FR')
3205 then
3206 CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_FR(X_BANK_NUMBER,
3207 X_PASS_MAND_CHECK,
3208 X_VALUE_OUT);
3209
3210 ELSIF (COUNTRY_NAME = 'PT')
3211 then
3212 CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_PT(X_BANK_NUMBER,
3213 X_PASS_MAND_CHECK);
3214
3215 ELSIF (COUNTRY_NAME = 'BR')
3216 then
3217 CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_BR(X_BANK_NUMBER,
3218 X_PASS_MAND_CHECK,
3219 X_VALUE_OUT);
3220
3221 -- Added 5/14/02
3222
3223 ELSIF (COUNTRY_NAME = 'DE')
3224 then
3225 CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_DE(X_BANK_NUMBER);
3226
3227 ELSIF (COUNTRY_NAME = 'GR')
3228 then
3229 CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_GR(X_BANK_NUMBER);
3230
3231 ELSIF (COUNTRY_NAME = 'IS')
3232 then
3233 CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_IS(X_BANK_NUMBER,
3234 X_VALUE_OUT);
3235
3236 ELSIF (COUNTRY_NAME = 'IE')
3237 then
3238 CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_IE(X_BANK_NUMBER);
3239
3240 ELSIF (COUNTRY_NAME = 'IT')
3241 then
3242 CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_IT(X_BANK_NUMBER,
3243 X_PASS_MAND_CHECK);
3244
3245 ELSIF (COUNTRY_NAME = 'LU')
3246 then
3247 CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_LU(X_BANK_NUMBER);
3248
3249
3250 ELSIF (COUNTRY_NAME = 'PL')
3251 then
3252 CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_PL(X_BANK_NUMBER);
3253
3254 ELSIF (COUNTRY_NAME = 'SE')
3255 then
3256 CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_SE(X_BANK_NUMBER);
3257
3258 ELSIF (COUNTRY_NAME = 'CH')
3259 then
3260 CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_CH(X_BANK_NUMBER);
3261
3262 ELSIF (COUNTRY_NAME = 'GB')
3263 then
3264 CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_GB(X_BANK_NUMBER);
3265
3266 ELSIF (COUNTRY_NAME = 'CO')
3267 then
3268 CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_CO(X_COUNTRY_NAME,
3269 X_BANK_NAME ,
3270 X_TAX_PAYER_ID);
3271
3272 -- Added 10/19/04
3273
3274 ELSIF (COUNTRY_NAME = 'AU')
3275 then
3276 CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_AU(X_BANK_NUMBER);
3277 ELSIF (COUNTRY_NAME = 'IL')
3278 then
3279 CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_IL(X_BANK_NUMBER,
3280 X_PASS_MAND_CHECK);
3281 ELSIF (COUNTRY_NAME = 'NZ')
3282 then
3283 CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_NZ(X_BANK_NUMBER,
3284 X_PASS_MAND_CHECK);
3285
3286 ELSIF (COUNTRY_NAME = 'JP')
3287 then
3288 CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_JP(X_BANK_NUMBER,
3289 X_BANK_NAME_ALT,
3290 X_PASS_MAND_CHECK);
3291
3292 END IF; /** country check for bank **/
3293
3294 FND_MSG_PUB.Count_And_Get(
3295 p_encoded => FND_API.G_FALSE,
3296 p_count => x_msg_count,
3297 p_data => x_msg_data);
3298
3299 IF x_msg_count > 0 THEN
3300 x_return_status := fnd_api.g_ret_sts_error;
3301 END IF;
3302
3303 IF l_DEBUG in ('Y', 'C') THEN
3304 cep_standard.debug('CE_VALIDATE_BANKINFO.upd_bank_validate - P_COUNT: '|| x_msg_count||
3305 --'CE_VALIDATE_BANKINFO.upd_bank_validate - P_DATA: '|| x_msg_data||
3306 ', X_VALUE_OUT: '|| X_VALUE_OUT||
3307 '<<CE_VALIDATE_BANKINFO.upd_bank_validate');
3308 END IF;
3309 EXCEPTION
3310 WHEN OTHERS THEN
3311 IF l_DEBUG in ('Y', 'C') THEN
3312 cep_standard.debug('CE_VALIDATE_BANKINFO.upd_bank_validate' ||X_COUNTRY_NAME );
3313 END IF;
3314
3315 FND_MESSAGE.set_name('CE', 'CE_UNHANDLED_EXCEPTION');
3316 fnd_message.set_token('PROCEDURE', 'CE_VALIDATE_BANKINFO.upd_bank_validate');
3317 fnd_msg_pub.add;
3318 RAISE;
3319
3320 END UPD_BANK_VALIDATE;
3321
3322 /* --------------------------------------------------------------------
3323 | PRIVATE PROCEDURE |
3324 | CE_PASSED_CHECK |
3325 | |
3329 | CALLED BY |
3326 | DESCRIPTION |
3327 | This procedure is called when the validations are successful |
3328 | |
3330 | CE_VALIDATE_BANK_* for each country |
3331 | CE_VALIDATE_BRANCH_* for each country |
3332 | CE_VALIDATE_ACCOUNT_* for each country |
3333 | CE_VALIDATE_CD_* for each country |
3334 --------------------------------------------------------------------- */
3335 PROCEDURE CE_PASSED_CHECK (
3336 Xi_Field IN VARCHAR2,
3337 Xi_Country IN VARCHAR2
3338 ) AS
3339 BEGIN
3340 IF l_DEBUG in ('Y', 'C') THEN
3341 cep_standard.debug('CE_VALIDATE_'||xi_field
3342 ||'_'||xi_country||' : passed_check');
3343 END IF;
3344 END CE_PASSED_CHECK;
3345
3346 /* --------------------------------------------------------------------
3347 | PRIVATE PROCEDURE |
3348 | CE_FAILED_CHECK |
3349 | |
3350 | DESCRIPTION |
3351 | This procedure populates the FND message queue with the appropriate |
3352 | error message for any country-specific validation failure |
3353 | |
3354 | CALLED BY |
3355 | CE_VALIDATE_BANK_* for each country |
3356 | CE_VALIDATE_BRANCH_* for each country |
3357 | CE_VALIDATE_ACCOUNT_* for each country |
3358 | CE_VALIDATE_CD_* for each country |
3359 --------------------------------------------------------------------- */
3360 PROCEDURE CE_FAILED_CHECK (
3361 p_Field IN VARCHAR2,
3362 p_Error IN VARCHAR2,
3363 p_Token IN VARCHAR2 default NULL
3364 ) AS
3365
3366 field_token VARCHAR2(100) DEFAULT NULL;
3367 field_name VARCHAR2(100) DEFAULT NULL;
3368 mesg_name VARCHAR2(100) DEFAULT NULL;
3369 length_val VARCHAR2(100) DEFAULT NULL;
3370 BEGIN
3371 IF l_DEBUG in ('Y', 'C') THEN
3372 cep_standard.debug('>>CE_VALIDATE_BANKINFO.CE_FAILED_CHECK');
3373 END IF;
3374
3375 -- Setting the field name as per call --
3376 IF p_Field = 'ACCOUNT_NUM' THEN field_token := 'CE_TOKEN_ACCOUNT_NUM';
3377 ELSIF p_Field = 'ACCOUNT_SUFFIX' THEN field_token := 'CE_TOKEN_ACCOUNT_SUFFIX';
3378 ELSIF p_Field = 'BANK_NUM' THEN field_token := 'CE_TOKEN_BANK_NUM';
3379 ELSIF p_Field = 'BRANCH_NUM' THEN field_token := 'CE_TOKEN_BRANCH_NUM';
3380 ELSIF p_Field = 'CHECK_DIGIT' THEN field_token := 'CE_TOKEN_CHECK_DIGIT';
3381 ELSIF p_Field = 'COMPANY_CODE' THEN field_token := 'CE_TOKEN_COMPANY_CODE';
3382 ELSIF p_Field = 'TAX_PAYER_ID' THEN field_token := 'CE_TOKEN_TAX_PAYER_ID';
3383 ELSIF p_Field = 'ROUTE_NUM' THEN field_token := 'CE_TOKEN_BRANCH_NUM_US';
3384 END IF;
3385 -- Get field name from values stored in FND_NEW_MESSAGES --
3386 field_name := fnd_message.get_string('CE',field_token);
3387
3388 -- Setting the error message name as per call --
3389 IF p_Error = 'LENGTH' THEN mesg_name := 'CE_FIELD_INVALID_LEN';
3390 ELSIF p_Error = 'LENGTH_MAX' THEN mesg_name := 'CE_FIELD_INVALID_MAX_LEN';
3391 ELSIF p_Error = 'LENGTH_MIN' THEN mesg_name := 'CE_FIELD_INVALID_MIN_LEN';
3392 ELSIF p_Error = 'NUMERIC' THEN mesg_name := 'CE_FIELD_INVALID_NUMERIC';
3393 ELSIF p_Error = 'CD_FAILED' THEN mesg_name := 'CE_FIELD_FAILED_VAL';
3394 ELSIF p_Error = 'POST_GIRO' THEN mesg_name := 'CE_FIELD_INVALID_PG';
3395 ELSIF p_Error = 'INVALID_FORMAT' THEN mesg_name := 'CE_FIELD_INVALID_FORMAT';
3396 ELSIF p_Error = 'INVALID_RTN' THEN mesg_name := 'CE_FIELD_INVALID_RTN';
3397 END IF;
3398
3399 -- set the value for the tokens and add message to FND_MSG_PUB --
3400 FND_MESSAGE.set_name('CE', mesg_name);
3401 FND_MESSAGE.set_token('FIELD', field_name, true);
3402
3403 -- For length related errors, need to populate the VALUE token --
3404 IF p_Token IS NOT NULL
3405 THEN
3406 -- get the number for VALUE token from lookups
3407 BEGIN
3408 SELECT meaning
3409 INTO length_val
3410 FROM fnd_lookup_values_vl
3411 WHERE lookup_type = 'NUMBERS'
3412 AND lookup_code = p_Token;
3413 EXCEPTION
3414 WHEN NO_DATA_FOUND THEN
3415 length_val := NULL;
3416 END;
3417 -- set the token --
3418 FND_MESSAGE.set_token('VALUE', length_val, true);
3419 END IF;
3420
3421 -- populate the message queue
3422 FND_MSG_PUB.add;
3423
3424 IF l_DEBUG in ('Y', 'C') THEN
3425 cep_standard.debug('<<CE_VALIDATE_BANKINFO.CE_FAILED_CHECK');
3426 END IF;
3427 END CE_FAILED_CHECK;
3428
3429 /* --------------------------------------------------------------------
3433 | DESCRIPTION |
3430 | PRIVATE PROCEDURE |
3431 | CE_FAILED_MANDATORY |
3432 | |
3434 | This procedure populates the FND message queue with the appropriate |
3435 | error message for any country-specific validation field value not |
3436 | entered. |
3437 | |
3438 | CALLED BY |
3439 | CE_VALIDATE_BANK_* for each country |
3440 | CE_VALIDATE_BRANCH_* for each country |
3441 | CE_VALIDATE_ACCOUNT_* for each country |
3442 | CE_VALIDATE_CD_* for each country |
3443 --------------------------------------------------------------------- */
3444 PROCEDURE CE_FAILED_MANDATORY (
3445 p_Field IN VARCHAR2
3446 ) AS
3447
3448 mesg_name VARCHAR2(30);
3449
3450 BEGIN
3451 IF l_DEBUG in ('Y', 'C') THEN
3452 cep_standard.debug('>>CE_VALIDATE_BANKINFO.CE_FAILED_MANDATORY');
3453 END IF;
3454
3455 IF p_Field = 'BANK_NUM' THEN mesg_name := 'CE_ENTER_BANK_NUM';
3456 ELSIF p_Field = 'BRANCH_NUM' THEN mesg_name := 'CE_ENTER_BRANCH_NUM';
3457 ELSIF p_Field = 'TAX_PAYER_ID' THEN mesg_name := 'CE_ENTER_TAX_PAYER_ID';
3458 ELSIF p_Field = 'BRANCH_NAME_ALT' THEN mesg_name := 'CE_ENTER_BRANCH_NAME_ALT';
3459 ELSIF p_Field = 'BANK_NAME_ALT' THEN mesg_name := 'CE_ENTER_BANK_NAME_ALT';
3460 ELSIF p_Field = 'ACCOUNT_TYPE' THEN mesg_name := 'CE_ENTER_ACCOUNT_TYPE';
3461 ELSIF p_Field = 'ACCOUNT_SUFFIX' THEN mesg_name := 'CE_ENTER_ACCOUNT_SUFFIX';
3462 END IF;
3463
3464 FND_MESSAGE.set_name('CE', mesg_name);
3465 FND_MSG_PUB.add;
3466
3467 IF l_DEBUG in ('Y', 'C') THEN
3468 cep_standard.debug('<<CE_VALIDATE_BANKINFO.CE_FAILED_MANDATORY');
3469 END IF;
3470 END CE_FAILED_MANDATORY;
3471
3472 /* --------------------------------------------------------------------
3473 | PRIVATE PROCEDURE |
3474 | CE_VALIDATE_CD_* |
3475 | |
3476 | CALLED BY |
3477 | CE_VALIDATE_CD |
3478 | |
3479 | DESCRIPTION |
3480 | Check Digit PROCEDURES, Validations 1 or more of the following: |
3481 | 1. Check Digit length |
3482 | 2. Check Digit Composition |
3483 | 2. Check Digit Algorithm |
3484 | |
3485 --------------------------------------------------------------------- */
3486
3487 /* ---------------------------------------------------------------------
3488 | CD Validation: PORTUGAL |
3489 ----------------------------------------------------------------------*/
3490 PROCEDURE CE_VALIDATE_CD_PT(
3491 Xi_CD in varchar2,
3492 Xi_PASS_MAND_CHECK in varchar2,
3493 Xi_X_BANK_NUMBER in varchar2,
3494 Xi_X_BRANCH_NUMBER in varchar2,
3495 Xi_X_ACCOUNT_NUMBER in varchar2
3496 ) AS
3497
3498 numeric_result_cd VARCHAR2(40);
3499 cal_cd NUMBER(10);
3500 CONCED_NUMBER VARCHAR2(30);
3501 cd_value VARCHAR2(20);
3502 bk_value VARCHAR2(30);
3503 ac_value VARCHAR2(30);
3504 br_value VARCHAR2(30);
3505
3506 BEGIN
3507 IF l_DEBUG in ('Y', 'C') THEN
3508 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_cd_pt');
3509 END IF;
3510
3511 CD_VALUE := upper(replace(Xi_CD,' ',''));
3512 bk_value := upper(replace(replace(Xi_X_BANK_NUMBER,' ',''),'-',''));
3513 br_value := upper(replace(replace(Xi_X_BRANCH_NUMBER,' ',''),'-',''));
3514 ac_value := upper(replace(replace(Xi_X_ACCOUNT_NUMBER,' ',''),'-',''));
3515
3516 IF length(CD_VALUE) = 2
3517 THEN /* length is ok */
3518 numeric_result_cd := ce_check_numeric(CD_VALUE,1,length(CD_VALUE));
3519 IF numeric_result_cd = '0'
3520 THEN /* its numeric so continue */
3521 CONCED_NUMBER := bk_value||br_value||ac_value||CD_VALUE;
3522 cal_cd := 98 - mod(( (to_number(substr(CONCED_NUMBER,19,1)) * 3)
3523 + (to_number(substr(CONCED_NUMBER,18,1)) * 30)
3524 + (to_number(substr(CONCED_NUMBER,17,1)) * 9)
3525 + (to_number(substr(CONCED_NUMBER,16,1)) * 90)
3526 + (to_number(substr(CONCED_NUMBER,15,1)) * 27)
3527 + (to_number(substr(CONCED_NUMBER,14,1)) * 76)
3528 + (to_number(substr(CONCED_NUMBER,13,1)) * 81)
3529 + (to_number(substr(CONCED_NUMBER,12,1)) * 34)
3533 + (to_number(substr(CONCED_NUMBER,8,1)) * 15)
3530 + (to_number(substr(CONCED_NUMBER,11,1)) * 49)
3531 + (to_number(substr(CONCED_NUMBER,10,1)) * 5)
3532 + (to_number(substr(CONCED_NUMBER,9,1)) * 50)
3534 + (to_number(substr(CONCED_NUMBER,7,1)) * 53)
3535 + (to_number(substr(CONCED_NUMBER,6,1)) * 45)
3536 + (to_number(substr(CONCED_NUMBER,5,1)) * 62)
3537 + (to_number(substr(CONCED_NUMBER,4,1)) * 38)
3538 + (to_number(substr(CONCED_NUMBER,3,1)) * 89)
3539 + (to_number(substr(CONCED_NUMBER,2,1)) * 17)
3540 + (to_number(substr(CONCED_NUMBER,1,1)) * 73)),97);
3541
3542 IF CD_VALUE = cal_cd
3543 THEN
3544 ce_passed_check('CD','PT');
3545 ElSE
3546 ce_failed_check('CHECK_DIGIT','CD_FAILED');
3547 END IF; /* end of validation check */
3548
3549 ELSE
3550 ce_failed_check('CHECK_DIGIT','NUMERIC');
3551 END IF; /* end of numeric check */
3552 ELSE
3553 ce_failed_check('CHECK_DIGIT','LENGTH','2');
3554 END IF; /* end of length check */
3555
3556 IF l_DEBUG in ('Y', 'C') THEN
3557 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_cd_pt');
3558 END IF;
3559 END CE_VALIDATE_CD_PT;
3560
3561
3562 /* ---------------------------------------------------------------------
3563 | CD Validation: SPAIN |
3564 ----------------------------------------------------------------------*/
3565 PROCEDURE CE_VALIDATE_CD_ES(
3566 Xi_CD in varchar2,
3567 Xi_PASS_MAND_CHECK in varchar2,
3568 Xi_X_BANK_NUMBER in varchar2,
3569 Xi_X_BRANCH_NUMBER in varchar2,
3570 Xi_X_ACCOUNT_NUMBER in varchar2
3571 ) AS
3572
3573 numeric_result_cd VARCHAR2(40);
3574 cd_1 NUMBER(10);
3575 cd_2 NUMBER(10);
3576 cd_value VARCHAR2(20);
3577 bk_value VARCHAR2(30);
3578 ac_value VARCHAR2(30);
3579 br_value VARCHAR2(30);
3580
3581 BEGIN
3582 IF l_DEBUG in ('Y', 'C') THEN
3583 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_cd_es');
3584 END IF;
3585
3586 CD_VALUE := upper(Xi_CD);
3587 bk_value := upper(replace(replace(Xi_X_BANK_NUMBER,' ',''),'-',''));
3588 br_value := upper(replace(replace(Xi_X_BRANCH_NUMBER,' ',''),'-',''));
3589 ac_value := upper(replace(replace(Xi_X_ACCOUNT_NUMBER,' ',''),'-',''));
3590
3591 --Bug 7184848: Fixed value numeric_result_cd not being fixed.
3592 numeric_result_cd := ce_check_numeric(CD_VALUE,1,length(CD_VALUE));
3593 IF numeric_result_cd = '0'
3594 THEN /* its numeric so continue */
3595 cd_1 := 11 - mod(((to_number(substr(Xi_X_BANK_NUMBER,1,1)) * 4)
3596 + (to_number(substr(Xi_X_BANK_NUMBER,2,1)) * 8)
3597 + (to_number(substr(Xi_X_BANK_NUMBER,3,1)) * 5)
3598 + (to_number(substr(Xi_X_BANK_NUMBER,4,1)) * 10)
3599 + (to_number(substr(Xi_X_BRANCH_NUMBER,1,1)) * 9)
3600 + (to_number(substr(Xi_X_BRANCH_NUMBER,2,1)) * 7)
3601 + (to_number(substr(Xi_X_BRANCH_NUMBER,3,1)) * 3)
3602 + (to_number(substr(Xi_X_BRANCH_NUMBER,4,1)) * 6)),11);
3603
3604 IF (cd_1 = 10) THEN
3605 cd_1 := 1;
3606 ELSIF (cd_1 = 11) THEN
3607 cd_1 := 0;
3608 END IF;
3609
3610 cd_2 := 11 - mod(((to_number(substr(Xi_X_ACCOUNT_NUMBER,1,1)) * 1)
3611 + (to_number(substr(Xi_X_ACCOUNT_NUMBER,2,1)) * 2)
3612 + (to_number(substr(Xi_X_ACCOUNT_NUMBER,3,1)) * 4)
3613 + (to_number(substr(Xi_X_ACCOUNT_NUMBER,4,1)) * 8)
3614 + (to_number(substr(Xi_X_ACCOUNT_NUMBER,5,1)) * 5)
3615 + (to_number(substr(Xi_X_ACCOUNT_NUMBER,6,1)) * 10)
3616 + (to_number(substr(Xi_X_ACCOUNT_NUMBER,7,1)) * 9)
3617 + (to_number(substr(Xi_X_ACCOUNT_NUMBER,8,1)) * 7)
3618 + (to_number(substr(Xi_X_ACCOUNT_NUMBER,9,1)) * 3)
3619 + (to_number(substr(Xi_X_ACCOUNT_NUMBER,10,1)) * 6)),11);
3620
3621 IF (cd_2 = 10) THEN
3622 cd_2 := 1;
3623 ELSIF (cd_2 = 11) THEN
3624 cd_2 := 0;
3625 END IF;
3626
3627 IF (cd_1 = substr(CD_VALUE,1,1) AND cd_2 = substr(CD_VALUE,2,1))
3628 OR (CD_VALUE = '00')
3629 THEN /* check digit checks out */
3630 ce_passed_check('CD','ES');
3631 ELSE
3632 ce_failed_check('CHECK_DIGIT','CD_FAILED');
3633 END IF; /* end of check digit validation */
3634
3635 ELSE
3636 ce_failed_check('CHECK_DIGIT','NUMERIC');
3637 END IF; /* end of numeric check */
3638
3639 IF l_DEBUG in ('Y', 'C') THEN
3640 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_cd_es');
3641 END IF;
3642 END CE_VALIDATE_CD_ES;
3643
3644 /* ---------------------------------------------------------------------
3645 | CD Validation: FRANCE |
3649 Xi_PASS_MAND_CHECK in varchar2,
3646 ----------------------------------------------------------------------*/
3647 PROCEDURE CE_VALIDATE_CD_FR(
3648 Xi_CD in varchar2,
3650 Xi_X_BANK_NUMBER in varchar2,
3651 Xi_X_BRANCH_NUMBER in varchar2,
3652 Xi_X_ACCOUNT_NUMBER in varchar2
3653 ) AS
3654 numeric_result_bk varchar2(40);
3655 numeric_result_br varchar2(40);
3656 numeric_result_cd varchar2(40);
3657 numeric_result_ac varchar2(40);
3658 calc_value number(30);
3659 cd_value varchar2(20);
3660 bk_value varchar2(30);
3661 ac_value varchar2(30);
3662 br_value varchar2(30);
3663
3664
3665 BEGIN
3666 IF l_DEBUG in ('Y', 'C') THEN
3667 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_cd_fr');
3668 END IF;
3669
3670 CD_VALUE := upper(Xi_CD);
3671 bk_value := replace(replace(upper(Xi_X_BANK_NUMBER),' ',''),'-','');
3672 br_value := replace(replace(upper(Xi_X_BRANCH_NUMBER),' ',''),'-','');
3673 ac_value := translate(upper(Xi_X_ACCOUNT_NUMBER) ,
3674 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
3675 '12345678912345678923456789');
3676 ac_value := replace(replace(ac_value,' ',''),'-','');
3677
3678 IF length(CD_VALUE) = 2
3679 THEN /* length is ok */
3680 numeric_result_cd := ce_check_numeric(CD_VALUE,1,length(CD_VALUE));
3681 IF numeric_result_cd = '0'
3682 THEN
3683 /* its numeric so continue */
3684 calc_value := mod(to_number(bk_value||br_value||ac_value||cd_value),97);
3685 IF calc_value = 0
3686 THEN
3687 ce_passed_check('CD','FR');
3688 ELSE
3689 ce_failed_check('CHECK_DIGIT','CD_FAILED');
3690 END IF; /* end of check digit validation */
3691 ELSE
3692 ce_failed_check('CHECK_DIGIT','NUMERIC');
3693 END IF; /* end of numeric check */
3694 ELSE
3695 ce_failed_check('CHECK_DIGIT','LENGTH','2');
3696 END IF; /* end of length check */
3697
3698 IF l_DEBUG in ('Y', 'C') THEN
3699 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_cd_fr');
3700 END IF;
3701
3702 END CE_VALIDATE_CD_FR;
3703
3704 /* ---------------------------------------------------------------------
3705 | CD Validation: GERMANY |
3706 ----------------------------------------------------------------------*/
3707 PROCEDURE CE_VALIDATE_CD_DE(
3708 Xi_CD in varchar2,
3709 Xi_X_ACCOUNT_NUMBER in varchar2
3710 ) AS
3711 numeric_result_cd VARCHAR2(40);
3712 ret_value BOOLEAN;
3713 cd_value VARCHAR2(50);
3714 ac_value VARCHAR2(50);
3715
3716 BEGIN
3717 IF l_DEBUG in ('Y', 'C') THEN
3718 cep_standard.debug('>>CE_VALIDATE_BANKINFO.CE_VALIDATE_CD_DE');
3719 END IF;
3720
3721 cd_value := upper(Xi_CD);
3722
3723 IF (cd_value IS NOT NULL)
3724 THEN /* only validate if a value has been entered */
3725 IF length(cd_value) = 1
3726 THEN /* length is ok */
3727 numeric_result_cd := ce_check_numeric(CD_VALUE,1,length(CD_VALUE));
3728 IF numeric_result_cd = '0'
3729 THEN
3730 /*it is numeric so continue*/
3731 -- compare CD with account number --
3732 ac_value := upper(replace(Xi_X_ACCOUNT_NUMBER,' ',''));
3733 ac_value := upper(replace(ac_value,'-',''));
3734 ret_value := compare_account_num_and_cd(ac_value,cd_value,1,0);
3735 ELSE
3736 ce_failed_check('CHECK_DIGIT','NUMERIC');
3737 END IF; /* end of numeric check */
3738 ELSE
3739 ce_failed_check('CHECK_DIGIT','LENGTH','1');
3740 END IF; /* end of length check */
3741 END IF;
3742
3743 IF l_DEBUG in ('Y', 'C') THEN
3744 cep_standard.debug('<<CE_VALIDATE_BANKINFO.CE_VALIDATE_CD_DE');
3745 END IF;
3746 END CE_VALIDATE_CD_DE;
3747
3748
3749 /* ---------------------------------------------------------------------
3750 | CD Validation: GREECE |
3751 ----------------------------------------------------------------------*/
3752 procedure CE_VALIDATE_CD_GR(
3753 Xi_CD in varchar2,
3754 Xi_PASS_MAND_CHECK in varchar2,
3755 Xi_X_BANK_NUMBER in varchar2,
3756 Xi_X_BRANCH_NUMBER in varchar2,
3757 Xi_X_ACCOUNT_NUMBER in varchar2
3758 ) AS
3759
3760 numeric_result_cd VARCHAR2(40);
3761 calc_value NUMBER(30);
3762 cd_value VARCHAR2(20);
3763
3764 BEGIN
3765 IF l_DEBUG in ('Y', 'C') THEN
3766 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_cd_gr');
3767 END IF;
3768
3769 CD_VALUE := upper(Xi_CD);
3770 IF length(CD_VALUE) = 1
3771 THEN /* length is ok */
3772 numeric_result_cd := ce_check_numeric(CD_VALUE,1,length(CD_VALUE));
3773 IF numeric_result_cd = '0'
3774 THEN
3775 ce_passed_check('CD','GR');
3776 ELSE
3780 ce_failed_check('CHECK_DIGIT','LENGTH','1');
3777 ce_failed_check('CHECK_DIGIT','NUMERIC');
3778 END IF; /* end of numeric check */
3779 ELSE
3781 END IF; /* end of length check */
3782
3783 IF l_DEBUG in ('Y', 'C') THEN
3784 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_cd_gr');
3785 END IF;
3786 END CE_VALIDATE_CD_GR;
3787
3788 /* ---------------------------------------------------------------------
3789 | CD Validation: ICELAND |
3790 ----------------------------------------------------------------------*/
3791 PROCEDURE CE_VALIDATE_CD_IS(
3792 Xi_CD in varchar2,
3793 Xi_X_ACCOUNT_NUMBER in varchar2
3794 ) AS
3795
3796 numeric_result_cd VARCHAR2(50);
3797 ret_val BOOLEAN;
3798 cd_value VARCHAR2(50);
3799 ac_value VARCHAR2(50);
3800
3801 BEGIN
3802 IF l_DEBUG in ('Y', 'C') THEN
3803 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_cd_is');
3804 END IF;
3805
3806 CD_VALUE := upper(replace(Xi_CD,' ',''));
3807 ac_value := upper(replace(Xi_X_ACCOUNT_NUMBER,' ',''));
3808 ac_value := upper(replace(ac_value,'-',''));
3809
3810 IF length(CD_VALUE) = 1
3811 THEN /* length is ok */
3812 numeric_result_cd := ce_check_numeric(CD_VALUE,1,length(CD_VALUE));
3813 IF numeric_result_cd = '0'
3814 THEN /* it is numeric so continue */
3815 ret_val := compare_account_num_and_cd(ac_value, CD_VALUE, 1,1);
3816 ELSE
3817 ce_failed_check('CHECK_DIGIT','NUMERIC');
3818 END IF; /* end of numeric check */
3819 ELSE
3820 ce_failed_check('CHECK_DIGIT','LENGTH','1');
3821 END IF; /* end of length check */
3822
3823 IF l_DEBUG in ('Y', 'C') THEN
3824 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_cd_is');
3825 END IF;
3826 END CE_VALIDATE_CD_IS;
3827
3828 /* ---------------------------------------------------------------------
3829 | CD Validation: ITALY |
3830 ----------------------------------------------------------------------*/
3831 PROCEDURE CE_VALIDATE_CD_IT(
3832 Xi_CD in varchar2,
3833 Xi_PASS_MAND_CHECK in varchar2,
3834 Xi_X_BANK_NUMBER in varchar2,
3835 Xi_X_BRANCH_NUMBER in varchar2,
3836 Xi_X_ACCOUNT_NUMBER in varchar2
3837 ) AS
3838 numeric_result_bk varchar2(40);
3839 numeric_result_br varchar2(40);
3840 numeric_result_cd varchar2(40);
3841 numeric_result_ac varchar2(40);
3842 CONCED_NUMBER varchar2(30);
3843 calc_value varchar2(30);
3844 calc_value1 number;
3845 calc_value2 number;
3846 calc_value3 number;
3847 cd_value varchar2(20);
3848 bk_value varchar2(30);
3849 ac_value varchar2(30);
3850 br_value varchar2(30);
3851
3852 /**************************/
3853 /* SUB-PROCEDURES SECTION */
3854 /**************************/
3855 FUNCTION get_odd_value(odd_value_in varchar2)
3856 RETURN NUMBER IS
3857 odd_value_out number;
3858 BEGIN
3859 IF odd_value_in in ('A', '0') THEN odd_value_out := 1;
3860 ELSIF odd_value_in in ('B', '1') THEN odd_value_out := 0;
3861 ELSIF odd_value_in in ('C', '2') THEN odd_value_out := 5;
3862 ELSIF odd_value_in in ('D', '3') THEN odd_value_out := 7;
3863 ELSIF odd_value_in in ('E', '4') THEN odd_value_out := 9;
3864 ELSIF odd_value_in in ('F', '5') THEN odd_value_out := 13;
3865 ELSIF odd_value_in in ('G', '6') THEN odd_value_out := 15;
3866 ELSIF odd_value_in in ('H', '7') THEN odd_value_out := 17;
3867 ELSIF odd_value_in in ('I', '8') THEN odd_value_out := 19;
3868 ELSIF odd_value_in in ('J', '9') THEN odd_value_out := 21;
3869 ELSIF odd_value_in = 'K' THEN odd_value_out := 2;
3870 ELSIF odd_value_in = 'L' THEN odd_value_out := 4;
3871 ELSIF odd_value_in = 'M' THEN odd_value_out := 18;
3872 ELSIF odd_value_in = 'N' THEN odd_value_out := 20;
3873 ELSIF odd_value_in = 'O' THEN odd_value_out := 11;
3874 ELSIF odd_value_in = 'P' THEN odd_value_out := 3;
3875 ELSIF odd_value_in = 'Q' THEN odd_value_out := 6;
3876 ELSIF odd_value_in = 'R' THEN odd_value_out := 8;
3877 ELSIF odd_value_in = 'S' THEN odd_value_out := 12;
3878 ELSIF odd_value_in = 'T' THEN odd_value_out := 14;
3879 ELSIF odd_value_in = 'U' THEN odd_value_out := 16;
3880 ELSIF odd_value_in = 'V' THEN odd_value_out := 10;
3881 ELSIF odd_value_in = 'W' THEN odd_value_out := 22;
3882 ELSIF odd_value_in = 'X' THEN odd_value_out := 25;
3883 ELSIF odd_value_in = 'Y' THEN odd_value_out := 24;
3884 ELSIF odd_value_in = 'Z' THEN odd_value_out := 23;
3885 END IF;
3886 RETURN(odd_value_out);
3887 END get_odd_value;
3888
3889 FUNCTION get_even_value(even_value_in varchar2)
3890 RETURN NUMBER IS
3891 even_value_out number;
3892 BEGIN
3893 IF even_value_in IN ('A','0') THEN even_value_out := 0;
3894 ELSIF even_value_in IN ('B','1') THEN even_value_out := 1;
3898 ELSIF even_value_in IN ('F','5') THEN even_value_out := 5;
3895 ELSIF even_value_in IN ('C','2') THEN even_value_out := 2;
3896 ELSIF even_value_in IN ('D','3') THEN even_value_out := 3;
3897 ELSIF even_value_in IN ('E','4') THEN even_value_out := 4;
3899 ELSIF even_value_in IN ('G','6') THEN even_value_out := 6;
3900 ELSIF even_value_in IN ('H','7') THEN even_value_out := 7;
3901 ELSIF even_value_in IN ('I','8') THEN even_value_out := 8;
3902 ELSIF even_value_in IN ('J','9') THEN even_value_out := 9;
3903 ELSIF even_value_in = 'K' THEN even_value_out := 10;
3904 ELSIF even_value_in = 'L' THEN even_value_out := 11;
3905 ELSIF even_value_in = 'M' THEN even_value_out := 12;
3906 ELSIF even_value_in = 'N' THEN even_value_out := 13;
3907 ELSIF even_value_in = 'O' THEN even_value_out := 14;
3908 ELSIF even_value_in = 'P' THEN even_value_out := 15;
3909 ELSIF even_value_in = 'Q' THEN even_value_out := 16;
3910 ELSIF even_value_in = 'R' THEN even_value_out := 17;
3911 ELSIF even_value_in = 'S' THEN even_value_out := 18;
3912 ELSIF even_value_in = 'T' THEN even_value_out := 19;
3913 ELSIF even_value_in = 'U' THEN even_value_out := 20;
3914 ELSIF even_value_in = 'V' THEN even_value_out := 21;
3915 ELSIF even_value_in = 'W' THEN even_value_out := 22;
3916 ELSIF even_value_in = 'X' THEN even_value_out := 23;
3917 ELSIF even_value_in = 'Y' THEN even_value_out := 24;
3918 ELSIF even_value_in = 'Z' THEN even_value_out := 25;
3919 END IF;
3920 RETURN(even_value_out);
3921 END get_even_value;
3922
3923 FUNCTION get_result_cd(remainder_value_in number)
3924 RETURN varchar2 IS
3925 remainder_value_out VARCHAR2(1);
3926 BEGIN
3927 IF remainder_value_in = '0' THEN remainder_value_out := 'A';
3928 ELSIF remainder_value_in = '1' THEN remainder_value_out := 'B';
3929 ELSIF remainder_value_in = '2' THEN remainder_value_out := 'C';
3930 ELSIF remainder_value_in = '3' THEN remainder_value_out := 'D';
3931 ELSIF remainder_value_in = '4' THEN remainder_value_out := 'E';
3932 ELSIF remainder_value_in = '5' THEN remainder_value_out := 'F';
3933 ELSIF remainder_value_in = '6' THEN remainder_value_out := 'G';
3934 ELSIF remainder_value_in = '7' THEN remainder_value_out := 'H';
3935 ELSIF remainder_value_in = '8' THEN remainder_value_out := 'I';
3936 ELSIF remainder_value_in = '9' THEN remainder_value_out := 'J';
3937 ELSIF remainder_value_in = '10' THEN remainder_value_out := 'K';
3938 ELSIF remainder_value_in = '11' THEN remainder_value_out := 'L';
3939 ELSIF remainder_value_in = '12' THEN remainder_value_out := 'M';
3940 ELSIF remainder_value_in = '13' THEN remainder_value_out := 'N';
3941 ELSIF remainder_value_in = '14' THEN remainder_value_out := 'O';
3942 ELSIF remainder_value_in = '15' THEN remainder_value_out := 'P';
3943 ELSIF remainder_value_in = '16' THEN remainder_value_out := 'Q';
3944 ELSIF remainder_value_in = '17' THEN remainder_value_out := 'R';
3945 ELSIF remainder_value_in = '18' THEN remainder_value_out := 'S';
3946 ELSIF remainder_value_in = '19' THEN remainder_value_out := 'T';
3947 ELSIF remainder_value_in = '20' THEN remainder_value_out := 'U';
3948 ELSIF remainder_value_in = '21' THEN remainder_value_out := 'V';
3949 ELSIF remainder_value_in = '22' THEN remainder_value_out := 'W';
3950 ELSIF remainder_value_in = '23' THEN remainder_value_out := 'X';
3951 ELSIF remainder_value_in = '24' THEN remainder_value_out := 'Y';
3952 ELSIF remainder_value_in = '25' THEN remainder_value_out := 'Z';
3953 END IF;
3954 RETURN(remainder_value_out);
3955 END get_result_cd;
3956 /****************/
3957 /* MAIN SECTION */
3958 /****************/
3959 BEGIN
3960
3961 IF l_DEBUG in ('Y', 'C') THEN
3962 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_cd_it'|| '----------' ||
3963 'CE_VALIDATE_CD: ' || 'Xi_X_ACCOUNT_NUMBER: '||Xi_X_ACCOUNT_NUMBER);
3964 END IF;
3965
3966 CD_VALUE := upper(replace(Xi_CD,' ',''));
3967 bk_value := upper(replace(replace(Xi_X_BANK_NUMBER,' ',''),'-',''));
3968 br_value := upper(replace(replace(Xi_X_BRANCH_NUMBER,' ',''),'-',''));
3969 ac_value := upper(replace(replace(Xi_X_ACCOUNT_NUMBER,' ',''),'-',''));
3970
3971 IF length(CD_VALUE) = 1
3972 THEN /* length is ok */
3973 CONCED_NUMBER := bk_value||br_value||ac_value;
3974
3975 calc_value1 := (get_odd_value(substr(conced_number,1,1)) +
3976 get_even_value(substr(conced_number,2,1)) +
3977 get_odd_value(substr(conced_number,3,1)) +
3978 get_even_value(substr(conced_number,4,1)) +
3979 get_odd_value(substr(conced_number,5,1)) +
3980 get_even_value(substr(conced_number,6,1)) +
3981 get_odd_value(substr(conced_number,7,1)) +
3982 get_even_value(substr(conced_number,8,1)) +
3983 get_odd_value(substr(conced_number,9,1)) +
3984 get_even_value(substr(conced_number,10,1)) +
3985 get_odd_value(substr(conced_number,11,1)) +
3989 get_odd_value(substr(conced_number,15,1)) +
3986 get_even_value(substr(conced_number,12,1)) +
3987 get_odd_value(substr(conced_number,13,1)) +
3988 get_even_value(substr(conced_number,14,1)) +
3990 get_even_value(substr(conced_number,16,1)) +
3991 get_odd_value(substr(conced_number,17,1)) +
3992 get_even_value(substr(conced_number,18,1)) +
3993 get_odd_value(substr(conced_number,19,1)) +
3994 get_even_value(substr(conced_number,20,1)) +
3995 get_odd_value(substr(conced_number,21,1)) +
3996 get_even_value(substr(conced_number,22,1))) ;
3997 calc_value2 := nvl(mod(calc_value1,26),0);
3998 calc_value := get_result_cd(calc_value2);
3999
4000 IF calc_value = CD_VALUE
4001 THEN
4002 ce_passed_check('CD','IT');
4003 ELSE
4004 ce_failed_check('CHECK_DIGIT','CD_FAILED');
4005 END IF; /* end of check digit validation */
4006 ELSE
4007 ce_failed_check('CHECK_DIGIT','LENGTH','1');
4008 END IF; /* end of length check */
4009
4010 IF l_DEBUG in ('Y', 'C') THEN
4011 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_cd_it');
4012 END IF;
4013 END CE_VALIDATE_CD_IT;
4014
4015 /* ---------------------------------------------------------------------
4016 | CD Validation: LUXEMBOURG |
4017 ----------------------------------------------------------------------*/
4018 PROCEDURE CE_VALIDATE_CD_LU(
4019 Xi_CD in varchar2,
4020 Xi_X_BANK_NUMBER in varchar2,
4021 Xi_X_BRANCH_NUMBER in varchar2,
4022 Xi_X_ACCOUNT_NUMBER in varchar2
4023 ) AS
4024 numeric_result_cd VARCHAR2(40);
4025 account_value VARCHAR2(30);
4026 check_digit VARCHAR2(2);
4027
4028 BEGIN
4029 IF l_DEBUG in ('Y', 'C') THEN
4030 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_cd_lu');
4031 END IF;
4032
4033 ACCOUNT_VALUE := lpad(Xi_X_ACCOUNT_NUMBER,12,0);
4034 CHECK_DIGIT := Xi_CD;
4035
4036 IF length(CHECK_DIGIT) = 2
4037 THEN /*length is ok*/
4038 numeric_result_cd := ce_check_numeric(CHECK_DIGIT,1,length(CHECK_DIGIT));
4039 IF numeric_result_cd = '0'
4040 THEN
4041 ce_passed_check('CD','LU');
4042 ELSE
4043 ce_failed_check('CHECK_DIGIT','NUMERIC');
4044 END IF; /* end of numeric check */
4045 ELSE
4046 ce_failed_check('CHECK_DIGIT','LENGTH','2');
4047 END IF; /* end of length check */
4048
4049 IF l_DEBUG in ('Y', 'C') THEN
4050 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_cd_lu');
4051 END IF;
4052 END CE_VALIDATE_CD_LU;
4053
4054 /* ---------------------------------------------------------------------
4055 | CD Validation: SWEDEN |
4056 ----------------------------------------------------------------------*/
4057 procedure CE_VALIDATE_CD_SE(
4058 Xi_CD in varchar2,
4059 Xi_X_ACCOUNT_NUMBER in varchar2
4060 ) AS
4061 numeric_result_cd varchar2(40);
4062 calc_value number(30);
4063 cd_value varchar2(20);
4064
4065 BEGIN
4066 IF l_DEBUG in ('Y', 'C') THEN
4067 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_cd_se');
4068 END IF;
4069
4070 CD_VALUE := upper(Xi_CD);
4071
4072 IF length(CD_VALUE) = 1
4073 THEN /* length is ok */
4074
4075 numeric_result_cd := ce_check_numeric(CD_VALUE,1,length(CD_VALUE));
4076 IF numeric_result_cd = '0'
4077 THEN
4078 ce_passed_check('CD','SE');
4079 ELSE
4080 ce_failed_check('CHECK_DIGIT','NUMERIC');
4081 END IF; /* end of numeric check */
4082 ELSE
4083 ce_failed_check('CHECK_DIGIT','LENGTH','1');
4084 END IF; /* end of length check */
4085
4086 IF l_DEBUG in ('Y', 'C') THEN
4087 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_cd_se');
4088 END IF;
4089 END CE_VALIDATE_CD_SE;
4090
4091 /* --------------------------------------------------------------------
4092 | PRIVATE PROCEDURE |
4093 | CE_VALIDATE_BRANCH_* |
4094 | |
4095 | CALLED BY |
4096 | CE_VALIDATE_BRANCH |
4097 | |
4098 | DESCRIPTION |
4099 | Branch PROCEDURES, Validate 1 or more of the following: |
4100 | 1. Branch number length |
4101 | 2. Branch number datatype (numeric, alphanumeric, or alphabet |
4102 | 3. Branch number Algorithm |
4103 | |
4107 --------------------------------------------------------------------- */
4104 | RETURN |
4105 | Xo_VALUE_OUT - Branch Number is return with leading 0 |
4106 | (Not for all countries) |
4108
4109 /* ---------------------------------------------------------------------
4110 | Branch Number Validation: AUSTRIA |
4111 ----------------------------------------------------------------------*/
4112 procedure CE_VALIDATE_BRANCH_AT(
4113 Xi_BRANCH_NUMBER in varchar2,
4114 Xi_PASS_MAND_CHECK in varchar2,
4115 Xo_VALUE_OUT OUT NOCOPY varchar2
4116 ) AS
4117
4118 branch_value VARCHAR2(30);
4119 numeric_result VARCHAR2(40);
4120
4121 BEGIN
4122 IF l_DEBUG in ('Y', 'C') THEN
4123 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_branch_at');
4124 END IF;
4125
4126 BRANCH_VALUE := upper(Xi_BRANCH_NUMBER);
4127 Xo_VALUE_OUT := BRANCH_VALUE;
4128
4129 IF Xi_PASS_MAND_CHECK = 'F'
4130 THEN
4131 ce_failed_mandatory('BRANCH_NUM');
4132 ELSIF Xi_PASS_MAND_CHECK = 'P'
4133 THEN
4134 BRANCH_VALUE := replace(replace(BRANCH_VALUE,' ',''),'-','');
4135 IF ( length(BRANCH_VALUE) = 5 )
4136 THEN
4137 /* length is ok */
4138 numeric_result := ce_check_numeric(BRANCH_VALUE,1,length(BRANCH_VALUE));
4139 IF (numeric_result = '0')
4140 THEN
4141 /* its numeric validations successful */
4142 Xo_VALUE_OUT := BRANCH_VALUE;
4143 ce_passed_check('BRANCH','AT');
4144 ELSE
4145 ce_failed_check('BRANCH_NUM','NUMERIC');
4146 END IF; /* end of numeric check */
4147 ELSE
4148 ce_failed_check('BRANCH_NUM','LENGTH','5');
4149 END IF; /* end of length check */
4150 END IF; /* end of mandatory check */
4151
4152 IF l_DEBUG in ('Y', 'C') THEN
4153 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_branch_at');
4154 END IF;
4155 END CE_VALIDATE_BRANCH_AT;
4156
4157 /* ---------------------------------------------------------------------
4158 | Branch Number Validation: PORTUGAL |
4159 ----------------------------------------------------------------------*/
4160 procedure CE_VALIDATE_BRANCH_PT(
4161 Xi_BRANCH_NUMBER in varchar2,
4162 Xi_PASS_MAND_CHECK in varchar2
4163 ) AS
4164 branch_value VARCHAR2(30);
4165 numeric_result VARCHAR2(40);
4166
4167 BEGIN
4168 IF l_DEBUG in ('Y', 'C') THEN
4169 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_branch_pt');
4170 END IF;
4171
4172 BRANCH_VALUE := upper(Xi_BRANCH_NUMBER);
4173
4174 IF Xi_PASS_MAND_CHECK = 'F'
4175 THEN
4176 ce_failed_mandatory('BRANCH_NUM');
4177
4178 ELSIF Xi_PASS_MAND_CHECK = 'P'
4179 THEN
4180 BRANCH_VALUE := replace(replace(BRANCH_VALUE,' ',''),'-','');
4181 IF length(BRANCH_VALUE) = 4
4182 THEN /* length is ok */
4183 numeric_result := ce_check_numeric(BRANCH_VALUE,1,length(BRANCH_VALUE));
4184 IF numeric_result = '0'
4185 THEN /* it's numeric - validations successful */
4186 ce_passed_check('BRANCH','PT');
4187 ELSE
4188 ce_failed_check('BRANCH_NUM','NUMERIC');
4189 END IF; /* end of numeric check */
4190 ELSE
4191 ce_failed_check('BRANCH_NUM','LENGTH','4');
4192 END IF; /* end of length check */
4193 END IF; /* end of mandatory check */
4194
4195 IF l_DEBUG in ('Y', 'C') THEN
4196 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_branch_pt');
4197 END IF;
4198 END CE_VALIDATE_BRANCH_PT;
4199
4200 /* ---------------------------------------------------------------------
4201 | Branch Number Validation: FRANCE |
4202 ----------------------------------------------------------------------*/
4203 procedure CE_VALIDATE_BRANCH_FR(
4204 Xi_BRANCH_NUMBER in varchar2,
4205 Xi_PASS_MAND_CHECK in varchar2,
4206 Xo_VALUE_OUT OUT NOCOPY varchar2
4207 ) AS
4208
4209 branch_value VARCHAR2(30);
4210 numeric_result VARCHAR2(40);
4211
4212 BEGIN
4213 IF l_DEBUG in ('Y', 'C') THEN
4214 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_branch_fr');
4215 END IF;
4216
4217 BRANCH_VALUE := upper(Xi_BRANCH_NUMBER );
4218 Xo_VALUE_OUT := BRANCH_VALUE;
4219
4220 IF Xi_PASS_MAND_CHECK = 'F'
4221 THEN
4222 ce_failed_mandatory('BRANCH_NUM');
4223 ELSIF Xi_PASS_MAND_CHECK = 'P'
4224 THEN
4225
4226 BRANCH_VALUE := replace(replace(BRANCH_VALUE,' ',''),'-','');
4227 IF length(BRANCH_VALUE) > 5
4228 THEN
4229 ce_failed_check('BRANCH_NUM','LENGTH_MAX','5');
4230 ELSE /* length is ok */
4231 numeric_result := ce_check_numeric(BRANCH_VALUE,1,length(BRANCH_VALUE));
4232 IF numeric_result = '0'
4233 THEN /* its numeric - validations successful */
4234 BRANCH_VALUE := lpad(BRANCH_VALUE,5,0);
4238 ce_failed_check('BRANCH_NUM','NUMERIC');
4235 Xo_VALUE_OUT := BRANCH_VALUE;
4236 ce_passed_check('BRANCH','FR');
4237 ELSE
4239 END IF; /* end of numeric check */
4240 END IF; /* end of length check */
4241 END IF; /* end of mandatory check */
4242
4243 IF l_DEBUG in ('Y', 'C') THEN
4244 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_branch_fr');
4245 END IF;
4246 END CE_VALIDATE_BRANCH_FR;
4247
4248 /* ---------------------------------------------------------------------
4249 | Branch Number Validation: SPAIN |
4250 ----------------------------------------------------------------------*/
4251 procedure CE_VALIDATE_BRANCH_ES (
4252 Xi_BRANCH_NUMBER in varchar2,
4253 Xi_PASS_MAND_CHECK in varchar2,
4254 Xo_VALUE_OUT out nocopy varchar2
4255 ) AS
4256
4257 BRANCH_VALUE varchar2(30);
4258 NUMERIC_RESULT varchar2(40);
4259
4260 BEGIN
4261 IF l_DEBUG in ('Y', 'C') THEN
4262 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_branch_es');
4263 END IF;
4264
4265 BRANCH_VALUE := upper(Xi_BRANCH_NUMBER );
4266 BRANCH_VALUE := replace(replace(BRANCH_VALUE,' ',''),'-','');
4267 Xo_VALUE_OUT := BRANCH_VALUE;
4268
4269 IF Xi_PASS_MAND_CHECK = 'F'
4270 THEN
4271 ce_failed_mandatory('BRANCH_NUM');
4272
4273 ELSIF Xi_PASS_MAND_CHECK = 'P'
4274 THEN
4275 IF length(BRANCH_VALUE) > 4
4276 THEN
4277 ce_failed_check('BRANCH_NUM','LENGTH_MAX','4');
4278 ELSE /* length is ok */
4279 numeric_result := ce_check_numeric(BRANCH_VALUE,1,length(BRANCH_VALUE));
4280 IF numeric_result = '0'
4281 THEN /* it's numeric - validations successful */
4282 BRANCH_VALUE := lpad(BRANCH_VALUE,4,0);
4283 Xo_VALUE_OUT := BRANCH_VALUE;
4284 ce_passed_check('BRANCH','ES');
4285 ELSE
4286 ce_failed_check('BRANCH_NUM','NUMERIC');
4287 END IF; /* end of numeric check */
4288 END IF; /* end of length check */
4289 END IF; /* end of mandatory check */
4290
4291 IF l_DEBUG in ('Y', 'C') THEN
4292 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_branch_es');
4293 END IF;
4294 END CE_VALIDATE_BRANCH_ES;
4295
4296 /* ---------------------------------------------------------------------
4297 | Branch Number Validation: BRAZIL |
4298 ----------------------------------------------------------------------*/
4299 procedure CE_VALIDATE_BRANCH_BR(
4300 Xi_BRANCH_NUMBER in varchar2,
4301 Xi_PASS_MAND_CHECK in varchar2,
4302 Xo_VALUE_OUT OUT NOCOPY varchar2
4303 ) AS
4304
4305 branch_value VARCHAR2(30);
4306 numeric_result VARCHAR2(40);
4307
4308 BEGIN
4309 IF l_DEBUG in ('Y', 'C') THEN
4310 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_branch_br');
4311 END IF;
4312
4313 BRANCH_VALUE := upper(Xi_BRANCH_NUMBER );
4314 Xo_VALUE_OUT := BRANCH_VALUE;
4315
4316 IF Xi_PASS_MAND_CHECK = 'F'
4317 THEN
4318 ce_failed_mandatory('BRANCH_NUM');
4319 ELSIF Xi_PASS_MAND_CHECK = 'P'
4320 THEN
4321 BRANCH_VALUE := replace(replace(BRANCH_VALUE,' ',''),'-','');
4322 IF length(BRANCH_VALUE) > 5
4323 THEN
4324 ce_failed_check('BRANCH_NUM','LENGTH_MAX','5');
4325 ELSE
4326 /* length is ok */
4327 numeric_result := ce_check_numeric(BRANCH_VALUE,1,length(BRANCH_VALUE));
4328 IF numeric_result = '0'
4329 THEN
4330 /* its numeric - validations successful*/
4331 BRANCH_VALUE := lpad(BRANCH_VALUE,5,0);
4332 Xo_VALUE_OUT := BRANCH_VALUE;
4333 ce_passed_check('BRANCH','BR');
4334 ELSE
4335 ce_failed_check('BRANCH_NUM','NUMERIC');
4336 END IF; /* end of numeric check */
4337 END IF; /* end of length check*/
4338 END IF; /* end of mandatory check */
4339
4340 IF l_DEBUG in ('Y', 'C') THEN
4341 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_branch_br');
4342 END IF;
4343 END CE_VALIDATE_BRANCH_BR;
4344
4345 /* ---------------------------------------------------------------------
4346 | Branch Number Validation: GERMANY |
4347 ----------------------------------------------------------------------*/
4348 procedure CE_VALIDATE_BRANCH_DE(
4349 Xi_BRANCH_NUMBER in varchar2,
4350 Xi_BANK_ID in number
4351 ) AS
4352
4353 branch_num VARCHAR2(30);
4354 numeric_result VARCHAR2(40);
4355
4356 BEGIN
4357 IF l_DEBUG in ('Y', 'C') THEN
4358 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_branch_de');
4359 END IF;
4360
4361 -- remove spaces and hyphens --
4362 BRANCH_NUM := upper(replace(Xi_BRANCH_NUMBER,' ',''));
4363 BRANCH_NUM := replace(BRANCH_NUM,'-','');
4364
4365 IF (BRANCH_NUM) IS NOT NULL
4366 THEN /* only validate if a value has been entered */
4370 IF numeric_result = '0'
4367 IF length(BRANCH_NUM) = 8
4368 THEN /* length is ok */
4369 numeric_result := ce_check_numeric(BRANCH_NUM,1,length(BRANCH_NUM));
4371 THEN /* its numeric so continue */
4372 -- Bank number and branch number should be the same
4373 compare_bank_and_branch_num(BRANCH_NUM, Xi_BANK_ID);
4374 ELSE
4375 ce_failed_check('BRANCH_NUM','NUMERIC');
4376 END IF; /* end of numeric check */
4377 ELSE
4378 ce_failed_check('BRANCH_NUM','LENGTH','8');
4379 END IF; /* end of length check */
4380 END IF;
4381
4382 IF l_DEBUG in ('Y', 'C') THEN
4383 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_branch_de');
4384 END IF;
4385 END CE_VALIDATE_BRANCH_DE;
4386
4387 /* ---------------------------------------------------------------------
4388 | Branch Number Validation: GREECE |
4389 ----------------------------------------------------------------------*/
4390 procedure CE_VALIDATE_BRANCH_GR(
4391 Xi_BRANCH_NUMBER in varchar2
4392 ) AS
4393
4394 branch_value VARCHAR2(30);
4395 numeric_result VARCHAR2(40);
4396
4397 BEGIN
4398 IF l_DEBUG in ('Y', 'C') THEN
4399 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_branch_gr');
4400 END IF;
4401
4402 BRANCH_VALUE := upper(replace(Xi_BRANCH_NUMBER,' ',''));
4403 BRANCH_VALUE := replace(BRANCH_VALUE,'-','');
4404
4405 IF (BRANCH_VALUE) IS NOT NULL
4406 THEN /* only validate if a value has been entered */
4407 IF length(BRANCH_VALUE) > 4
4408 THEN
4409 ce_failed_check('BRANCH_NUM','LENGTH_MAX','4');
4410 ELSE /* length is ok */
4411 numeric_result := ce_check_numeric(BRANCH_VALUE,1,length(BRANCH_VALUE));
4412 IF numeric_result = '0'
4413 THEN /* it's numeric - validations successful*/
4414 ce_passed_check('BRANCH','GR');
4415 ELSE
4416 ce_failed_check('BRANCH_NUM','NUMERIC');
4417 END IF; /* end of numeric check */
4418 END IF; /* end of length check */
4419 END IF; /* end of null check */
4420
4421 IF l_DEBUG in ('Y', 'C') THEN
4422 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_branch_gr');
4423 END IF;
4424 END CE_VALIDATE_BRANCH_GR;
4425
4426 /* ---------------------------------------------------------------------
4427 | Branch Number Validation: ICELAND |
4428 ----------------------------------------------------------------------*/
4429 procedure CE_VALIDATE_BRANCH_IS(
4430 Xi_BRANCH_NUMBER IN VARCHAR2,
4431 Xi_BANK_ID IN NUMBER,
4432 Xo_VALUE_OUT OUT NOCOPY VARCHAR2
4433 ) AS
4434
4435 branch_num VARCHAR2(60);
4436 numeric_result VARCHAR2(40);
4437
4438 BEGIN
4439 IF l_DEBUG in ('Y', 'C') THEN
4440 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_branch_is');
4441 END IF;
4442
4443 -- remove spaces and hyphens --
4444 BRANCH_NUM := upper(replace(Xi_BRANCH_NUMBER,' ',''));
4445 BRANCH_NUM := replace(BRANCH_NUM,'-','');
4446
4447 IF (BRANCH_NUM) IS NOT NULL
4448 THEN /* only validate if a branch number has been entered */
4449 IF length(BRANCH_NUM) > 4
4450 THEN
4451 ce_failed_check('BRANCH_NUM','LENGTH_MAX','4');
4452 ELSE /* length is ok */
4453 numeric_result := ce_check_numeric(BRANCH_NUM,1,length(BRANCH_NUM));
4454 IF numeric_result = '0'
4455 THEN /* its numeric so continue */
4456 -- Bank number and branch number should be the same
4457 BRANCH_NUM := lpad(BRANCH_NUM,4,0);
4458 Xo_VALUE_OUT := BRANCH_NUM;
4459 compare_bank_and_branch_num(branch_num, Xi_BANK_ID);
4460 ELSE
4461 ce_failed_check('BRANCH_NUM','NUMERIC');
4462 END IF; /* end of numeric check */
4463 END IF; /* end of length check */
4464 ELSE
4465 ce_passed_check('BRANCH','IS');
4466 END IF; /* end of null check */
4467
4468 IF l_DEBUG in ('Y', 'C') THEN
4469 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_branch_is');
4470 END IF;
4471 END CE_VALIDATE_BRANCH_IS;
4472
4473
4474 /* ---------------------------------------------------------------------
4475 | Branch Number Validation: IRELAND |
4476 ----------------------------------------------------------------------*/
4477 procedure CE_VALIDATE_BRANCH_IE(
4478 Xi_BRANCH_NUMBER in varchar2,
4479 Xi_BANK_ID in number
4480 ) AS
4481
4482 branch_num VARCHAR2(60);
4483 numeric_result VARCHAR2(40);
4484
4485 BEGIN
4486 IF l_DEBUG in ('Y', 'C') THEN
4487 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_branch_ie');
4488 END IF;
4489
4490 -- remove spaces and hyphens --
4491 BRANCH_NUM := upper(replace(Xi_BRANCH_NUMBER,' ',''));
4492 BRANCH_NUM := replace(BRANCH_NUM,'-','');
4493
4494 IF (BRANCH_NUM) IS NOT NULL
4498 THEN /* length is ok */
4495 THEN /* only validate if a value has been entered */
4496 -- Bug 6846899 : Valid length is 6 not 8
4497 IF length(BRANCH_NUM) = 6
4499 numeric_result := ce_check_numeric(BRANCH_NUM,1,length(BRANCH_NUM));
4500 IF numeric_result = '0'
4501 THEN /* its numeric so continue */
4502 -- Bank number and branch number should be the same
4503 compare_bank_and_branch_num(branch_num, Xi_BANK_ID);
4504 ELSE
4505 ce_failed_check('BRANCH_NUM','NUMERIC');
4506 END IF; /* end of numeric check */
4507 ELSE
4508 ce_failed_check('BRANCH_NUM','LENGTH','6');
4509 END IF; /* end of length check */
4510 ELSE
4511 ce_passed_check('BRANCH','IE');
4512 END IF; /* end of null check */
4513
4514 IF l_DEBUG in ('Y', 'C') THEN
4515 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_branch_ie');
4516 END IF;
4517 END CE_VALIDATE_BRANCH_IE;
4518
4519 /* ---------------------------------------------------------------------
4520 | Branch Number Validation: ITALY |
4521 ----------------------------------------------------------------------*/
4522 procedure CE_VALIDATE_BRANCH_IT(
4523 Xi_BRANCH_NUMBER in varchar2,
4524 Xi_PASS_MAND_CHECK in varchar2
4525 ) AS
4526
4527 branch_value VARCHAR2(30);
4528 numeric_result VARCHAR2(40);
4529
4530 BEGIN
4531 IF l_DEBUG in ('Y', 'C') THEN
4532 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_branch_it');
4533 END IF;
4534
4535 -- remove spaces and hyphens --
4536 BRANCH_VALUE := upper(replace(Xi_BRANCH_NUMBER,' ',''));
4537 BRANCH_VALUE := replace(BRANCH_VALUE,'-','');
4538
4539 IF Xi_PASS_MAND_CHECK = 'F'
4540 THEN
4541 ce_failed_mandatory('BRANCH_NUM');
4542 ELSIF Xi_PASS_MAND_CHECK = 'P'
4543 THEN
4544 IF length(BRANCH_VALUE) = 5
4545 THEN /* length is ok */
4546 numeric_result := ce_check_numeric(BRANCH_VALUE,1,length(BRANCH_VALUE));
4547 IF numeric_result = '0'
4548 THEN /* it's numeric - validations successful */
4549 ce_passed_check('BRANCH','IT');
4550 ELSE
4551 ce_failed_check('BRANCH_NUM','NUMERIC');
4552 END IF; /* end of numeric check */
4553 ELSE
4554 ce_failed_check('BRANCH_NUM','LENGTH','5');
4555 END IF; /* end of length check */
4556 END IF; /* end of mandatory check */
4557
4558 IF l_DEBUG in ('Y', 'C') THEN
4559 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_branch_it');
4560 END IF;
4561 END CE_VALIDATE_BRANCH_IT;
4562
4563 /* ---------------------------------------------------------------------
4564 | Branch Number Validation: LUXEMBOURG |
4565 ----------------------------------------------------------------------*/
4566 procedure CE_VALIDATE_BRANCH_LU(
4567 Xi_BRANCH_NUMBER in varchar2,
4568 Xi_BANK_ID in number
4569 ) AS
4570 branch_num VARCHAR2(60);
4571 numeric_result VARCHAR2(40);
4572
4573 BEGIN
4574 IF l_DEBUG in ('Y', 'C') THEN
4575 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_branch_lu');
4576 END IF;
4577
4578 -- remove hyphens and spaces --
4579 BRANCH_NUM := upper(replace(Xi_BRANCH_NUMBER,' ',''));
4580 BRANCH_NUM := replace(BRANCH_NUM,'-','');
4581
4582 IF (BRANCH_NUM) IS NOT NULL
4583 THEN /* only validate if a value has been entered */
4584 -- 6005620: Bank/Branch Num length is 3
4585 IF length(BRANCH_NUM) = 3
4586 THEN /* length is ok */
4587 numeric_result := ce_check_numeric(BRANCH_NUM,1,length(BRANCH_NUM));
4588 IF numeric_result = '0'
4589 THEN /* its numeric so continue */
4590 -- Bank number and branch number should be the same
4591 compare_bank_and_branch_num(BRANCH_NUM, Xi_BANK_ID);
4592 ELSE
4593 ce_failed_check('BRANCH_NUM','NUMERIC');
4594 END IF; /* end of numeric check */
4595 ELSE
4596 ce_failed_check('BRANCH_NUM','LENGTH','3');
4597 END IF; /* end of length check */
4598 ELSE
4599 ce_passed_check('BRANCH','LU');
4600 END IF; /* end of null check */
4601
4602 IF l_DEBUG in ('Y', 'C') THEN
4603 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_branch_lu');
4604 END IF;
4605 END CE_VALIDATE_BRANCH_LU;
4606
4607 /* ---------------------------------------------------------------------
4608 | Branch Number Validation: POLAND |
4609 ----------------------------------------------------------------------*/
4610 procedure CE_VALIDATE_BRANCH_PL(
4611 Xi_BRANCH_NUMBER in varchar2,
4612 Xi_BANK_ID in NUMBER
4613 ) AS
4614
4615 branch_num VARCHAR2(60);
4616 numeric_result VARCHAR2(40);
4617 cal_cd1 NUMBER;
4618
4619 BEGIN
4620 IF l_DEBUG in ('Y', 'C') THEN
4624 -- remove spaces and hyphens --
4621 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_branch_pl');
4622 END IF;
4623
4625 BRANCH_NUM := upper(replace(Xi_BRANCH_NUMBER,' ',''));
4626 BRANCH_NUM := replace(BRANCH_NUM,'-','');
4627
4628 IF (BRANCH_NUM) IS NOT NULL
4629 THEN /* only validate if a value has been entered */
4630 IF length(BRANCH_NUM) = 8
4631 THEN /* length is ok */
4632 numeric_result := ce_check_numeric(BRANCH_NUM,1,length(BRANCH_NUM));
4633 IF numeric_result = '0'
4634 THEN /* its numeric so continue */
4635 -- Bank number and branch number should be the same
4636 compare_bank_and_branch_num(BRANCH_NUM, Xi_BANK_ID);
4637 -- Bug 7454786: No check digit validation for Poland
4638 ce_passed_check('BRANCH','PL');
4639 ELSE
4640 ce_failed_check('BRANCH_NUM','NUMERIC');
4641 END IF; /* end of numeric check */
4642 ELSE
4643 ce_failed_check('BRANCH_NUM','LENGTH','8');
4644 END IF; /* end of length check */
4645 ELSE
4646 ce_passed_check('BRANCH','PL');
4647 END IF; /* end of null check */
4648
4649 IF l_DEBUG in ('Y', 'C') THEN
4650 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_branch_pl');
4651 END IF;
4652 END CE_VALIDATE_BRANCH_PL;
4653
4654 /* ---------------------------------------------------------------------
4655 | Branch Number Validation: SWEDEN |
4656 ----------------------------------------------------------------------*/
4657 procedure CE_VALIDATE_BRANCH_SE(
4658 Xi_BRANCH_NUMBER in varchar2,
4659 Xi_BANK_ID in number
4660 ) AS
4661
4662 branch_num VARCHAR2(60);
4663 numeric_result VARCHAR2(40);
4664
4665 BEGIN
4666 IF l_DEBUG in ('Y', 'C') THEN
4667 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_branch_se');
4668 END IF;
4669
4670 -- remove hyphens and spaces --
4671 BRANCH_NUM := upper(replace(Xi_BRANCH_NUMBER,' ',''));
4672 BRANCH_NUM := replace(BRANCH_NUM,'-','');
4673
4674 IF (BRANCH_NUM) IS NOT NULL
4675 THEN /* only validate if a value has been entered */
4676 IF (length(BRANCH_NUM) < 4)
4677 THEN
4678 ce_failed_check('BRANCH_NUM','LENGTH_MIN','4');
4679
4680 ELSIF (length(BRANCH_NUM) > 5)
4681 THEN
4682 ce_failed_check('BRANCH_NUM','LENGTH_MAX','5');
4683
4684 ELSE /* length is ok */
4685 numeric_result := ce_check_numeric(BRANCH_NUM,1,length(BRANCH_NUM));
4686 IF numeric_result = '0'
4687 THEN /* its numeric so continue */
4688 -- Bank number and branch number should be the same
4689 compare_bank_and_branch_num(BRANCH_NUM, Xi_BANK_ID);
4690 ELSE
4691 ce_failed_check('BRANCH_NUM','NUMERIC');
4692 END IF; /* end of numeric check */
4693 END IF; /* end of length check */
4694 ELSE
4695 ce_passed_check('BRANCH','SE');
4696 END IF; /* end of null check */
4697
4698 IF l_DEBUG in ('Y', 'C') THEN
4699 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_branch_se');
4700 END IF;
4701 END CE_VALIDATE_BRANCH_SE;
4702
4703
4704 /* ---------------------------------------------------------------------
4705 | Branch Number Validation: SWITZERLAND |
4706 ----------------------------------------------------------------------*/
4707 procedure CE_VALIDATE_BRANCH_CH(
4708 Xi_BRANCH_NUMBER in varchar2,
4709 Xi_BANK_ID in number
4710 ) AS
4711
4712 branch_num VARCHAR2(60);
4713 numeric_result VARCHAR2(40);
4714
4715 BEGIN
4716 IF l_DEBUG in ('Y', 'C') THEN
4717 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_branch_ch');
4718 END IF;
4719
4720 -- remove spaces and hyphens --
4721 BRANCH_NUM := upper(replace(Xi_BRANCH_NUMBER,' ',''));
4722 BRANCH_NUM := replace(BRANCH_NUM,'-','');
4723
4724 IF (BRANCH_NUM) IS NOT NULL
4725 THEN /* only validate if a value has been entered */
4726 -- Bug 6208182 - Length of the branch number should be between 7 to 9
4727 -- numeric digits. (Changed from 3 -> 6)
4728 -- Bug 6885135 - Length restriction changed to (3->9)
4729 IF (length(BRANCH_NUM) < 3)
4730 THEN
4731 ce_failed_check('BRANCH_NUM','LENGTH_MIN','3');
4732 ELSIF (length(BRANCH_NUM) > 9)
4733 THEN
4734 ce_failed_check('BRANCH_NUM','LENGTH_MAX','9');
4735 ELSE /* length is ok */
4736 numeric_result := ce_check_numeric(BRANCH_NUM,1,length(BRANCH_NUM));
4737 IF numeric_result = '0'
4738 THEN /* its numeric so continue */
4739 -- Bank number and branch number should be the same
4740 -- Bug 6208182 - validation to check if bank and branch number are same
4741 -- is not required for swiss banks.
4742 -- compare_bank_and_branch_num(branch_num, Xi_BANK_ID);
4743 ce_passed_check('BRANCH','CH');
4744 ELSE
4748 ELSE
4745 ce_failed_check('BRANCH_NUM','NUMERIC');
4746 END IF; /* end of numeric check */
4747 END IF; /* end of length check */
4749 ce_passed_check('BRANCH','CH');
4750 END IF; /* end of null check */
4751
4752 IF l_DEBUG in ('Y', 'C') THEN
4753 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_branch_ch');
4754 END IF;
4755 END CE_VALIDATE_BRANCH_CH;
4756
4757 /* ---------------------------------------------------------------------
4758 | Branch Number Validation: UNITED KINGDOM |
4759 ----------------------------------------------------------------------*/
4760 procedure CE_VALIDATE_BRANCH_GB(
4761 Xi_BRANCH_NUMBER in varchar2,
4762 Xi_BANK_ID in number
4763 ) AS
4764
4765 branch_num VARCHAR2(60);
4766 numeric_result VARCHAR2(40);
4767
4768 BEGIN
4769 IF l_DEBUG in ('Y', 'C') THEN
4770 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_branch_gb');
4771 END IF;
4772
4773 -- remove spaces and hyphens --
4774 BRANCH_NUM := upper(replace(Xi_BRANCH_NUMBER,' ',''));
4775 BRANCH_NUM := replace(BRANCH_NUM,'-','');
4776
4777 IF (BRANCH_NUM) IS NOT NULL
4778 THEN /* only validate if a value has been entered */
4779 IF length(BRANCH_NUM) = 6
4780 THEN /* length is ok */
4781 numeric_result := ce_check_numeric(BRANCH_NUM,1,length(BRANCH_NUM));
4782 IF numeric_result = '0'
4783 THEN /* its numeric so continue */
4784 -- Bank number and branch number should be the same
4785 compare_bank_and_branch_num(BRANCH_NUM, Xi_BANK_ID);
4786 ELSE
4787 ce_failed_check('BRANCH_NUM','NUMERIC');
4788 END IF; /* end of numeric check */
4789 ELSE
4790 ce_failed_check('BRANCH_NUM','LENGTH','6');
4791 END IF; /* end of length check */
4792 ELSE
4793 ce_passed_check('BRANCH','GB');
4794 END IF; /* end of null check */
4795
4796 IF l_DEBUG in ('Y', 'C') THEN
4797 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_branch_gb');
4798 END IF;
4799 END CE_VALIDATE_BRANCH_GB;
4800
4801 /* ---------------------------------------------------------------------
4802 | Branch Number Validation: UNITED STATES |
4803 | For the US, Branch Number is Routing Transit Number |
4804 ----------------------------------------------------------------------*/
4805 procedure CE_VALIDATE_BRANCH_US(
4806 Xi_BRANCH_NUMBER in varchar2,
4807 Xi_PASS_MAND_CHECK in varchar2,
4808 Xo_VALUE_OUT OUT NOCOPY varchar2
4809 ) AS
4810
4811 branch_value VARCHAR2(30);
4812 branch_value_out VARCHAR2(30);
4813 cal_cd1 NUMBER;
4814 cd_value NUMBER;
4815 l_mod_value NUMBER;
4816 numeric_result VARCHAR2(40);
4817
4818 BEGIN
4819 IF l_DEBUG in ('Y', 'C') THEN
4820 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_branch_us');
4821 END IF;
4822
4823 -- remove spaces and hyphens --
4824 BRANCH_VALUE := upper(replace(Xi_BRANCH_NUMBER,' ',''));
4825 BRANCH_VALUE := replace(BRANCH_VALUE,'-','');
4826
4827 -- Branch Number is optional for all US banks --
4828 IF Xi_PASS_MAND_CHECK = 'P'
4829 THEN /* only validate if value has been entered */
4830 IF length(BRANCH_VALUE) > 9
4831 THEN
4832 ce_failed_check('ROUTE_NUM','LENGTH_MAX','9');
4833 ELSE /* length is ok */
4834
4835 numeric_result := ce_check_numeric(BRANCH_VALUE,1,length(BRANCH_VALUE));
4836 IF numeric_result = '0'
4837 THEN /* it is numeric */
4838
4839 BRANCH_VALUE_OUT := lpad(BRANCH_VALUE,9,0);
4840 IF (substr(BRANCH_VALUE_OUT,1,8) = '00000000')
4841 THEN /* After padding to 9 digits, the leading 8 cannot be all 0 */
4842 ce_failed_check('ROUTE_NUM','INVALID_RTN');
4843 ELSE
4844 -- Modulus 10
4845 l_mod_value := mod(((to_number(substr(BRANCH_VALUE_OUT,1,1)) * 3)
4846 + (to_number(substr(BRANCH_VALUE_OUT,2,1)) * 7)
4847 + (to_number(substr(BRANCH_VALUE_OUT,3,1)) * 1)
4848 + (to_number(substr(BRANCH_VALUE_OUT,4,1)) * 3)
4849 + (to_number(substr(BRANCH_VALUE_OUT,5,1)) * 7)
4850 + (to_number(substr(BRANCH_VALUE_OUT,6,1)) * 1)
4851 + (to_number(substr(BRANCH_VALUE_OUT,7,1)) * 3)
4852 + (to_number(substr(BRANCH_VALUE_OUT,8,1)) * 7)),10);
4853
4854 -- Bug 6052424 changed the IN clause
4855 IF (l_mod_value IN (0)) THEN
4856 cal_cd1:=l_mod_value;
4857 ELSE
4858 cal_cd1 :=10-l_mod_value;
4859 END IF;
4860 cd_value := substr(BRANCH_VALUE_OUT,9,1);
4861
4862 IF cal_cd1 = cd_value
4866 ELSE
4863 THEN /* check digit checks out validations successful */
4864 Xo_VALUE_OUT := BRANCH_VALUE_OUT;
4865 ce_passed_check('BRANCH','US');
4867 ce_failed_check('ROUTE_NUM','CD_FAILED');
4868 END IF;
4869 END IF; /* end of padding check */
4870 ELSE
4871 ce_failed_check('ROUTE_NUM','NUMERIC');
4872 END IF; /* end of numeric check */
4873 END IF; /* end length check */
4874 ELSE
4875 ce_passed_check('BRANCH','US');
4876 END IF; /* end of null check */
4877
4878 IF l_DEBUG in ('Y', 'C') THEN
4879 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_branch_us');
4880 END IF;
4881 END CE_VALIDATE_BRANCH_US;
4882
4883 /* ---------------------------------------------------------------------
4884 | Branch Number Validation: AUSTRALIA |
4885 ----------------------------------------------------------------------*/
4886 procedure CE_VALIDATE_BRANCH_AU(
4887 Xi_BRANCH_NUMBER in varchar2,
4888 Xi_BANK_ID in NUMBER,
4889 Xi_PASS_MAND_CHECK in varchar2
4890 ) AS
4891
4892 BRANCH_VALUE varchar2(30);
4893 BANK_VALUE varchar2(30);
4894 BANK_num varchar2(30);
4895 valid_branch_length number;
4896 numeric_result varchar2(40);
4897
4898 BEGIN
4899 IF l_DEBUG in ('Y', 'C') THEN
4900 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_branch_au');
4901 END IF;
4902
4903 -- remove spaces and hyphens --
4904 BRANCH_VALUE := upper(replace(Xi_BRANCH_NUMBER,' ',''));
4905 BRANCH_VALUE := replace(BRANCH_VALUE,'-','');
4906
4907
4908 IF Xi_PASS_MAND_CHECK = 'F'
4909 THEN
4910 ce_failed_mandatory('BRANCH_NUM');
4911
4912 ELSIF Xi_PASS_MAND_CHECK = 'P'
4913 THEN
4914 -- Bug 6856840: Added IF clause to handle cases where Bank ID is the Bank Number
4915 IF BANK_ID_IS_NUM = TRUE
4916 THEN
4917 bank_num := Xi_BANK_ID;
4918 ELSE
4919 -- fetch the bank number
4920 OPEN get_bank_num(Xi_BANK_ID);
4921 FETCH get_bank_num INTO bank_num;
4922 CLOSE get_bank_num;
4923 END IF;
4924 BANK_VALUE := upper(replace(bank_num,' ',''));
4925 BANK_VALUE := replace(BANK_VALUE,'-','');
4926
4927 -- Bank number and branch number should have total of 6 digits --
4928 valid_branch_length := 6 - nvl(length(BANK_VALUE), 0);
4929 IF (length(BRANCH_VALUE) = valid_branch_length)
4930 THEN
4931 /* length is ok */
4932 numeric_result := ce_check_numeric(BRANCH_VALUE,1,length(BRANCH_VALUE));
4933 IF numeric_result = '0'
4934 THEN
4935 /* its numeric - validations successful */
4936 ce_passed_check('BRANCH','AU');
4937 ELSE
4938 ce_failed_check('BRANCH_NUM','NUMERIC');
4939 END IF; /* end of numeric check */
4940 ELSE
4941 ce_failed_check('BRANCH_NUM','LENGTH',to_char(valid_branch_length));
4942 END IF; /* end of length check */
4943
4944 END IF; /* end of mandatory check */
4945
4946 IF l_DEBUG in ('Y', 'C') THEN
4947 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_branch_au');
4948 END IF;
4949 END CE_VALIDATE_BRANCH_AU;
4950
4951 /* ---------------------------------------------------------------------
4952 | Branch Number Validation: ISRAEL |
4953 ----------------------------------------------------------------------*/
4954 procedure CE_VALIDATE_BRANCH_IL(
4955 Xi_BRANCH_NUMBER in varchar2,
4956 Xi_PASS_MAND_CHECK in varchar2
4957 ) AS
4958
4959 branch_value VARCHAR2(30);
4960 numeric_result VARCHAR2(40);
4961
4962 BEGIN
4963 IF l_DEBUG in ('Y', 'C') THEN
4964 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_branch_il');
4965 END IF;
4966
4967 BRANCH_VALUE := upper(replace(Xi_BRANCH_NUMBER,' ',''));
4968 BRANCH_VALUE := replace(BRANCH_VALUE,'-','');
4969
4970 IF Xi_PASS_MAND_CHECK = 'F'
4971 THEN
4972 ce_failed_mandatory('BRANCH_NUM');
4973
4974 ELSIF Xi_PASS_MAND_CHECK = 'P'
4975 THEN
4976 IF length(BRANCH_VALUE) = 3
4977 THEN /* length is ok */
4978 numeric_result := ce_check_numeric(BRANCH_VALUE,1,length(BRANCH_VALUE));
4979 IF numeric_result = '0'
4980 THEN /* it's numeric - validations successful */
4981 ce_passed_check('BRANCH','IL');
4982 ELSE
4983 ce_failed_check('BRANCH_NUM','NUMERIC');
4984 END IF; /* end of numeric check */
4985 ELSE
4986 ce_failed_check('BRANCH_NUM','LENGTH','3');
4987 END IF; /* end of length check */
4988 END IF; /* end of mandatory check */
4989
4990 IF l_DEBUG in ('Y', 'C') THEN
4991 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_branch_il');
4992 END IF;
4996 | Branch Number Validation: NEW ZEALAND |
4993 END CE_VALIDATE_BRANCH_IL;
4994
4995 /* ---------------------------------------------------------------------
4997 ----------------------------------------------------------------------*/
4998 procedure CE_VALIDATE_BRANCH_NZ(
4999 Xi_BRANCH_NUMBER in varchar2,
5000 Xi_PASS_MAND_CHECK in varchar2
5001 ) AS
5002
5003 branch_value VARCHAR2(30);
5004 numeric_result VARCHAR2(40);
5005
5006 BEGIN
5007 IF l_DEBUG in ('Y', 'C') THEN
5008 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_branch_nz');
5009 END IF;
5010
5011 -- remove hyphens and spaces --
5012 BRANCH_VALUE := upper(replace(Xi_BRANCH_NUMBER,' ',''));
5013 BRANCH_VALUE := replace(BRANCH_VALUE,'-','');
5014
5015 IF Xi_PASS_MAND_CHECK = 'F'
5016 THEN
5017 ce_failed_mandatory('BRANCH_NUM');
5018
5019 ELSIF Xi_PASS_MAND_CHECK = 'P'
5020 THEN
5021 IF length(BRANCH_VALUE) = 4
5022 THEN /* length is ok */
5023 numeric_result := ce_check_numeric(BRANCH_VALUE,1,length(BRANCH_VALUE));
5024 IF numeric_result = '0'
5025 THEN /* it's numeric - validations successful */
5026 ce_passed_check('BRANCH','NZ');
5027 ELSE
5028 ce_failed_check('BRANCH_NUM','NUMERIC');
5029 END IF; /* end of numeric check */
5030 ELSE
5031 ce_failed_check('BRANCH_NUM','LENGTH','4');
5032 END IF; /* end of length check */
5033 END IF; /* end of mandatory check */
5034
5035 IF l_DEBUG in ('Y', 'C') THEN
5036 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_branch_nz');
5037 END IF;
5038 END CE_VALIDATE_BRANCH_NZ;
5039
5040 /* ---------------------------------------------------------------------
5041 | Branch Number Validation: JAPAN |
5042 ----------------------------------------------------------------------*/
5043 procedure CE_VALIDATE_BRANCH_JP(
5044 Xi_BRANCH_NUMBER in varchar2,
5045 Xi_BRANCH_NAME_ALT in varchar2,
5046 Xi_PASS_MAND_CHECK in varchar2
5047 ) AS
5048
5049 branch_value VARCHAR2(30);
5050 numeric_result VARCHAR2(40);
5051
5052 BEGIN
5053 IF l_DEBUG in ('Y', 'C') THEN
5054 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_branch_jp');
5055 END IF;
5056
5057 -- remove spaces and hyphens --
5058 BRANCH_VALUE := upper(replace(Xi_BRANCH_NUMBER,' ',''));
5059 BRANCH_VALUE := replace(BRANCH_VALUE,'-','');
5060
5061 IF Xi_PASS_MAND_CHECK = 'F'
5062 THEN
5063 ce_failed_mandatory('BRANCH_NUM');
5064 ELSIF Xi_PASS_MAND_CHECK = 'P'
5065 THEN
5066 -- bug 5746679 change from 4 numeric digits to 3 numeric digits
5067 IF length(BRANCH_VALUE) = 3
5068 THEN /* length is ok */
5069 numeric_result := ce_check_numeric(BRANCH_VALUE,1,length(BRANCH_VALUE));
5070 IF numeric_result = '0'
5071 THEN /* it's numeric - validations successful*/
5072 ce_passed_check('BRANCH','JP');
5073 ELSE
5074 ce_failed_check('BRANCH_NUM','NUMERIC');
5075 END IF; /* end of numeric check */
5076 ELSE
5077 ce_failed_check('BRANCH_NUM','LENGTH','3');
5078 END IF; /* end of length check */
5079 END IF; /* end of mandatory check */
5080
5081 -- Check that Branch Name Alt has been entered --
5082 IF (Xi_BRANCH_NAME_ALT IS NULL)
5083 THEN
5084 ce_failed_mandatory('BRANCH_NAME_ALT');
5085 END IF;
5086
5087 IF l_DEBUG in ('Y', 'C') THEN
5088 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_branch_jp');
5089 END IF;
5090 END CE_VALIDATE_BRANCH_JP;
5091
5092 /* --------------------------------------------------------------------
5093 | PRIVATE PROCEDURE |
5094 | CE_VALIDATE_ACCOUNT_* |
5095 | |
5096 | CALLED BY |
5097 | CE_VALIDATE_ACCOUNT |
5098 | |
5099 | DESCRIPTION |
5100 | ACCOUNT PROCEDURES, Validate 1 or more of the following: |
5101 | 1. Account number length |
5102 | 2. Account number datatype (numeric, alphanumeric, or alphabet |
5103 | 3. Account number Algorithm |
5104 | |
5105 | RETURN |
5106 | Xo_VALUE_OUT - Account Number is return with leading 0 |
5107 | (Not for all countries) |
5108 --------------------------------------------------------------------- */
5109
5110 /* ---------------------------------------------------------------------
5114 Xi_ACCOUNT_NUMBER in varchar2,
5111 | Account Number Validation: AUSTRIA |
5112 ----------------------------------------------------------------------*/
5113 procedure CE_VALIDATE_ACCOUNT_AT (
5115 Xi_PASS_MAND_CHECK in varchar2,
5116 Xo_VALUE_OUT out nocopy varchar2
5117 ) AS
5118 account_value VARCHAR2(30);
5119 numeric_result VARCHAR2(30);
5120
5121 BEGIN
5122 IF l_DEBUG in ('Y', 'C') THEN
5123 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_account_at');
5124 END IF;
5125
5126 -- remove spaces --
5127 account_value := upper(Xi_ACCOUNT_NUMBER );
5128 account_value := replace(replace(account_value,' ',''),'-','');
5129 Xo_VALUE_OUT := account_value;
5130
5131 IF length(account_value) > 11
5132 THEN
5133 ce_failed_check('ACCOUNT_NUM','LENGTH_MAX','11');
5134 ELSE /* length is ok */
5135 numeric_result := ce_check_numeric(ACCOUNT_VALUE,1,length(ACCOUNT_VALUE));
5136 IF numeric_result = '0'
5137 THEN /* it's numeric - validations successful*/
5138 Xo_VALUE_OUT := lpad(account_value,11,0);
5139 ce_passed_check('ACCOUNT','AT');
5140 ELSE
5141 ce_failed_check('ACCOUNT_NUM','NUMERIC');
5142 END IF; /* end of numeric check */
5143 END IF; /* end of length check */
5144
5145 IF l_DEBUG in ('Y', 'C') THEN
5146 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_account_at');
5147 END IF;
5148 END CE_VALIDATE_ACCOUNT_AT;
5149
5150 /* ---------------------------------------------------------------------
5151 | Account Number Validation: PORTUGAL |
5152 ----------------------------------------------------------------------*/
5153 procedure CE_VALIDATE_ACCOUNT_PT (
5154 Xi_ACCOUNT_NUMBER in varchar2,
5155 Xi_PASS_MAND_CHECK in varchar2,
5156 Xo_VALUE_OUT out nocopy varchar2
5157 ) AS
5158
5159 account_value VARCHAR2(30);
5160 numeric_result VARCHAR2(40);
5161
5162 BEGIN
5163 IF l_DEBUG in ('Y', 'C') THEN
5164 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_account_pt');
5165 END IF;
5166
5167 ACCOUNT_VALUE := upper(Xi_ACCOUNT_NUMBER );
5168 ACCOUNT_VALUE := replace(replace(ACCOUNT_VALUE,' ',''),'-','');
5169
5170 IF length(ACCOUNT_VALUE) <= 11
5171 THEN /* length is ok */
5172 numeric_result := ce_check_numeric(ACCOUNT_VALUE,1,length(ACCOUNT_VALUE));
5173 IF numeric_result = '0'
5174 THEN /* its numeric so continue */
5175 account_value := lpad(ACCOUNT_VALUE,11,0);
5176 Xo_VALUE_OUT := ACCOUNT_VALUE;
5177 ce_passed_check('ACCOUNT','PT');
5178 ELSE
5179 ce_failed_check('ACCOUNT_NUM','NUMERIC');
5180 END IF; /* end of numeric check */
5181 ELSE
5182 ce_failed_check('ACCOUNT_NUM','LENGTH_MAX','11');
5183 END IF; /* end of length check */
5184
5185 IF l_DEBUG in ('Y', 'C') THEN
5186 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_account_pt');
5187 END IF;
5188 END CE_VALIDATE_ACCOUNT_PT;
5189
5190 /* ---------------------------------------------------------------------
5191 | Account Number Validation: BELGIUM |
5192 ----------------------------------------------------------------------*/
5193 procedure CE_VALIDATE_ACCOUNT_BE (
5194 Xi_ACCOUNT_NUMBER in varchar2,
5195 Xi_PASS_MAND_CHECK in varchar2
5196 ) AS
5197
5198 account_value VARCHAR2(30);
5199 entered_format VARCHAR2(30);
5200 numeric_result VARCHAR2(40);
5201 bank_code VARCHAR2(3);
5202 middle VARCHAR2(7);
5203 check_digit VARCHAR2(2);
5204 conced VARCHAR2(30);
5205
5206 BEGIN
5207 IF l_DEBUG in ('Y', 'C') THEN
5208 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_account_be');
5209 END IF;
5210
5211 -- remove spaces --
5212 account_value := upper(replace(Xi_ACCOUNT_NUMBER,' ',''));
5213 conced := replace(account_value,'-','');
5214
5215 IF (length(CONCED) = 12)
5216 THEN /* length is ok */
5217 numeric_result := ce_check_numeric(CONCED,1,length(CONCED));
5218 IF numeric_result = '0'
5219 THEN /* its numeric, continue */
5220 /* Account number should be of the format 999-9999999-99 */
5221 entered_format := translate(account_value,'0123456789',
5222 '9999999999');
5223 IF (entered_format = '999-9999999-99')
5224 THEN /* account format is correct */
5225
5226 BANK_CODE := substr(ACCOUNT_VALUE,1,3);
5227 MIDDLE := substr(ACCOUNT_VALUE,5,7);
5228 CHECK_DIGIT := substr(ACCOUNT_VALUE,13,2);
5229
5230 -- The check digits are calculated by dividing the first 10
5231 -- digits by 97. If the remainder is 00, then the check
5232 -- digits are 97. Otherwise the check digits are the
5233 -- remainders.
5234 IF check_digit = 00
5235 THEN
5239 ELSIF MOD(BANK_CODE||MIDDLE,97) = MOD(CHECK_DIGIT,97)
5236 -- 2261587 fbreslin: 00 is never a valid check digit,
5237 -- even if the MOD of the account number is 0
5238 ce_failed_check('ACCOUNT_NUM','CD_FAILED');
5240 THEN /* check digit checks out - validations successful */
5241 ce_passed_check('ACCOUNT','BE');
5242 ELSE
5243 ce_failed_check('ACCOUNT_NUM','CD_FAILED');
5244 END IF; /* end of CD validation */
5245
5246 ELSE
5247 ce_failed_check('ACCOUNT_NUM','INVALID_FORMAT');
5248 END IF; /* end of format check */
5249
5250 ELSE
5251 ce_failed_check('ACCOUNT_NUM','NUMERIC');
5252 END IF; /* end of numeric check */
5253
5254 ELSE
5255 ce_failed_check('ACCOUNT_NUM','LENGTH','12');
5256 END IF; /* end of length check */
5257
5258 IF l_DEBUG in ('Y', 'C') THEN
5259 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_account_be');
5260 END IF;
5261 END CE_VALIDATE_ACCOUNT_BE;
5262
5263
5264 /* ---------------------------------------------------------------------
5265 | Account Number Validation: DENMARK |
5266 ----------------------------------------------------------------------*/
5267 procedure CE_VALIDATE_ACCOUNT_DK (
5268 Xi_ACCOUNT_NUMBER in varchar2,
5269 Xi_PASS_MAND_CHECK in varchar2,
5270 Xo_VALUE_OUT out nocopy varchar2
5271 ) AS
5272 account_value varchar2(30);
5273 numeric_result varchar2(30);
5274
5275 BEGIN
5276 IF l_DEBUG in ('Y', 'C') THEN
5277 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_account_dk');
5278 END IF;
5279
5280 account_value := upper(Xi_ACCOUNT_NUMBER );
5281 account_value := replace(replace(account_value,' ',''),'-','');
5282 Xo_VALUE_OUT := account_value;
5283
5284 IF length(account_value) <= 10
5285 THEN /* length is ok */
5286 numeric_result := ce_check_numeric(ACCOUNT_VALUE,1,length(ACCOUNT_VALUE));
5287 IF numeric_result = '0'
5288 THEN /* it's numeric so validations successful */
5289 ce_passed_check('ACCOUNT','DK');
5290 ELSE
5291 ce_failed_check('ACCOUNT_NUM','NUMERIC');
5292 END IF; /* end of numeric check */
5293 ELSE
5294 ce_failed_check('ACCOUNT_NUM','LENGTH_MAX','10');
5295 END IF; /* end of length check */
5296
5297 IF l_DEBUG in ('Y', 'C') THEN
5298 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_account_dk');
5299 END IF;
5300 END CE_VALIDATE_ACCOUNT_DK;
5301
5302 /* ---------------------------------------------------------------------
5303 | Account Number Validation: FRANCE |
5304 ----------------------------------------------------------------------*/
5305 procedure CE_VALIDATE_ACCOUNT_FR (
5306 Xi_ACCOUNT_NUMBER in varchar2,
5307 Xi_PASS_MAND_CHECK in varchar2,
5308 Xo_VALUE_OUT out nocopy varchar2
5309 ) AS
5310
5311 ACCOUNT_VALUE varchar2(30);
5312 CHK_CHARS varchar2(30);
5313
5314 BEGIN
5315 IF l_DEBUG in ('Y', 'C') THEN
5316 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_account_fr');
5317 END IF;
5318
5319 ACCOUNT_VALUE := upper(Xi_ACCOUNT_NUMBER );
5320 Xo_VALUE_OUT := ACCOUNT_VALUE;
5321 ACCOUNT_VALUE := replace(replace(ACCOUNT_VALUE,' ',''),'-','');
5322
5323 IF length(ACCOUNT_VALUE) <= 11
5324 THEN /* length is ok */
5325 Xo_VALUE_OUT := lpad(ACCOUNT_VALUE,11,0);
5326 ce_passed_check('ACCOUNT','FR');
5327 ELSE
5328 ce_failed_check('ACCOUNT_NUM','LENGTH_MAX','11');
5329 END IF; /* end of length check */
5330
5331 IF l_DEBUG in ('Y', 'C') THEN
5332 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_account_fr');
5333 END IF;
5334 END CE_VALIDATE_ACCOUNT_FR;
5335
5336
5337 /* ---------------------------------------------------------------------
5338 | Account Number Validation: NETHERLANDS |
5339 ----------------------------------------------------------------------*/
5340 procedure CE_VALIDATE_ACCOUNT_NL(
5341 Xi_ACCOUNT_NUMBER in varchar2,
5342 Xi_PASS_MAND_CHECK in varchar2
5343 ) AS
5344
5345 account_value VARCHAR2(30);
5346 numeric_result VARCHAR2(40);
5347 position_i NUMBER(2);
5348 integer_value NUMBER(1);
5349 multiplied_number NUMBER(2);
5350 multiplied_sum NUMBER(3);
5351 loop_sum NUMBER(3);
5352 /**************************/
5353 /* SUB-PROCEDURES SECTION */
5354 /**************************/
5355 procedure check_11(
5356 input_value IN VARCHAR2,
5357 mult_sum_result OUT NOCOPY NUMBER
5358 )
5359 IS
5360 BEGIN
5361 FOR position_i in 1..10 LOOP
5362 integer_value := substr(input_value,position_i,1);
5363 multiplied_number := integer_value * (11-position_i);
5367 END check_11;
5364 loop_sum := loop_sum + multiplied_number;
5365 END LOOP;
5366 mult_sum_result := loop_sum;
5368 /**************************/
5369 /* MAIN SECTION */
5370 /**************************/
5371 BEGIN
5372 IF l_DEBUG in ('Y', 'C') THEN
5373 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_account_nl');
5374 END IF;
5375
5376 multiplied_number := 0;
5377 multiplied_sum := 0;
5378 loop_sum := 0;
5379
5380 ACCOUNT_VALUE := upper(Xi_ACCOUNT_NUMBER );
5381 ACCOUNT_VALUE := replace(replace(account_value,' ',''),'-','');
5382
5383 IF substr(ACCOUNT_VALUE,1,1) = 'P' OR substr(ACCOUNT_VALUE,1,1) = 'G'
5384 THEN /* 'Giro' and 'Postbank' accounts */
5385 IF length(ACCOUNT_VALUE) < 9 and instr(ACCOUNT_VALUE,' ') = 0
5386 THEN
5387 numeric_result := ce_check_numeric(ACCOUNT_VALUE,2,length(ACCOUNT_VALUE));
5388 IF numeric_result = '0'
5389 THEN /* its numeric so continue */
5390 IF substr(ACCOUNT_VALUE,2,7) > 0 and substr(ACCOUNT_VALUE,2,7) <= 9999999
5391 THEN /* all validations successful */
5392 ce_passed_check('ACCOUNT','NL');
5393 ELSE
5394 ce_failed_check('ACCOUNT_NUM','POST_GIRO');
5395 END IF;
5396 ELSE /* failed numeric check */
5397 ce_failed_check('ACCOUNT_NUM','POST_GIRO');
5398 END IF;
5399 ELSE /* failed length check */
5400 ce_failed_check('ACCOUNT_NUM','POST_GIRO');
5401 END IF;
5402
5403 ELSE /* not a PostGiro account */
5404
5405 -- check length
5406 IF length(ACCOUNT_VALUE) < 9
5407 THEN
5408 ce_failed_check('ACCOUNT_NUM','LENGTH_MIN','9');
5409 ELSIF length(ACCOUNT_VALUE) > 10
5410 THEN
5411 ce_failed_check('ACCOUNT_NUM','LENGTH_MAX','10');
5412 ELSE /* length is ok */
5413
5414 numeric_result := ce_check_numeric(ACCOUNT_VALUE,1,length(ACCOUNT_VALUE));
5415 IF numeric_result = '0' AND instr(ACCOUNT_VALUE,' ') = 0
5416 THEN /* it's numeric so continue */
5417
5418 ACCOUNT_VALUE := lpad(ACCOUNT_VALUE,10,0);
5419 check_11(ACCOUNT_VALUE,multiplied_sum);
5420 IF mod(multiplied_sum,11) = 0
5421 THEN
5422 ce_passed_check('ACCOUNT','NL');
5423 ELSE
5424 ce_failed_check('ACCOUNT_NUM','CD_FAILED');
5425 END IF; /* end of CD validation */
5426
5427 ELSE
5428 ce_failed_check('ACCOUNT_NUM','NUMERIC');
5429 END IF; /* end of numeric check */
5430
5431 END IF; /* end of length check */
5432
5433 END IF; /* end of 'Postgiro' check */
5434
5435 IF l_DEBUG in ('Y', 'C') THEN
5436 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_account_nl');
5437 END IF;
5438 END CE_VALIDATE_ACCOUNT_NL;
5439
5440 /* ---------------------------------------------------------------------
5441 | Account Number Validation: SPAIN |
5442 ----------------------------------------------------------------------*/
5443 procedure CE_VALIDATE_ACCOUNT_ES(
5444 Xi_ACCOUNT_NUMBER in varchar2,
5445 Xi_PASS_MAND_CHECK in varchar2,
5446 Xo_VALUE_OUT out nocopy varchar2
5447 ) AS
5448
5449 account_value VARCHAR2(30);
5450 numeric_result VARCHAR2(40);
5451
5452 BEGIN
5453 IF l_DEBUG in ('Y', 'C') THEN
5454 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_account_es');
5455 END IF;
5456
5457 ACCOUNT_VALUE := upper(Xi_ACCOUNT_NUMBER );
5458 Xo_VALUE_OUT := ACCOUNT_VALUE;
5459 ACCOUNT_VALUE := replace(replace(ACCOUNT_VALUE,' ',''),'-','');
5460
5461 IF length(ACCOUNT_VALUE) <= 10
5462 THEN /* length is ok */
5463 ACCOUNT_VALUE := lpad(ACCOUNT_VALUE,10,0);
5464 numeric_result := ce_check_numeric(ACCOUNT_VALUE,1,length(ACCOUNT_VALUE));
5465 IF numeric_result = '0'
5466 THEN /* its numeric so continue */
5467 Xo_VALUE_OUT := ACCOUNT_VALUE;
5468 ce_passed_check('ACCOUNT','ES');
5469 ELSE
5470 ce_failed_check('ACCOUNT_NUM','NUMERIC');
5471 END IF; /* end of numeric check */
5472 ELSE
5473 ce_failed_check('ACCOUNT_NUM','LENGTH_MAX','10');
5474 END IF; /* end of length check */
5475
5476 IF l_DEBUG in ('Y', 'C') THEN
5477 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_account_es');
5478 END IF;
5479 END CE_VALIDATE_ACCOUNT_ES;
5480
5481 /* ---------------------------------------------------------------------
5482 | Account Number Validation: NORWAY |
5483 ----------------------------------------------------------------------*/
5484 procedure CE_VALIDATE_ACCOUNT_NO (
5485 Xi_ACCOUNT_NUMBER in varchar2,
5486 Xi_PASS_MAND_CHECK in varchar2
5487 ) AS
5488
5489 account_value VARCHAR2(30);
5490 numeric_result VARCHAR2(40);
5491 computed_sum NUMBER;
5492 calc_cd NUMBER;
5496 IF l_DEBUG in ('Y', 'C') THEN
5493 check_digit VARCHAR2(20);
5494
5495 BEGIN
5497 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_account_no');
5498 END IF;
5499
5500 ACCOUNT_VALUE := upper(Xi_ACCOUNT_NUMBER );
5501 ACCOUNT_VALUE := replace(replace(account_value,' ',''),'-','');
5502
5503 IF length(ACCOUNT_VALUE) = 11
5504 THEN /* length is ok */
5505 check_digit := substr(ACCOUNT_VALUE,11,1);
5506
5507 numeric_result := ce_check_numeric(ACCOUNT_VALUE,1,length(ACCOUNT_VALUE));
5508 IF numeric_result = '0'
5509 THEN /* its numeric so continue */
5510 /* perform check digit validation only if 5,6 digits are not 0 */
5511 IF (substr(ACCOUNT_VALUE,5,2) <> '00')
5512 THEN
5513 computed_sum := 5 * substr(ACCOUNT_VALUE,1,1) +
5514 4 * substr(ACCOUNT_VALUE,2,1) +
5515 3 * substr(ACCOUNT_VALUE,3,1) +
5516 2 * substr(ACCOUNT_VALUE,4,1) +
5517 7 * substr(ACCOUNT_VALUE,5,1) +
5518 6 * substr(ACCOUNT_VALUE,6,1) +
5519 5 * substr(ACCOUNT_VALUE,7,1) +
5520 4 * substr(ACCOUNT_VALUE,8,1) +
5521 3 * substr(ACCOUNT_VALUE,9,1) +
5522 2 * substr(ACCOUNT_VALUE,10,1);
5523
5524 calc_cd := 11 - mod(computed_sum,11);
5525
5526 /* if remainder is 0 then check digit is 0 */
5527 IF calc_cd = 11 THEN
5528 calc_cd := 0;
5529 ELSIF calc_cd = 10 THEN
5530 /* check digit 10 cannot be used */
5531 ce_failed_check('ACCOUNT_NUM','CD_FAILED');
5532 END IF;
5533
5534 IF to_char(calc_cd) <> check_digit
5535 THEN /* check digit is not ok */
5536 ce_failed_check('ACCOUNT_NUM','CD_FAILED');
5537 ELSE
5538 ce_passed_check('ACCOUNT','NO');
5539 END IF;
5540 END IF; /* end of check digit validation */
5541
5542 ELSE
5543 ce_failed_check('ACCOUNT_NUM','NUMERIC');
5544 END IF; /* end of numeric check */
5545
5546 ELSE
5547 ce_failed_check('ACCOUNT_NUM','LENGTH','11');
5548 END IF; /* end of length check */
5549
5550 IF l_DEBUG in ('Y', 'C') THEN
5551 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_account_no');
5552 END IF;
5553 END CE_VALIDATE_ACCOUNT_NO;
5554
5555 /* ---------------------------------------------------------------------
5556 | Account Number Validation: FINLAND |
5557 ----------------------------------------------------------------------*/
5558 procedure CE_VALIDATE_ACCOUNT_FI (
5559 Xi_ACCOUNT_NUMBER in varchar2,
5560 Xi_PASS_MAND_CHECK in varchar2
5561 ) AS
5562
5563 account_value VARCHAR2(30);
5564 computed_sum VARCHAR2(20);
5565 branch_number VARCHAR2(3);
5566 numeric_result VARCHAR2(40);
5567
5568 BEGIN
5569 IF l_DEBUG in ('Y', 'C') THEN
5570 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_account_fi');
5571 END IF;
5572
5573 ACCOUNT_VALUE := upper(Xi_ACCOUNT_NUMBER );
5574 ACCOUNT_VALUE := replace(replace(ACCOUNT_VALUE,'-',''),' ','');
5575
5576
5577 SELECT decode(substr(Xi_ACCOUNT_NUMBER,1,1),'1','Y',
5578 '2','Y', '3','Y', '4','N',
5579 '5','N', '6','Y', '7','N',
5580 '8','Y', '9','Y', 'ERR')
5581 INTO BRANCH_NUMBER
5582 FROM DUAL;
5583
5584 IF BRANCH_NUMBER = 'Y'
5585 THEN
5586 ACCOUNT_VALUE := substr(Xi_ACCOUNT_NUMBER ,1,6)||
5587 lpad(substr(Xi_ACCOUNT_NUMBER ,8),8,'0');
5588 ELSIF BRANCH_NUMBER = 'N'
5589 THEN
5590 ACCOUNT_VALUE := substr(Xi_ACCOUNT_NUMBER ,1,6)||
5591 substr(Xi_ACCOUNT_NUMBER ,8,1)||
5592 lpad(substr(Xi_ACCOUNT_NUMBER ,9),7,'0');
5593 ELSE
5594 ce_failed_check('ACCOUNT_NUM','CD_FAILED');
5595 RETURN;
5596 END IF;
5597
5598 numeric_result := ce_check_numeric(ACCOUNT_VALUE,1,length(ACCOUNT_VALUE));
5599 IF numeric_result <> '0'
5600 THEN /* its not numeric */
5601 ce_failed_check('ACCOUNT_NUM','NUMERIC');
5602 RETURN;
5603 END IF;
5604
5605 IF substr(ACCOUNT_VALUE,1,2) = '88'
5606 THEN
5607 COMPUTED_SUM := to_char(
5608 1 * to_number(substr(ACCOUNT_VALUE,8,1)) +
5609 3 * to_number(substr(ACCOUNT_VALUE,9,1)) +
5610 7 * to_number(substr(ACCOUNT_VALUE,10,1)) +
5611 1 * to_number(substr(ACCOUNT_VALUE,11,1)) +
5612 3 * to_number(substr(ACCOUNT_VALUE,12,1)) +
5613 7 * to_number(substr(ACCOUNT_VALUE,13,1)));
5614
5615 IF substr(ACCOUNT_VALUE,14,1) = to_char(10-to_number(substr(COMPUTED_SUM,length(COMPUTED_SUM),1)))
5616 OR
5620 ELSE
5617 (substr(ACCOUNT_VALUE,14,1) = '0' AND substr(COMPUTED_SUM,length(COMPUTED_SUM),1) = '0')
5618 THEN
5619 ce_passed_check('ACCOUNT','FI');
5621 ce_failed_check('ACCOUNT_NUM','CD_FAILED');
5622 return;
5623 END IF;
5624 ELSE
5625 COMPUTED_SUM := mod(2*substr(ACCOUNT_VALUE,1,1),10) +
5626 trunc(2*substr(ACCOUNT_VALUE,1,1)/10) +
5627 mod(1*substr(ACCOUNT_VALUE,2,1),10) +
5628 mod(2*substr(ACCOUNT_VALUE,3,1),10) +
5629 trunc(2*substr(ACCOUNT_VALUE,3,1)/10) +
5630 mod(1*substr(ACCOUNT_VALUE,4,1),10) +
5631 mod(2*substr(ACCOUNT_VALUE,5,1),10) +
5632 trunc(2*substr(ACCOUNT_VALUE,5,1)/10) +
5633 mod(1*substr(ACCOUNT_VALUE,6,1),10) +
5634 mod(2*substr(ACCOUNT_VALUE,7,1),10) +
5635 trunc(2*substr(ACCOUNT_VALUE,7,1)/10) +
5636 mod(1*substr(ACCOUNT_VALUE,8,1),10) +
5637 mod(2*substr(ACCOUNT_VALUE,9,1),10) +
5638 trunc(2*substr(ACCOUNT_VALUE,9,1)/10) +
5639 mod(1*substr(ACCOUNT_VALUE,10,1),10) +
5640 mod(2*substr(ACCOUNT_VALUE,11,1),10) +
5641 trunc(2*substr(ACCOUNT_VALUE,11,1)/10) +
5642 mod(1*substr(ACCOUNT_VALUE,12,1),10) +
5643 mod(2*substr(ACCOUNT_VALUE,13,1),10) +
5644 trunc(2*substr(ACCOUNT_VALUE,13,1)/10);
5645
5646 IF trunc((COMPUTED_SUM+9)/10)*10 - COMPUTED_SUM <>
5647 to_number(substr(ACCOUNT_VALUE,14,1))
5648 THEN
5649 ce_failed_check('ACCOUNT_NUM','CD_FAILED');
5650 return;
5651 END IF;
5652 END IF;
5653
5654 IF l_DEBUG in ('Y', 'C') THEN
5655 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_account_fi');
5656 END IF;
5657 END CE_VALIDATE_ACCOUNT_FI;
5658
5659 /* ---------------------------------------------------------------------
5660 | Account Number Validation: GERMANY |
5661 ----------------------------------------------------------------------*/
5662 procedure CE_VALIDATE_ACCOUNT_DE(
5663 Xi_ACCOUNT_NUMBER in varchar2,
5664 Xo_VALUE_OUT out nocopy varchar2
5665 ) AS
5666
5667 account_value VARCHAR2(60);
5668 numeric_result VARCHAR2(40);
5669
5670 BEGIN
5671 IF l_DEBUG in ('Y', 'C') THEN
5672 cep_standard.debug('>>CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_DE');
5673 END IF;
5674
5675 account_value := upper(Xi_ACCOUNT_NUMBER );
5676 Xo_VALUE_OUT := account_value;
5677 account_value := replace(replace(account_value,' ',''),'-','');
5678
5679 IF length(account_value) <= 10
5680 THEN /* length is ok */
5681 numeric_result := ce_check_numeric(account_value,1,length(account_value));
5682 IF numeric_result = '0'
5683 THEN /* its numeric so validations successful */
5684 Xo_VALUE_OUT := lpad(account_value,10,0);
5685 ce_passed_check('ACCOUNT','DE');
5686 ELSE
5687 ce_failed_check('ACCOUNT_NUM','NUMERIC');
5688 END IF; /* end of numeric check */
5689 ELSE
5690 ce_failed_check('ACCOUNT_NUM','LENGTH_MAX','10');
5691 END IF; /* end of length check */
5692
5693 IF l_DEBUG in ('Y', 'C') THEN
5694 cep_standard.debug('<<CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_DE');
5695 END IF;
5696 END CE_VALIDATE_ACCOUNT_DE;
5697
5698 /* ---------------------------------------------------------------------
5699 | Account Number Validation: GREECE |
5700 ----------------------------------------------------------------------*/
5701 procedure CE_VALIDATE_ACCOUNT_GR(
5702 Xi_ACCOUNT_NUMBER in varchar2,
5703 Xo_VALUE_OUT out nocopy varchar2
5704 ) AS
5705
5706 account_value VARCHAR2(30);
5707 numeric_result VARCHAR2(40);
5708
5709 BEGIN
5710 IF l_DEBUG in ('Y', 'C') THEN
5711 cep_standard.debug('>>CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_GR');
5712 END IF;
5713
5714 -- remove spaces and hyphens --
5715 account_value := upper(replace(Xi_ACCOUNT_NUMBER,' ',''));
5716 account_value := replace(account_value,'-','');
5717
5718 IF length(account_value) < 8
5719 THEN
5720 ce_failed_check('ACCOUNT_NUM','LENGTH_MIN','8');
5721 ELSIF length(account_value) > 12
5722 THEN
5723 ce_failed_check('ACCOUNT_NUM','LENGTH_MAX','12');
5724 ELSE /* length is ok */
5725 numeric_result := ce_check_numeric(ACCOUNT_VALUE,1,length(ACCOUNT_VALUE));
5726 IF numeric_result = '0'
5727 THEN /* its numeric so validations success full */
5728 Xo_VALUE_OUT := lpad(account_value,12,0);
5729 ce_passed_check('ACCOUNT','GR');
5730 ELSE
5731 ce_failed_check('ACCOUNT_NUM','NUMERIC');
5732 END IF; /* end numeric check */
5733 END IF; /* end of length check */
5734
5735 IF l_DEBUG in ('Y', 'C') THEN
5739
5736 cep_standard.debug('<<CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_GR');
5737 END IF;
5738 END CE_VALIDATE_ACCOUNT_GR;
5740 /* ---------------------------------------------------------------------
5741 | Account Number Validation: ICELAND |
5742 ----------------------------------------------------------------------*/
5743 procedure CE_VALIDATE_ACCOUNT_IS(
5744 Xi_ACCOUNT_NUMBER in varchar2,
5745 Xo_VALUE_OUT out nocopy varchar2
5746 ) AS
5747
5748 ac_value VARCHAR2(50);
5749 cal_cd NUMBER;
5750 cal_cd1 NUMBER;
5751 cd_value VARCHAR2(50);
5752 ac_cd_value VARCHAR2(50);
5753 numeric_result VARCHAR2(40);
5754
5755 BEGIN
5756 IF l_DEBUG in ('Y', 'C') THEN
5757 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_account_is');
5758 END IF;
5759
5760 -- remove spaces and hyphens --
5761 ac_value := upper(Xi_ACCOUNT_NUMBER );
5762 ac_value := replace(ac_value,' ','');
5763 ac_value := replace(ac_value,'-','');
5764
5765 IF length(ac_value) <= 18
5766 THEN /* length is ok */
5767 numeric_result := ce_check_numeric(AC_VALUE,1,length(AC_VALUE));
5768 IF numeric_result = '0'
5769 THEN /* its numeric so continue */
5770 ac_value := lpad(ac_value,18,0);
5771 Xo_VALUE_OUT := ac_value;
5772
5773 cal_cd1 := mod(( (to_number(substr(ac_value,9,1)) * 3)
5774 +(to_number(substr(ac_value,10,1)) * 2)
5775 +(to_number(substr(ac_value,11,1)) * 7)
5776 +(to_number(substr(ac_value,12,1)) * 6)
5777 +(to_number(substr(ac_value,13,1)) * 5)
5778 +(to_number(substr(ac_value,14,1)) * 4)
5779 +(to_number(substr(ac_value,15,1)) * 3)
5780 +(to_number(substr(ac_value,16,1)) * 2)),11);
5781
5782 IF cal_cd1 = 0 THEN
5783 cal_cd := 0;
5784 ELSE
5785 cal_cd := (11 - cal_cd1);
5786 END IF;
5787
5788 -- the check digit is the penultimate digit of (a3).
5789 ac_cd_value := substr(ac_value,17,1);
5790
5791 IF ac_cd_value = cal_cd
5792 THEN /* check digit checks out */
5793 ce_passed_check('ACCOUNT','IS');
5794 ELSE
5795 ce_failed_check('ACCOUNT_NUM','CD_FAILED');
5796 END IF; /* end of CD validation */
5797
5798 ELSE
5799 ce_failed_check('ACCOUNT_NUM','NUMERIC');
5800 END IF; /* end of numeric check */
5801
5802 ELSE
5803 ce_failed_check('ACCOUNT_NUM','LENGTH_MAX','18');
5804 END IF; /* end of length check */
5805
5806 IF l_DEBUG in ('Y', 'C') THEN
5807 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_account_is');
5808 END IF;
5809 END CE_VALIDATE_ACCOUNT_IS;
5810
5811 /* ---------------------------------------------------------------------
5812 | Account Number Validation: IRELAND |
5813 ----------------------------------------------------------------------*/
5814 procedure CE_VALIDATE_ACCOUNT_IE(
5815 Xi_ACCOUNT_NUMBER in varchar2
5816 ) AS
5817
5818 account_value VARCHAR2(30);
5819 numeric_result VARCHAR2(40);
5820
5821 BEGIN
5822 IF l_DEBUG in ('Y', 'C') THEN
5823 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_account_ie');
5824 END IF;
5825
5826 -- remove spaces and hyphens --
5827 account_value := upper(Xi_ACCOUNT_NUMBER );
5828 account_value := replace(account_value,' ','');
5829 account_value := replace(account_value,'-','');
5830
5831 IF length(account_value) = 8
5832 THEN /* length is ok */
5833 numeric_result := ce_check_numeric(ACCOUNT_VALUE,1,length(ACCOUNT_VALUE));
5834 IF numeric_result = '0'
5835 THEN /* it's numeric so validations successful */
5836 ce_passed_check('ACCOUNT','IE');
5837 ELSE
5838 ce_failed_check('ACCOUNT_NUM','NUMERIC');
5839 END IF; /* end of numeric check */
5840 ELSE
5841 ce_failed_check('ACCOUNT_NUM','LENGTH','8');
5842 END IF; /* end of length check */
5843
5844 IF l_DEBUG in ('Y', 'C') THEN
5845 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_account_ie');
5846 END IF;
5847 END CE_VALIDATE_ACCOUNT_IE;
5848
5849 /* ---------------------------------------------------------------------
5850 | Account Number Validation: ITALY |
5851 ----------------------------------------------------------------------*/
5852 procedure CE_VALIDATE_ACCOUNT_IT(
5853 Xi_ACCOUNT_NUMBER in varchar2,
5854 Xo_VALUE_OUT OUT NOCOPY varchar2
5855 ) AS
5856
5857 account_value VARCHAR2(50);
5858
5859 BEGIN
5860 IF l_DEBUG in ('Y', 'C') THEN
5861 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_account_it');
5862 END IF;
5863
5864 -- remove hyphens and spaces --
5865 account_value := upper(replace(Xi_ACCOUNT_NUMBER,' ',''));
5869 THEN /* length is ok */
5866 account_value := replace(account_value,'-','');
5867
5868 IF length(account_value) <= 12
5870 Xo_VALUE_OUT := lpad(account_value,12,0);
5871 ce_passed_check('ACCOUNT','IT');
5872 ELSE
5873 ce_failed_check('ACCOUNT_NUM','LENGTH_MAX','12');
5874 END IF; /* end of length check */
5875
5876 IF l_DEBUG in ('Y', 'C') THEN
5877 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_account_it');
5878 END IF;
5879 END CE_VALIDATE_ACCOUNT_IT;
5880
5881 /* ---------------------------------------------------------------------
5882 | Account Number Validation: LUXEMBOURG |
5883 ----------------------------------------------------------------------*/
5884 procedure CE_VALIDATE_ACCOUNT_LU(
5885 Xi_ACCOUNT_NUMBER in varchar2
5886 ) AS
5887 account_value varchar2(30);
5888 numeric_result varchar2(40);
5889
5890 BEGIN
5891 IF l_DEBUG in ('Y', 'C') THEN
5892 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_account_lu');
5893 END IF;
5894
5895 -- remove spaces and hyphens --
5896 account_value := upper(Xi_ACCOUNT_NUMBER );
5897 account_value := replace(account_value,' ','');
5898 account_value := replace(account_value,'-','');
5899
5900 -- 6005620: Standardized IBAN structure. Account number: 13an
5901 IF length(account_value) = 13
5902 THEN /* length is ok */
5903 ce_passed_check('ACCOUNT','LU');
5904 ELSE
5905 -- Bug 7570051 : Correct length token
5906 ce_failed_check('ACCOUNT_NUM','LENGTH','13');
5907 END IF; /* end of length check */
5908
5909 IF l_DEBUG in ('Y', 'C') THEN
5910 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_account_lu');
5911 END IF;
5912 END CE_VALIDATE_ACCOUNT_LU;
5913
5914 /* ---------------------------------------------------------------------
5915 | Account Number Validation: POLAND |
5916 ----------------------------------------------------------------------*/
5917 procedure CE_VALIDATE_ACCOUNT_PL(
5918 Xi_ACCOUNT_NUMBER in varchar2
5919 ) AS
5920 account_value VARCHAR2(30);
5921 numeric_result VARCHAR2(40);
5922
5923 BEGIN
5924 IF l_DEBUG in ('Y', 'C') THEN
5925 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_account_pl');
5926 END IF;
5927
5928 -- remove spaces and hyphens --
5929 account_value := upper(Xi_ACCOUNT_NUMBER );
5930 account_value := replace(account_value,' ','');
5931 account_value := replace(account_value,'-','');
5932
5933 IF length(account_value) <= 26
5934 THEN /* length is ok */
5935 ce_passed_check('ACCOUNT','PL');
5936 ELSE
5937 ce_failed_check('ACCOUNT_NUM','LENGTH_MAX','26');
5938 END IF; /* end of length check */
5939
5940 IF l_DEBUG in ('Y', 'C') THEN
5941 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_account_pl');
5942 END IF;
5943 END CE_VALIDATE_ACCOUNT_PL;
5944
5945 /* ---------------------------------------------------------------------
5946 | Account Number Validation: SWEDEN |
5947 ----------------------------------------------------------------------*/
5948 procedure CE_VALIDATE_ACCOUNT_SE(
5949 Xi_ACCOUNT_NUMBER in varchar2
5950 ) AS
5951 account_value VARCHAR2(30);
5952 numeric_result VARCHAR2(40);
5953
5954 BEGIN
5955 IF l_DEBUG in ('Y', 'C') THEN
5956 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_account_se');
5957 END IF;
5958
5959 -- remove spaces and hyphens --
5960 account_value := upper(replace(Xi_ACCOUNT_NUMBER ,' ',''));
5961 account_value := replace(account_value,'-','');
5962
5963 IF length(account_value) <= 11
5964 THEN /* length is ok */
5965 numeric_result := ce_check_numeric(ACCOUNT_VALUE,1,length(ACCOUNT_VALUE));
5966 IF numeric_result = '0'
5967 THEN
5968 ce_passed_check('ACCOUNT','SE');
5969 ELSE
5970 ce_failed_check('ACCOUNT_NUM','NUMERIC');
5971 END IF;
5972 ELSE
5973 ce_failed_check('ACCOUNT_NUM','LENGTH_MAX','11');
5974 END IF; /* end of length check */
5975
5976 IF l_DEBUG in ('Y', 'C') THEN
5977 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_account_se');
5978 END IF;
5979 END CE_VALIDATE_ACCOUNT_SE;
5980
5981 /* ---------------------------------------------------------------------
5982 | Account Number Validation: SWITZERLAND |
5983 ----------------------------------------------------------------------*/
5984 procedure CE_VALIDATE_ACCOUNT_CH(
5985 Xi_ACCOUNT_NUMBER in varchar2,
5986 Xi_ACCOUNT_TYPE in varchar2
5987 ) AS
5988
5989 account_value VARCHAR2(30);
5990
5991 BEGIN
5992 IF l_DEBUG in ('Y', 'C') THEN
5993 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_account_ch');
5994 END IF;
5995
5996 -- remove spaces and hyphens --
5997 account_value := upper(replace(Xi_ACCOUNT_NUMBER,' ',''));
5998 account_value := replace(account_value,'-','');
5999
6000 IF length(account_value) > 16 THEN
6004 -- Account type needs to be entered --
6001 ce_failed_check('ACCOUNT_NUM','LENGTH_MAX','16');
6002 END IF; /* end of length check */
6003
6005 IF (Xi_ACCOUNT_TYPE is null) THEN
6006 ce_failed_mandatory('ACCOUNT_TYPE');
6007 END if;
6008
6009 IF l_DEBUG in ('Y', 'C') THEN
6010 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_account_ch');
6011 END IF;
6012 END CE_VALIDATE_ACCOUNT_CH;
6013
6014 /* ---------------------------------------------------------------------
6015 | Account Number Validation: UNITED KINGDOM |
6016 ----------------------------------------------------------------------*/
6017 procedure CE_VALIDATE_ACCOUNT_GB(
6018 Xi_ACCOUNT_NUMBER in varchar2,
6019 Xo_VALUE_OUT out nocopy varchar2
6020 ) AS
6021
6022 account_value VARCHAR2(30);
6023 numeric_result VARCHAR2(40);
6024
6025 BEGIN
6026 IF l_DEBUG in ('Y', 'C') THEN
6027 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_account_gb');
6028 END IF;
6029
6030 Xo_VALUE_OUT := account_value;
6031 account_value := upper(replace(Xi_ACCOUNT_NUMBER,' ',''));
6032 account_value := replace(account_value,'-','');
6033
6034 IF length(account_value) <= 8
6035 THEN /* length is ok */
6036 numeric_result := ce_check_numeric(ACCOUNT_VALUE,1,length(ACCOUNT_VALUE));
6037 IF numeric_result = '0'
6038 THEN /* it's numeric */
6039 --7022651: Remove zero padding for UK Account Numbers.
6040 --Xo_VALUE_OUT := lpad(account_value,8,0);
6041 ce_passed_check('ACCOUNT','GB');
6042 ELSE
6043 ce_failed_check('ACCOUNT_NUM','NUMERIC');
6044 END IF; /* end of numeric check */
6045 ELSE
6046 --7022651: Restrict length to 8.
6047 ce_failed_check('ACCOUNT_NUM','LENGTH_MAX','8');
6048 END IF; /* end of length check */
6049
6050 IF l_DEBUG in ('Y', 'C') THEN
6051 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_account_gb');
6052 END IF;
6053 END CE_VALIDATE_ACCOUNT_GB;
6054
6055 /* ---------------------------------------------------------------------
6056 | Account Number Validation: BRAZIL |
6057 ----------------------------------------------------------------------*/
6058 procedure CE_VALIDATE_ACCOUNT_BR(
6059 Xi_ACCOUNT_NUMBER in varchar2,
6060 Xi_SECONDARY_ACCOUNT_REFERENCE in varchar2
6061 ) AS
6062
6063 account_ref VARCHAR2(30);
6064 numeric_result VARCHAR2(40);
6065
6066 BEGIN
6067 IF l_DEBUG in ('Y', 'C') THEN
6068 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_account_br');
6069 END IF;
6070
6071 -- remove spaces and hyphens from company code --
6072 account_ref := upper(replace(Xi_SECONDARY_ACCOUNT_REFERENCE,' ',''));
6073 account_ref := replace(account_ref,'-','');
6074
6075 IF (account_ref) IS NOT NULL
6076 THEN /* only validate if a value has been entered */
6077 IF length(account_ref) <= 15
6078 THEN /* length is ok */
6079 numeric_result := ce_check_numeric(ACCOUNT_REF,1,length(ACCOUNT_REF));
6080 IF numeric_result = '0'
6081 THEN /* its numeric so validations successful */
6082 ce_passed_check('ACCOUNT','BR');
6083 ELSE
6084 ce_failed_check('COMPANY_CODE','NUMERIC');
6085 END IF; /* end of numeric check */
6086 ELSE
6087 ce_failed_check('COMPANY_CODE','LENGTH_MAX','15');
6088 END IF; /* end of length check */
6089 END IF; /* end of not null check */
6090
6091 IF l_DEBUG in ('Y', 'C') THEN
6092 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_account_br');
6093 END IF;
6094 END CE_VALIDATE_ACCOUNT_BR;
6095
6096 /* ---------------------------------------------------------------------
6097 | Account Number Validation: AUSTRALIA |
6098 ----------------------------------------------------------------------*/
6099 procedure CE_VALIDATE_ACCOUNT_AU(
6100 Xi_ACCOUNT_NUMBER in varchar2,
6101 Xi_CURRENCY_CODE in varchar2
6102 ) AS
6103
6104 account_value VARCHAR2(30);
6105 numeric_result VARCHAR2(40);
6106
6107 BEGIN
6108 IF l_DEBUG in ('Y', 'C') THEN
6109 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_account_au');
6110 END IF;
6111
6112 -- remove spaces and hyphens
6113 account_value := upper(Xi_ACCOUNT_NUMBER );
6114 account_value := replace(account_value,' ','');
6115 account_value := replace(account_value,'-','');
6116
6117 -- Bug 6079454 changed minimum length to 6
6118 IF length(account_value) > 10
6119 THEN
6120 ce_failed_check('ACCOUNT_NUM','LENGTH_MAX','10');
6121 ELSIF length(account_value) < 6
6122 THEN
6123 ce_failed_check('ACCOUNT_NUM','LENGTH_MIN','6');
6124 ELSE /* length is ok */
6125 -- 6760446: Numeric check only for AUD denominated accounts.
6126 IF Xi_CURRENCY_CODE = 'AUD'
6127 THEN
6128 numeric_result := ce_check_numeric(ACCOUNT_VALUE,1,length(ACCOUNT_VALUE));
6129 IF numeric_result = '0'
6133 ce_failed_check('ACCOUNT_NUM','NUMERIC');
6130 THEN /* its is numeric - validation succesful */
6131 ce_passed_check('ACCOUNT','AU');
6132 ELSE
6134 END IF; /* end of numeric check */
6135 ELSE
6136 ce_passed_check('ACCOUNT','AU');
6137 END IF; /* end of currency check */
6138 END IF; /* end of length check */
6139
6140 IF l_DEBUG in ('Y', 'C') THEN
6141 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_account_au');
6142 END IF;
6143 END CE_VALIDATE_ACCOUNT_AU;
6144
6145 /* ---------------------------------------------------------------------
6146 | Account Number Validation: ISRAEL |
6147 ----------------------------------------------------------------------*/
6148 procedure CE_VALIDATE_ACCOUNT_IL(
6149 Xi_ACCOUNT_NUMBER in varchar2
6150 ) AS
6151
6152 account_value VARCHAR2(30);
6153 numeric_result VARCHAR2(40);
6154
6155 BEGIN
6156 IF l_DEBUG in ('Y', 'C') THEN
6157 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_account_il');
6158 END IF;
6159
6160 account_value := upper(Xi_ACCOUNT_NUMBER );
6161 account_value := replace(account_value,' ','');
6162 account_value := replace(account_value,'-','');
6163
6164 IF length(account_value) = 9
6165 THEN /* length is ok */
6166 numeric_result := ce_check_numeric(ACCOUNT_VALUE,1,length(ACCOUNT_VALUE));
6167 IF numeric_result = '0'
6168 THEN /* its numeric validations successful */
6169 ce_passed_check('ACCOUNT','IL');
6170 ELSE
6171 ce_failed_check('ACCOUNT_NUM','NUMERIC');
6172 END IF; /* end of numeric check */
6173 ELSE
6174 ce_failed_check('ACCOUNT_NUM','LENGTH','9');
6175 END IF; /* end of length check */
6176
6177 IF l_DEBUG in ('Y', 'C') THEN
6178 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_account_il');
6179 END IF;
6180 END CE_VALIDATE_ACCOUNT_IL;
6181
6182 /* ---------------------------------------------------------------------
6183 | Account Number Validation: NEW ZEALAND |
6184 ----------------------------------------------------------------------*/
6185 procedure CE_VALIDATE_ACCOUNT_NZ(
6186 Xi_ACCOUNT_NUMBER in varchar2,
6187 Xi_ACCOUNT_SUFFIX in varchar2
6188 ) AS
6189
6190 account_value VARCHAR2(30);
6191 account_suffix VARCHAR2(30);
6192 numeric_result VARCHAR2(40);
6193
6194 BEGIN
6195 IF l_DEBUG in ('Y', 'C') THEN
6196 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_account_nz');
6197 END IF;
6198
6199 -- check account number
6200 account_value := upper(Xi_ACCOUNT_NUMBER );
6201 account_value := replace(account_value,' ','');
6202 account_value := replace(account_value,'-','');
6203
6204 IF length(account_value) > 8
6205 THEN
6206 ce_failed_check('ACCOUNT_NUM','LENGTH_MAX','8');
6207 ELSIF length(account_value) < 6
6208 THEN
6209 ce_failed_check('ACCOUNT_NUM','LENGTH_MIN','6');
6210 ELSE
6211 numeric_result := ce_check_numeric(ACCOUNT_VALUE,1,length(ACCOUNT_VALUE));
6212 IF numeric_result = '0'
6213 THEN /* it's numeric so validations successful */
6214 ce_passed_check('ACCOUNT','NZ');
6215 ELSE
6216 ce_failed_check('ACCOUNT_NUM','NUMERIC');
6217 END IF; /* end of numeric check */
6218 END IF; /* end of length check */
6219
6220 -- check account_suffix
6221 account_suffix := upper(Xi_ACCOUNT_SUFFIX );
6222 account_suffix := replace(account_suffix,' ','');
6223 account_suffix := replace(account_suffix,'-','');
6224
6225 IF account_suffix IS NOT NULL
6226 THEN
6227 IF length(account_suffix) = 3
6228 THEN /* length is ok */
6229 numeric_result := ce_check_numeric(ACCOUNT_SUFFIX,1,length(ACCOUNT_SUFFIX));
6230 IF numeric_result = '0'
6231 THEN /* it's numeric all validations successful */
6232 ce_passed_check('ACCOUNT','NZ');
6233 ELSE
6234 ce_failed_check('ACCOUNT_SUFFIX','NUMERIC');
6235 END IF; /* end of numeric check */
6236 ELSE
6237 ce_failed_check('ACCOUNT_SUFFIX','LENGTH','3');
6238 END IF; /* end of length check */
6239 ELSE
6240 ce_failed_mandatory('ACCOUNT_SUFFIX');
6241 END IF; /* end of mandatory check */
6242
6243 IF l_DEBUG in ('Y', 'C') THEN
6244 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_account_nz');
6245 END IF;
6246 END CE_VALIDATE_ACCOUNT_NZ;
6247
6248 /* ---------------------------------------------------------------------
6249 | Account Number Validation: JAPAN |
6250 ----------------------------------------------------------------------*/
6251 procedure CE_VALIDATE_ACCOUNT_JP(
6252 Xi_ACCOUNT_NUMBER in varchar2,
6253 Xi_ACCOUNT_TYPE in varchar2
6254 ) AS
6255
6256 BEGIN
6257 IF l_DEBUG in ('Y', 'C') THEN
6258 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_account_jp');
6259 END IF;
6260
6261 /* Account number is required */
6265 /* Account type is required */
6262 IF (Xi_ACCOUNT_NUMBER is null) THEN
6263 ce_failed_mandatory('ACCOUNT_NUMBER');
6264 END if;
6266 IF (Xi_ACCOUNT_TYPE is null) THEN
6267 ce_failed_mandatory('ACCOUNT_TYPE');
6268 END if;
6269
6270
6271 IF l_DEBUG in ('Y', 'C') THEN
6272 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_account_jp');
6273 END IF;
6274 END CE_VALIDATE_ACCOUNT_JP;
6275
6276 /* --------------------------------------------------------------------
6277 | PRIVATE PROCEDURE |
6278 | CE_VALIDATE_BANK_* |
6279 | |
6280 | CALLED BY |
6281 | CE_VALIDATE_BANK |
6282 | |
6283 | DESCRIPTION |
6284 | BANK PROCEDURES, Validate 1 or more of the following: |
6285 | 1. Bank number length |
6286 | 2. Bank number datatype (numeric, alphanumeric, or alphabet |
6287 | 3. Bank number Algorithm |
6288 | |
6289 | RETURN |
6290 | Xo_VALUE_OUT - Bank Number is return with leading 0 |
6291 | (Not for all countries) |
6292 --------------------------------------------------------------------- */
6293
6294 /* ---------------------------------------------------------------------
6295 | Bank Number Validation: SPAIN |
6296 ----------------------------------------------------------------------*/
6297 procedure CE_VALIDATE_BANK_ES (
6298 Xi_BANK_NUMBER in varchar2,
6299 Xi_PASS_MAND_CHECK in varchar2,
6300 Xo_VALUE_OUT OUT NOCOPY varchar2
6301 ) AS
6302
6303 bank_value VARCHAR2(30);
6304 numeric_result VARCHAR2(40);
6305
6306 BEGIN
6307 IF l_DEBUG in ('Y', 'C') THEN
6308 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_bank_es');
6309 END IF;
6310
6311 -- remove spaces and hyphens --
6312 BANK_VALUE := upper(Xi_BANK_NUMBER);
6313 BANK_VALUE := replace(replace(BANK_VALUE,' ',''),'-','');
6314 Xo_VALUE_OUT := BANK_VALUE;
6315
6316 IF Xi_PASS_MAND_CHECK = 'F'
6317 THEN
6318 ce_failed_mandatory('BANK_NUM');
6319
6320 ELSIF Xi_PASS_MAND_CHECK = 'P'
6321 THEN
6322 IF length(BANK_VALUE) > 4
6323 THEN
6324 ce_failed_check('BANK_NUM','LENGTH_MAX','4');
6325 ELSE
6326 /* length is ok */
6327 BANK_VALUE := lpad(BANK_VALUE,4,0);
6328 numeric_result := ce_check_numeric(BANK_VALUE,1,length(BANK_VALUE));
6329 IF numeric_result = '0'
6330 THEN
6331 /* its numeric validations successful*/
6332 Xo_VALUE_OUT := BANK_VALUE;
6333 ce_passed_check('BANK','ES');
6334 ELSE
6335 ce_failed_check('BANK_NUM','NUMERIC');
6336 END IF; /* end of numeric check */
6337 END IF; /* end of length check */
6338 END IF; /* end of mandatory check */
6339
6340 IF l_DEBUG in ('Y', 'C') THEN
6341 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_bank_es');
6342 END IF;
6343 END CE_VALIDATE_BANK_ES;
6344
6345 /* ---------------------------------------------------------------------
6346 | Bank Number Validation: FRANCE |
6347 ----------------------------------------------------------------------*/
6348 procedure CE_VALIDATE_BANK_FR(
6349 Xi_BANK_NUMBER in varchar2,
6350 Xi_PASS_MAND_CHECK in varchar2,
6351 Xo_VALUE_OUT OUT NOCOPY varchar2
6352 ) AS
6353 BANK_VALUE varchar2(30);
6354 numeric_result varchar2(40);
6355
6356 BEGIN
6357 IF l_DEBUG in ('Y', 'C') THEN
6358 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_bank_fr');
6359 END IF;
6360
6361 -- remove spaces and hyphens --
6362 BANK_VALUE := upper(Xi_BANK_NUMBER );
6363 BANK_VALUE := replace(replace(BANK_VALUE,' ',''),'-','');
6364 Xo_VALUE_OUT := BANK_VALUE;
6365
6366 IF Xi_PASS_MAND_CHECK = 'F'
6367 THEN
6368 ce_failed_mandatory('BANK_NUM');
6369
6370 ELSIF Xi_PASS_MAND_CHECK = 'P'
6371 THEN
6372 /* mandatory check passed */
6373
6374 IF length(BANK_VALUE) > 5
6375 THEN
6376 ce_failed_check('BANK_NUM','LENGTH_MAX','5');
6377 ELSE
6378 /* length check passed */
6379 BANK_VALUE := lpad(BANK_VALUE,5,0);
6380 numeric_result := ce_check_numeric(BANK_VALUE,1,length(BANK_VALUE));
6381
6382 IF numeric_result = '0'
6383 THEN
6384 /* numeric check passed - validations successful*/
6385 Xo_VALUE_OUT := BANK_VALUE;
6386 ce_passed_check('BANK','FR');
6387 ELSE
6391 END IF; /* end of mandatory check */
6388 ce_failed_check('BANK_NUM','NUMERIC');
6389 END IF; /* end of numeric check */
6390 END IF; /* end of length check */
6392
6393 IF l_DEBUG in ('Y', 'C') THEN
6394 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_bank_fr');
6395 END IF;
6396
6397 END CE_VALIDATE_BANK_FR;
6398
6399 /* ---------------------------------------------------------------------
6400 | Bank Number Validation: PORTUGAL |
6401 ----------------------------------------------------------------------*/
6402 procedure CE_VALIDATE_BANK_PT(
6403 Xi_BANK_NUMBER in varchar2,
6404 Xi_PASS_MAND_CHECK in varchar2
6405 ) AS
6406
6407 bank_value VARCHAR2(30);
6408 numeric_result VARCHAR2(40);
6409
6410 BEGIN
6411 IF l_DEBUG in ('Y', 'C') THEN
6412 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_bank_pt');
6413 END IF;
6414
6415 -- remove spaces --
6416 BANK_VALUE := replace(replace(Xi_BANK_NUMBER,' ',''),'-','');
6417 -- BANK_VALUE := upper(BANK_VALUE);
6418
6419 IF Xi_PASS_MAND_CHECK = 'F'
6420 THEN
6421 ce_failed_mandatory('BANK_NUM');
6422
6423 ELSIF Xi_PASS_MAND_CHECK = 'P'
6424 THEN
6425 IF length(BANK_VALUE) = 4
6426 THEN
6427 /* length is ok */
6428 numeric_result := ce_check_numeric(BANK_VALUE,1,length(BANK_VALUE));
6429 IF numeric_result = '0'
6430 THEN /* its numeric - validations successful */
6431 ce_passed_check('BANK','PT');
6432 ELSE
6433 ce_failed_check('BANK_NUM','NUMERIC');
6434 END IF; /* end of numeric check */
6435
6436 ELSE
6437 ce_failed_check('BANK_NUM','LENGTH','4');
6438 END IF; /* end of length check */
6439
6440 END IF; /* end of mandatory check */
6441
6442 IF l_DEBUG in ('Y', 'C') THEN
6443 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_bank_pt');
6444 END IF;
6445 END CE_VALIDATE_BANK_PT;
6446
6447 /* ---------------------------------------------------------------------
6448 | Bank Number Validation: BRAZIL |
6449 ----------------------------------------------------------------------*/
6450 procedure CE_VALIDATE_BANK_BR(
6451 Xi_BANK_NUMBER in varchar2,
6452 Xi_PASS_MAND_CHECK in varchar2,
6453 Xo_VALUE_OUT OUT NOCOPY varchar2
6454 ) AS
6455
6456 bank_value VARCHAR2(30);
6457 numeric_result VARCHAR2(40);
6458
6459 BEGIN
6460 IF l_DEBUG in ('Y', 'C') THEN
6461 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_bank_br');
6462 END IF;
6463
6464 BANK_VALUE := upper(Xi_BANK_NUMBER );
6465 BANK_VALUE := replace(replace(BANK_VALUE,' ',''),'-','');
6466 Xo_VALUE_OUT := BANK_VALUE;
6467
6468 IF Xi_PASS_MAND_CHECK = 'F'
6469 THEN /* mandatory check failed */
6470 ce_failed_mandatory('BANK_NUM');
6471
6472 ELSIF Xi_PASS_MAND_CHECK = 'P'
6473 THEN
6474 /* mandatory check passed */
6475 IF length(BANK_VALUE) > 3
6476 THEN
6477 ce_failed_check('BANK_NUM','LENGTH_MAX','3');
6478
6479 ELSE
6480 /* length is ok */
6481 BANK_VALUE := lpad(BANK_VALUE,3,0);
6482 numeric_result := ce_check_numeric(BANK_VALUE,1,length(BANK_VALUE));
6483 IF numeric_result = '0' THEN
6484 /* numeric check passed validations successful */
6485 Xo_VALUE_OUT := BANK_VALUE;
6486 ce_passed_check('BANK','BR');
6487 ELSE
6488 ce_failed_check('BANK_NUM','NUMERIC');
6489 END IF; /* end of numeric check */
6490 END IF; /* end of length check */
6491 END IF; /* end of mandatory check */
6492
6493 IF l_DEBUG in ('Y', 'C') THEN
6494 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_bank_br');
6495 END IF;
6496 END CE_VALIDATE_BANK_BR;
6497
6498 /* ---------------------------------------------------------------------
6499 | Bank Number Validation: GERMANY |
6500 ----------------------------------------------------------------------*/
6501 procedure CE_VALIDATE_BANK_DE(
6502 Xi_BANK_NUMBER in varchar2
6503 ) AS
6504 BANK_NUM varchar2(30);
6505 numeric_result varchar2(40);
6506
6507 BEGIN
6508 IF l_DEBUG in ('Y', 'C') THEN
6509 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_bank_de');
6510 END IF;
6511
6512 BANK_NUM := upper(replace(Xi_BANK_NUMBER,' ',''));
6513 BANK_NUM := replace(BANK_NUM,'-','');
6514
6515 IF (BANK_NUM) IS NOT NULL
6516 THEN /* only validate if bank num is entered */
6517 IF length(BANK_NUM) = 8
6518 THEN /* length is ok */
6519 numeric_result := ce_check_numeric(BANK_NUM,1,length(BANK_NUM));
6520
6521 IF numeric_result = '0'
6522 THEN /* its numeric validation successful */
6523 ce_passed_check('BANK','DE');
6524 ELSE
6525 ce_failed_check('BANK_NUM','NUMERIC');
6526 END IF; /* end of numeric check */
6530 END IF;
6527 ELSE
6528 ce_failed_check('BANK_NUM','LENGTH','8');
6529 END IF; /* end of length check */
6531
6532 IF l_DEBUG in ('Y', 'C') THEN
6533 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_bank_de');
6534 END IF;
6535 END CE_VALIDATE_BANK_DE;
6536
6537 /* ---------------------------------------------------------------------
6538 | Bank Number Validation: GREECE |
6539 ----------------------------------------------------------------------*/
6540 procedure CE_VALIDATE_BANK_GR(
6541 Xi_BANK_NUMBER in varchar2
6542 ) AS
6543
6544 BANK_VALUE varchar2(30);
6545 numeric_result varchar2(40);
6546
6547 BEGIN
6548 IF l_DEBUG in ('Y', 'C') THEN
6549 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_bank_gr');
6550 END IF;
6551
6552 -- remove spaces and hyphens before validating --
6553 BANK_VALUE := upper(replace(Xi_BANK_NUMBER,' ',''));
6554 BANK_VALUE := replace(BANK_VALUE,'-','');
6555
6556 IF (BANK_VALUE) IS NOT NULL
6557 THEN /* only validate if value entered */
6558 IF length(BANK_VALUE) < 4
6559 THEN /* length is ok */
6560 numeric_result := ce_check_numeric(BANK_VALUE,1,length(BANK_VALUE));
6561 IF numeric_result = '0'
6562 THEN /* its numeric - validations successful */
6563 ce_passed_check('BANK','GR');
6564 ELSE
6565 ce_failed_check('BANK_NUM','NUMERIC');
6566 END IF; /* end of numeric check */
6567
6568 ELSE
6569 ce_failed_check('BANK_NUM','LENGTH_MAX', '3');
6570 END IF; /* end of length check */
6571 END IF;
6572
6573 IF l_DEBUG in ('Y', 'C') THEN
6574 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_bank_gr');
6575 END IF;
6576 END CE_VALIDATE_BANK_GR;
6577
6578 /* ---------------------------------------------------------------------
6579 | Bank Number Validation: ICELAND |
6580 ----------------------------------------------------------------------*/
6581 procedure CE_VALIDATE_BANK_IS(
6582 Xi_BANK_NUMBER in varchar2,
6583 Xo_VALUE_OUT OUT NOCOPY varchar2
6584 ) AS
6585
6586 BANK_NUM varchar2(60);
6587 numeric_result varchar2(40);
6588
6589 BEGIN
6590 IF l_DEBUG in ('Y', 'C') THEN
6591 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_bank_is');
6592 END IF;
6593
6594 -- remove spaces and hyphens --
6595 BANK_NUM := upper(replace(Xi_BANK_NUMBER,' ',''));
6596 BANK_NUM := replace(BANK_NUM,'-','');
6597
6598 IF (BANK_NUM) IS NOT NULL
6599 THEN
6600 IF length(BANK_NUM) < 5
6601 THEN /* length is ok */
6602 numeric_result := ce_check_numeric(BANK_NUM,1,length(BANK_NUM));
6603 IF numeric_result = '0'
6604 THEN /* its numeric - validations successful */
6605 Xo_VALUE_OUT := lpad(bank_num,4,0);
6606 ce_passed_check('BANK','IS');
6607 ELSE
6608 ce_failed_check('BANK_NUM','NUMERIC');
6609 END IF; /* end of numeric check */
6610 ELSE
6611 ce_failed_check('BANK_NUM','LENGTH_MAX','4');
6612 END IF; /* end of length check */
6613 END IF;
6614
6615 IF l_DEBUG in ('Y', 'C') THEN
6616 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_bank_is');
6617 END IF;
6618 END CE_VALIDATE_BANK_IS;
6619
6620 /* ---------------------------------------------------------------------
6621 | Bank Number Validation: IRELAND |
6622 ----------------------------------------------------------------------*/
6623 procedure CE_VALIDATE_BANK_IE(
6624 Xi_BANK_NUMBER in varchar2
6625 ) AS
6626
6627 bank_num VARCHAR2(60);
6628 numeric_result VARCHAR2(40);
6629
6630 BEGIN
6631 IF l_DEBUG in ('Y', 'C') THEN
6632 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_bank_ie');
6633 END IF;
6634
6635 -- remove spaces and hyphens
6636 BANK_NUM := upper(replace(Xi_BANK_NUMBER,' ',''));
6637 BANK_NUM := replace(BANK_NUM,'-','');
6638
6639 IF (BANK_NUM) IS NOT NULL
6640 THEN
6641 /* only validate if a value has been entered */
6642 -- Bug 6846899 : Valid length is 6 not 8
6643 IF length(BANK_NUM) = 6
6644 THEN /* length is ok */
6645 numeric_result := ce_check_numeric(BANK_NUM,1,length(BANK_NUM));
6646 IF numeric_result = '0'
6647 THEN /* its numeric so validations sucessful */
6648 ce_passed_check('BANK','IE');
6649 ELSE
6650 ce_failed_check('BANK_NUM','NUMERIC');
6651 END IF; /* end of numeric check */
6652
6653 ELSE
6654 ce_failed_check('BANK_NUM','LENGTH','6');
6655 END IF; /* end of length check */
6656
6657 END IF;
6658
6659 IF l_DEBUG in ('Y', 'C') THEN
6660 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_bank_ie');
6661 END IF;
6662 END CE_VALIDATE_BANK_IE;
6663
6667 procedure CE_VALIDATE_BANK_IT(
6664 /* ---------------------------------------------------------------------
6665 | Bank Number Validation: ITALY |
6666 ----------------------------------------------------------------------*/
6668 Xi_BANK_NUMBER in varchar2,
6669 Xi_PASS_MAND_CHECK in varchar2
6670 ) AS
6671
6672 bank_value VARCHAR2(30);
6673 numeric_result VARCHAR2(40);
6674
6675 BEGIN
6676 IF l_DEBUG in ('Y', 'C') THEN
6677 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_bank_it');
6678 END IF;
6679
6680 -- remove spaces and hyphens --
6681 BANK_VALUE := upper(replace(Xi_BANK_NUMBER,' ',''));
6682 BANK_VALUE := replace(BANK_VALUE,'-','');
6683
6684 IF Xi_PASS_MAND_CHECK = 'F'
6685 THEN
6686 ce_failed_mandatory('BANK_NUM');
6687
6688 ELSIF Xi_PASS_MAND_CHECK = 'P'
6689 THEN
6690 IF length(BANK_VALUE) = 5
6691 THEN
6692 /* length is ok */
6693 numeric_result := ce_check_numeric(BANK_VALUE,1,length(BANK_VALUE));
6694 IF numeric_result = '0'
6695 THEN
6696 /* its numeric - validations successful */
6697 ce_passed_check('BANK','IT');
6698 ELSE
6699 ce_failed_check('BANK_NUM','NUMERIC');
6700 END IF; /* end of numeric check */
6701
6702 ELSE
6703 ce_failed_check('BANK_NUM','LENGTH','5');
6704 END IF; /* end of length check */
6705
6706 END IF; /* end of mandatory check */
6707
6708 IF l_DEBUG in ('Y', 'C') THEN
6709 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_bank_it');
6710 END IF;
6711 END CE_VALIDATE_BANK_IT;
6712
6713 /* ---------------------------------------------------------------------
6714 | Bank Number Validation: LUXEMBOURG |
6715 ----------------------------------------------------------------------*/
6716 procedure CE_VALIDATE_BANK_LU(
6717 Xi_BANK_NUMBER in varchar2
6718 ) AS
6719
6720 bank_num VARCHAR2(60);
6721 numeric_result VARCHAR2(40);
6722
6723 BEGIN
6724 IF l_DEBUG in ('Y', 'C') THEN
6725 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_bank_lu');
6726 END IF;
6727
6728 -- remove spaces and hyphens --
6729 BANK_NUM := upper(replace(Xi_BANK_NUMBER,' ',''));
6730 BANK_NUM := replace(BANK_NUM,'-','');
6731
6732 IF (BANK_NUM) IS NOT NULL
6733 THEN
6734 /* only validate if a value has been entered */
6735 -- 6005620: IBAN standardized structure. Bank Num: 3n
6736 IF length(BANK_NUM) = 3
6737 THEN
6738 /* length is ok */
6739 numeric_result := ce_check_numeric(BANK_NUM,1,length(BANK_NUM));
6740 IF numeric_result = '0'
6741 THEN /* its numeric - validations successful */
6742 ce_passed_check('BANK','LU');
6743 ELSE
6744 ce_failed_check('BANK_NUM','NUMERIC');
6745 END IF; /* end of numeric check */
6746
6747 ELSE
6748 ce_failed_check('BANK_NUM','LENGTH','3');
6749 END IF; /* end of length check */
6750
6751 END IF;
6752
6753 IF l_DEBUG in ('Y', 'C') THEN
6754 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_bank_lu');
6755 END IF;
6756 END CE_VALIDATE_BANK_LU;
6757
6758 /* ---------------------------------------------------------------------
6759 | Bank Number Validation: POLAND |
6760 ----------------------------------------------------------------------*/
6761 procedure CE_VALIDATE_BANK_PL(
6762 Xi_BANK_NUMBER in varchar2
6763 ) AS
6764
6765 bank_num VARCHAR2(60);
6766 numeric_result VARCHAR2(40);
6767 cal_cd1 NUMBER;
6768
6769 BEGIN
6770 IF l_DEBUG in ('Y', 'C') THEN
6771 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_bank_pl');
6772 END IF;
6773
6774 -- remove spaces and hyphens --
6775 BANK_NUM := upper(replace(Xi_BANK_NUMBER,' ',''));
6776 BANK_NUM := replace(BANK_NUM,'-','');
6777
6778 IF (BANK_NUM) IS NOT NULL
6779 THEN
6780 /* only validate if a value has been entered */
6781 IF length(BANK_NUM) = 8
6782 THEN
6783 /* length is ok */
6784 numeric_result := ce_check_numeric(BANK_NUM,1,length(BANK_NUM));
6785 IF numeric_result = '0'
6786 THEN
6787 -- Bug 7454786: No check digit validation for Poland
6788 ce_passed_check('BANK','PL');
6789 ELSE
6790 ce_failed_check('BANK_NUM','NUMERIC');
6791 END IF; /* end of numeric check */
6792
6793 ELSE
6794 ce_failed_check('BANK_NUM','LENGTH','8');
6795 END IF; /* end of length check */
6796
6797 END IF;
6798
6799 IF l_DEBUG in ('Y', 'C') THEN
6800 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_bank_pl');
6801 END IF;
6802 END CE_VALIDATE_BANK_PL;
6803
6804 /* ---------------------------------------------------------------------
6808 Xi_BANK_NUMBER in varchar2
6805 | Bank Number Validation: SWEDEN |
6806 ----------------------------------------------------------------------*/
6807 procedure CE_VALIDATE_BANK_SE(
6809 ) AS
6810
6811 bank_num VARCHAR2(60);
6812 numeric_result VARCHAR2(40);
6813
6814 BEGIN
6815 IF l_DEBUG in ('Y', 'C') THEN
6816 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_bank_se');
6817 END IF;
6818
6819 -- remove spaces and hyphens --
6820 BANK_NUM := upper(replace(Xi_BANK_NUMBER,' ',''));
6821 BANK_NUM := replace(BANK_NUM,'-','');
6822
6823 IF (BANK_NUM) IS NOT NULL
6824 THEN
6825 /* only validate if a value has been entered */
6826 IF length(BANK_NUM) > 5
6827 THEN
6828 ce_failed_check('BANK_NUM','LENGTH_MAX','5');
6829 ELSIF length(BANK_NUM) < 4
6830 THEN
6831 ce_failed_check('BANK_NUM','LENGTH_MIN','4');
6832 ELSE
6833 /* length is ok */
6834 numeric_result := ce_check_numeric(BANK_NUM,1,length(BANK_NUM));
6835 IF numeric_result = '0'
6836 THEN /* its numeric - validation successful */
6837 ce_passed_check('BANK','SE');
6838 ELSE
6839 ce_failed_check('BANK_NUM','NUMERIC');
6840 END IF; /* end of numeric check */
6841 END IF; /* end of length check */
6842 END IF;
6843
6844 IF l_DEBUG in ('Y', 'C') THEN
6845 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_bank_se');
6846 END IF;
6847 END CE_VALIDATE_BANK_SE;
6848
6849 /* ---------------------------------------------------------------------
6850 | Bank Number Validation: SWITZERLAND |
6851 ----------------------------------------------------------------------*/
6852 procedure CE_VALIDATE_BANK_CH(
6853 Xi_BANK_NUMBER in varchar2
6854 ) AS
6855
6856 bank_num VARCHAR2(60);
6857 numeric_result VARCHAR2(40);
6858
6859 BEGIN
6860 IF l_DEBUG in ('Y', 'C') THEN
6861 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_bank_ch');
6862 END IF;
6863
6864 -- remove spaces and hyphens --
6865 BANK_NUM := upper(replace(Xi_BANK_NUMBER,' ',''));
6866 BANK_NUM := replace(BANK_NUM,'-','');
6867
6868 IF (BANK_NUM) IS NOT NULL
6869 THEN
6870 /* only validate if a value has been entered */
6871 IF length(BANK_NUM) > 5
6872 THEN
6873 ce_failed_check('BANK_NUM','LENGTH_MAX','5');
6874 ELSIF length(BANK_NUM) < 3
6875 THEN
6876 ce_failed_check('BANK_NUM','LENGTH_MIN','3');
6877 ELSE
6878 /* length is ok */
6879 numeric_result := ce_check_numeric(BANK_NUM,1,length(BANK_NUM));
6880 IF numeric_result = '0'
6881 THEN /* its numeric - validations successful */
6882 ce_passed_check('BANK','CH');
6883 ELSE
6884 ce_failed_check('BANK_NUM','NUMERIC');
6885 END IF; /* end of numeric check */
6886 END IF; /* end of length check */
6887 END IF;
6888
6889 IF l_DEBUG in ('Y', 'C') THEN
6890 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_bank_ch');
6891 END IF;
6892 END CE_VALIDATE_BANK_CH;
6893
6894 /* ---------------------------------------------------------------------
6895 | Bank Number Validation: UNITED KINGDOM |
6896 ----------------------------------------------------------------------*/
6897 procedure CE_VALIDATE_BANK_GB(
6898 Xi_BANK_NUMBER in varchar2
6899 ) AS
6900
6901 bank_num VARCHAR2(60);
6902 numeric_result VARCHAR2(40);
6903
6904 BEGIN
6905 IF l_DEBUG in ('Y', 'C') THEN
6906 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_bank_gb');
6907 END IF;
6908
6909 -- remove spaces and hyphens --
6910 BANK_NUM := upper(replace(Xi_BANK_NUMBER,' ',''));
6911 BANK_NUM := replace(BANK_NUM,'-','');
6912
6913 IF (BANK_NUM) IS NOT NULL
6914 THEN
6915 /* only validate if a value has been entered */
6916 IF length(BANK_NUM) = 6
6917 THEN
6918 /* length is ok */
6919 numeric_result := ce_check_numeric(BANK_NUM,1,length(BANK_NUM));
6920 IF numeric_result = '0'
6921 THEN /* its numeric - validations successful */
6922 ce_passed_check('BANK','GB');
6923 ELSE
6924 ce_failed_check('BANK_NUM','NUMERIC');
6925 END IF; /* end of numeric check */
6926 ELSE
6927 ce_failed_check('BANK_NUM','LENGTH','6');
6928 END IF; /* end of length check */
6929 END IF;
6930
6931 IF l_DEBUG in ('Y', 'C') THEN
6932 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_bank_gb');
6933 END IF;
6934 END CE_VALIDATE_BANK_GB;
6935
6936 /* ---------------------------------------------------------------------
6937 | Bank Number Validation: COLUMBIA |
6938 ----------------------------------------------------------------------*/
6939 procedure CE_VALIDATE_BANK_CO(
6943 ) AS
6940 Xi_COUNTRY_NAME in varchar2,
6941 Xi_BANK_NAME in varchar2,
6942 Xi_TAX_PAYER_ID in varchar2
6944
6945 tax_id VARCHAR2(60);
6946 tax_id1 VARCHAR2(60);
6947 tax_id_end NUMBER;
6948 tax_id_cd_start NUMBER;
6949 tax_id_cd VARCHAR2(60);
6950 numeric_result VARCHAR2(40);
6951 l_supp VARCHAR(10);
6952 l_comp VARCHAR(10);
6953 l_cust VARCHAR(10);
6954 l_bank VARCHAR(10);
6955
6956 BEGIN
6957 IF l_DEBUG in ('Y', 'C') THEN
6958 cep_standard.debug('>>CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_CO');
6959 END IF;
6960
6961 -- the last digit of tax payer id is the check digits
6962 TAX_ID1 := upper(replace(Xi_TAX_PAYER_ID,' ',''));
6963 TAX_ID1 := replace(TAX_ID1,'-','');
6964 tax_id_end := (length(tax_id1) - 1);
6965 tax_id := substr(tax_id1,1, tax_id_end);
6966 tax_id_cd_start := (length(tax_id1));
6967 tax_id_cd := substr(tax_id1, tax_id_cd_start, length(tax_id1));
6968
6969 IF (tax_id) IS NOT NULL
6970 THEN
6971 IF length(tax_id) <= 14
6972 THEN
6973 numeric_result := ce_check_numeric(tax_id,1,length(tax_id));
6974 IF numeric_result = '0'
6975 THEN /* its numeric so continue */
6976 IF CE_VALIDATE_BANKINFO.CE_VAL_UNIQUE_TAX_PAYER_ID(
6977 Xi_COUNTRY_NAME,TAX_ID) = 'TRUE'
6978 THEN
6979 CE_VALIDATE_BANKINFO.CE_CHECK_CROSS_MODULE_TAX_ID(
6980 Xi_COUNTRY_NAME,
6981 Xi_BANK_NAME,
6982 TAX_ID,
6983 l_cust,
6984 l_supp,
6985 l_comp,
6986 l_bank
6987 );
6988
6989 IF l_DEBUG in ('Y', 'C')
6990 THEN
6991 cep_standard.debug('CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_CO - l_cust : '|| l_cust
6992 || '----------' ||
6993 'CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_CO - l_supp : '|| l_supp || '----------' ||
6994 'CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_CO - l_comp : '|| l_comp || '----------' ||
6995 'CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_CO - l_bank : '|| l_bank );
6996 END IF;
6997
6998 IF (l_supp = 'bk3' OR l_cust= 'bk2' OR l_comp = 'bk1')
6999 THEN
7000 FND_MESSAGE.SET_NAME('CE','CE_TAXID_EXIST');
7001 fnd_msg_pub.add;
7002 END IF;
7003 IF (l_supp = 'bk5')
7004 THEN
7005 FND_MESSAGE.SET_NAME('CE','CE_TAXID_BANK_EXIST_AS_SUPP');
7006 fnd_msg_pub.add;
7007 END IF;
7008 IF (l_cust = 'bk4')
7009 THEN
7010 FND_MESSAGE.SET_NAME('CE','CE_TAXID_BANK_EXIST_AS_CUST');
7011 fnd_msg_pub.add;
7012 END IF;
7013 IF (l_comp = 'bk6') THEN
7014 FND_MESSAGE.SET_NAME('CE','CE_TAXID_BANK_EXIST_AS_COMP');
7015 fnd_msg_pub.add;
7016 END IF;
7017 IF ce_tax_id_check_algorithm(TAX_ID,Xi_COUNTRY_NAME,TAX_ID_CD) = 'FALSE'
7018 THEN
7019 ce_failed_check('TAX_PAYER_ID','CD_FAILED');
7020 END IF; /* end of check digit validation */
7021 ELSE
7022 fnd_message.set_name ('CE', 'CE_TAX_PAYER_ID_NOT_UNIQUE');
7023 fnd_msg_pub.add;
7024 END IF; /* end of unique check */
7025 ELSE
7026 ce_failed_check('TAX_PAYER_ID','NUMERIC');
7027 END IF; /* end of numeric check */
7028 ELSE
7029 ce_failed_check('TAX_PAYER_ID','LENGTH_MAX','14');
7030 END IF; /* end of length check */
7031 ELSE
7032 ce_failed_mandatory('TAX_PAYER_ID');
7033 END IF; /* end of mandatory check */
7034
7035 IF l_DEBUG in ('Y', 'C') THEN
7036 cep_standard.debug('<<CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_CO');
7037 END IF;
7038 END CE_VALIDATE_BANK_CO;
7039
7040 /* ---------------------------------------------------------------------
7041 | Bank Number Validation: AUSTRALIA |
7042 ----------------------------------------------------------------------*/
7043 procedure CE_VALIDATE_BANK_AU(
7044 Xi_BANK_NUMBER in varchar2
7045 ) AS
7046 BANK_NUM varchar2(60);
7047 numeric_result varchar2(40);
7048
7049 BEGIN
7050 IF l_DEBUG in ('Y', 'C') THEN
7051 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_bank_au');
7052 END IF;
7053
7054 -- Remove blanks and hyphens before validation --
7055 BANK_NUM := upper(replace(Xi_BANK_NUMBER,' ',''));
7056 BANK_NUM := replace(BANK_NUM,'-','');
7057
7058 IF (BANK_NUM) IS NOT NULL
7059 THEN /* only validate if a value has been entered */
7060 IF length(BANK_NUM) < 2
7061 THEN /* length less than min */
7062 ce_failed_check('BANK_NUM','LENGTH_MIN','2');
7063
7067
7064 ELSIF length(BANK_NUM) > 3
7065 THEN /* length more than max */
7066 ce_failed_check('BANK_NUM','LENGTH_MAX','3');
7068 ELSE /* length is ok */
7069 numeric_result := ce_check_numeric(BANK_NUM,1,length(BANK_NUM));
7070 IF numeric_result = '0'
7071 THEN /* its numeric, validations successfull */
7072 ce_passed_check('BANK','AU');
7073 ELSE
7074 ce_failed_check('BANK_NUM','NUMERIC');
7075 END IF; /* end of numeric check */
7076 END IF; /* end of length check */
7077 ELSE
7078 ce_passed_check('BANK','AU');
7079 END IF;
7080
7081 IF l_DEBUG in ('Y', 'C') THEN
7082 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_bank_au');
7083 END IF;
7084 END CE_VALIDATE_BANK_AU;
7085
7086 /* ---------------------------------------------------------------------
7087 | Bank Number Validation: ISRAEL |
7088 ----------------------------------------------------------------------*/
7089 procedure CE_VALIDATE_BANK_IL(
7090 Xi_BANK_NUMBER in varchar2,
7091 Xi_PASS_MAND_CHECK in varchar2
7092 ) AS
7093
7094 bank_value VARCHAR2(30);
7095 numeric_result VARCHAR2(40);
7096
7097 BEGIN
7098 IF l_DEBUG in ('Y', 'C') THEN
7099 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_bank_il');
7100 END IF;
7101
7102 -- remove spaces and hyphens --
7103 BANK_VALUE := upper(replace(Xi_BANK_NUMBER,' ',''));
7104 BANK_VALUE := replace(BANK_VALUE,'-','');
7105
7106 IF Xi_PASS_MAND_CHECK = 'F'
7107 THEN
7108 ce_failed_mandatory('BANK_NUM');
7109
7110 ELSIF Xi_PASS_MAND_CHECK = 'P'
7111 THEN
7112
7113 IF length(BANK_VALUE) > 2
7114 THEN
7115 ce_failed_check('BANK_NUM','LENGTH_MAX','2');
7116 ELSE
7117 /* length is ok */
7118 numeric_result := ce_check_numeric(BANK_VALUE,1,length(BANK_VALUE));
7119 IF numeric_result = '0'
7120 THEN
7121 /* it's numeric - validations successful */
7122 ce_passed_check('BANK','IL');
7123 ELSE
7124 ce_failed_check('BANK_NUM','NUMERIC');
7125 END IF; /* end of numeric check */
7126
7127 END IF; /* end of length check */
7128
7129 END IF; /* end of mandatory check */
7130
7131 IF l_DEBUG in ('Y', 'C') THEN
7132 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_bank_il');
7133 END IF;
7134 END CE_VALIDATE_BANK_IL;
7135
7136 /* ---------------------------------------------------------------------
7137 | Bank Number Validation: NEW ZEALAND |
7138 ----------------------------------------------------------------------*/
7139 procedure CE_VALIDATE_BANK_NZ(
7140 Xi_BANK_NUMBER in varchar2,
7141 Xi_PASS_MAND_CHECK in varchar2
7142 ) AS
7143
7144 bank_value VARCHAR2(30);
7145 numeric_result VARCHAR2(40);
7146
7147 BEGIN
7148 IF l_DEBUG in ('Y', 'C') THEN
7149 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_bank_nz');
7150 END IF;
7151
7152 -- remove spaces and hyphens --
7153 BANK_VALUE := upper(replace(Xi_BANK_NUMBER,' ',''));
7154 BANK_VALUE := replace(BANK_VALUE,'-','');
7155
7156 IF Xi_PASS_MAND_CHECK = 'F'
7157 THEN
7158 ce_failed_mandatory('BANK_NUM');
7159
7160 ELSIF Xi_PASS_MAND_CHECK = 'P'
7161 THEN
7162 IF length(BANK_VALUE) = 2
7163 THEN
7164 /* length is ok */
7165 numeric_result := ce_check_numeric(BANK_VALUE,1,length(BANK_VALUE));
7166 IF numeric_result = '0'
7167 THEN
7168 /* its numeric - validations passed */
7169 ce_passed_check('BANK','NZ');
7170 ELSE
7171 ce_failed_check('BANK_NUM','NUMERIC');
7172 END IF; /* end of numeric check */
7173
7174 ELSE
7175 ce_failed_check('BANK_NUM','LENGTH','2');
7176 END IF; /* end of length check */
7177
7178 END IF; /* end of mandatory check */
7179
7180 IF l_DEBUG in ('Y', 'C') THEN
7181 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_bank_nz');
7182 END IF;
7183 END CE_VALIDATE_BANK_NZ;
7184
7185 /* ---------------------------------------------------------------------
7186 | Bank Number Validation: JAPAN |
7187 ----------------------------------------------------------------------*/
7188 procedure CE_VALIDATE_BANK_JP(
7189 Xi_BANK_NUMBER in varchar2,
7190 Xi_BANK_NAME_ALT in varchar2,
7191 Xi_PASS_MAND_CHECK in varchar2
7192 ) AS
7193
7194 bank_value VARCHAR2(30);
7195 numeric_result VARCHAR2(40);
7196
7197 BEGIN
7198 IF l_DEBUG in ('Y', 'C') THEN
7199 cep_standard.debug('>>CE_VALIDATE_BANKINFO.ce_validate_bank_jp');
7200 END IF;
7201
7202 -- remove spaces and hyphens --
7203 BANK_VALUE := upper(replace(Xi_BANK_NUMBER,' ',''));
7204 BANK_VALUE := replace(BANK_VALUE,'-','');
7205
7206 IF Xi_PASS_MAND_CHECK = 'F'
7207 THEN
7211 THEN
7208 ce_failed_mandatory('BANK_NUM');
7209
7210 ELSIF Xi_PASS_MAND_CHECK = 'P'
7212 --bug 5746679 change from 3 numeric digits to 4 numberic digits
7213 IF length(BANK_VALUE) = 4
7214 THEN
7215 /* length is ok */
7216 numeric_result := ce_check_numeric(BANK_VALUE,1,length(BANK_VALUE));
7217 IF numeric_result = '0'
7218 THEN
7219 /* its numeric - validations successful */
7220 ce_passed_check('BANK','JP');
7221 ELSE
7222 ce_failed_check('BANK_NUM','NUMERIC');
7223 END IF; /* end of numeric check */
7224
7225 ELSE
7226 ce_failed_check('BANK_NUM','LENGTH','4');
7227 END IF; /* end of length check */
7228
7229 END IF; /* end of mandatory check for bank num */
7230
7231 /* check that BANK_NAME_ALT is also entered */
7232 IF (Xi_BANK_NAME_ALT is null) THEN
7233 ce_failed_mandatory('BANK_NAME_ALT');
7234 END IF;
7235
7236 IF l_DEBUG in ('Y', 'C') THEN
7237 cep_standard.debug('<<CE_VALIDATE_BANKINFO.ce_validate_bank_jp');
7238 END IF;
7239 END CE_VALIDATE_BANK_JP;
7240
7241
7242 /* --------------------------------------------------------------------
7243 | PRIVATE PROCEDURE |
7244 | CE_VALIDATE_UNIQUE_ACCOUNT_* |
7245 | |
7246 | CALLED BY |
7247 | CE_VALIDATE_ACCOUNT |
7248 | |
7249 | DESCRIPTION |
7250 | Unique Account VALIDATIONS |
7251 | |
7252 | CALL |
7253 | CE_UNIQUE_ACCOUNT_NAME |
7254 | |
7255 --------------------------------------------------------------------- */
7256
7257 procedure CE_VALIDATE_UNIQUE_ACCOUNT( Xi_ACCOUNT_NUMBER in varchar2,
7258 Xi_CURRENCY_CODE in varchar2,
7259 Xi_ACCOUNT_NAME in varchar2,
7260 Xi_BRANCH_ID in number,
7261 Xi_ACCOUNT_ID in number) AS
7262
7263 temp_number number;
7264 temp_name number;
7265
7266 BEGIN
7267
7268 IF l_DEBUG in ('Y', 'C') THEN
7269 cep_standard.debug('>>CE_VALIDATE_BANKINFO.CE_VALIDATE_UNIQUE_ACCOUNT');
7270 END IF;
7271
7272 -- unique combination -> bank_branch_id, bank account number, currency code --confirmed sql
7273 -- due to upgrade changes, the unique combination was changed to:
7274 -- bank_branch_id, bank account number, currency code, and account name
7275
7276 select count(*) into temp_number
7277 from ce_bank_accounts ba
7278 where ba.bank_account_num = Xi_ACCOUNT_NUMBER
7279 and ba.bank_account_name = Xi_ACCOUNT_NAME
7280 and ba.bank_branch_id = Xi_BRANCH_ID
7281 and ba.currency_code = Xi_CURRENCY_CODE
7282 and ba.bank_account_id <> nvl(Xi_ACCOUNT_ID,-1);
7283
7284 /*IF (Xi_ACCOUNT_ID is not null) then
7285 select count(*) into temp_number
7286 from ce_bank_accounts ba
7287 where ba.bank_account_num = Xi_ACCOUNT_NUMBER
7288 and ba.bank_branch_id = Xi_BRANCH_ID
7289 and ba.currency_code = Xi_CURRENCY_CODE
7290 and ba.bank_account_id <> Xi_ACCOUNT_ID;
7291 ELSE
7292 select count(*) into temp_number
7293 from ce_bank_accounts ba
7294 where ba.bank_account_num = Xi_ACCOUNT_NUMBER
7295 and ba.bank_branch_id = Xi_BRANCH_ID
7296 and ba.currency_code = Xi_CURRENCY_CODE;
7297
7298 END IF;*/
7299
7300 IF l_DEBUG in ('Y', 'C') THEN
7301 cep_standard.debug('CE_VALIDATE_UNIQUE_ACCOUNT: ' || 'temp_number: '||temp_number);
7302 END IF;
7303
7304 IF (nvl(temp_number,0) > 0) then
7305 fnd_message.set_name('CE', 'CE_BANK_ACCOUNT_NUM_EXISTS');
7306 fnd_msg_pub.add;
7307 IF l_DEBUG in ('Y', 'C') THEN
7308 cep_standard.debug('CE_VALIDATE_UNIQUE_ACCOUNT: ' || 'CE_BANK_ACCOUNT_NUM_EXISTS');
7309 END IF;
7310 END IF;
7311
7312 -- unique combination -> bank_branch_id, bank account name
7313
7314 CE_VALIDATE_BANKINFO.CE_UNIQUE_ACCOUNT_NAME(Xi_ACCOUNT_NAME, Xi_BRANCH_ID, Xi_ACCOUNT_ID);
7315
7316 IF l_DEBUG in ('Y', 'C') THEN
7317 cep_standard.debug('<<CE_VALIDATE_BANKINFO.CE_VALIDATE_UNIQUE_ACCOUNT');
7318 END IF;
7319
7320 END CE_VALIDATE_UNIQUE_ACCOUNT;
7321
7322 /* -------------------------------------------------------------------- */
7323
7324
7325 procedure CE_VALIDATE_UNIQUE_ACCOUNT_JP(Xi_ACCOUNT_NUMBER in varchar2,
7326 Xi_CURRENCY_CODE in varchar2,
7327 Xi_ACCOUNT_TYPE in varchar2,
7328 Xi_ACCOUNT_NAME in varchar2,
7332 temp_name number;
7329 Xi_BRANCH_ID in number,
7330 Xi_ACCOUNT_ID in number) AS
7331 temp_number number;
7333
7334 BEGIN
7335 IF l_DEBUG in ('Y', 'C') THEN
7336 cep_standard.debug('>>CE_VALIDATE_BANKINFO.CE_VALIDATE_UNIQUE_ACCOUNT_JP');
7337 END IF;
7338
7339 -- unique combination -> bank_branch_id, bank account number, currency code, account type --confirmed sql
7340
7341 select count(*) into temp_number
7342 from ce_bank_accounts ba
7343 where ba.bank_account_num = Xi_ACCOUNT_NUMBER
7344 and ba.bank_account_name = Xi_ACCOUNT_NAME
7345 and ba.bank_account_type = Xi_ACCOUNT_TYPE
7346 and ba.currency_code = Xi_CURRENCY_CODE
7347 and ba.bank_branch_id = Xi_BRANCH_ID
7348 and ba.bank_account_id <> nvl(Xi_ACCOUNT_ID,-1);
7349
7350 /*IF (Xi_ACCOUNT_ID is not null) then
7351 select count(*) into temp_number
7352 from ce_bank_accounts ba
7353 where ba.bank_account_num = Xi_ACCOUNT_NUMBER
7354 and ba.bank_account_type = Xi_ACCOUNT_TYPE
7355 and ba.currency_code = Xi_CURRENCY_CODE
7356 and ba.bank_branch_id = Xi_BRANCH_ID
7357 and ba.bank_account_id <> Xi_ACCOUNT_ID;
7358 ELSE
7359 select count(*) into temp_number
7360 from ce_bank_accounts ba
7361 where ba.bank_account_num = Xi_ACCOUNT_NUMBER
7362 and ba.bank_account_type = Xi_ACCOUNT_TYPE
7363 and ba.currency_code = Xi_CURRENCY_CODE
7364 and ba.bank_branch_id = Xi_BRANCH_ID;
7365
7366 END IF;*/
7367 IF l_DEBUG in ('Y', 'C') THEN
7368 cep_standard.debug('CE_VALIDATE_UNIQUE_ACCOUNT: ' || 'temp_number: '||temp_number);
7369 END IF;
7370
7371 IF (nvl(temp_number,0) > 0) then
7372 fnd_message.set_name('CE', 'CE_BANK_ACCOUNT_NUM_EXISTS');
7373 fnd_msg_pub.add;
7374 IF l_DEBUG in ('Y', 'C') THEN
7375 cep_standard.debug('CE_VALIDATE_UNIQUE_ACCOUNT: ' || 'CE_BANK_ACCOUNT_NUM_EXISTS');
7376 END IF;
7377 END IF;
7378
7379
7380 -- unique combination -> bank_branch_id, bank account name
7381
7382 CE_VALIDATE_BANKINFO.CE_UNIQUE_ACCOUNT_NAME(Xi_ACCOUNT_NAME, Xi_BRANCH_ID, Xi_ACCOUNT_ID);
7383
7384 IF l_DEBUG in ('Y', 'C') THEN
7385 cep_standard.debug('<<CE_VALIDATE_BANKINFO.CE_VALIDATE_UNIQUE_ACCOUNT_JP');
7386 END IF;
7387
7388 END CE_VALIDATE_UNIQUE_ACCOUNT_JP;
7389
7390 /* -------------------------------------------------------------------- */
7391
7392 procedure CE_VALIDATE_UNIQUE_ACCOUNT_NZ(Xi_ACCOUNT_NUMBER in varchar2,
7393 Xi_CURRENCY_CODE in varchar2,
7394 Xi_ACCOUNT_SUFFIX in varchar2,
7395 Xi_ACCOUNT_NAME in varchar2,
7396 Xi_BRANCH_ID in number,
7397 Xi_ACCOUNT_ID in number) AS
7398
7399 temp_number number;
7400 temp_name number;
7401
7402 BEGIN
7403 IF l_DEBUG in ('Y', 'C') THEN
7404 cep_standard.debug('>>CE_VALIDATE_BANKINFO.CE_VALIDATE_UNIQUE_ACCOUNT_NZ');
7405 END IF;
7406
7407 -- unique combination -> bank_branch_id, bank account number, currency code, account suffix --confirmed sql
7408
7409 select count(*) into temp_number
7410 from ce_bank_accounts ba
7411 where ba.bank_account_num = Xi_ACCOUNT_NUMBER
7412 and ba.bank_account_name = Xi_ACCOUNT_NAME
7413 and ba.account_suffix = Xi_ACCOUNT_SUFFIX
7414 and ba.currency_code = Xi_CURRENCY_CODE
7415 and ba.bank_branch_id = Xi_BRANCH_ID
7416 and ba.bank_account_id <> nvl(Xi_ACCOUNT_ID,-1);
7417
7418 IF l_DEBUG in ('Y', 'C') THEN
7419 cep_standard.debug('CE_VALIDATE_UNIQUE_ACCOUNT: ' || 'temp_number: ' || temp_number);
7420 END IF;
7421
7422 IF (nvl(temp_number,0) > 0) then
7423 IF l_DEBUG in ('Y', 'C') THEN
7424 cep_standard.debug('CE_VALIDATE_UNIQUE_ACCOUNT: ' || 'CE_BANK_ACCOUNT_NUM_EXISTS');
7425 END IF;
7426 fnd_message.set_name('CE', 'CE_BANK_ACCOUNT_NUM_EXISTS');
7427 fnd_msg_pub.add;
7428 END IF;
7429
7430
7431 -- unique combination -> bank_branch_id, bank account name
7432
7433 CE_VALIDATE_BANKINFO.CE_UNIQUE_ACCOUNT_NAME(Xi_ACCOUNT_NAME, Xi_BRANCH_ID, Xi_ACCOUNT_ID);
7434
7435
7436 IF l_DEBUG in ('Y', 'C') THEN
7437 cep_standard.debug('<<CE_VALIDATE_BANKINFO.CE_VALIDATE_UNIQUE_ACCOUNT_NZ');
7438 END IF;
7439
7440
7441 END CE_VALIDATE_UNIQUE_ACCOUNT_NZ;
7442
7443
7444 /* --------------------------------------------------------------------
7445 | PRIVATE PROCEDURE |
7446 | CE_VALIDATE_UNIQUE_BRANCH_* |
7447 | |
7448 | CALLED BY |
7449 | CE_VALIDATE_BRANCH |
7450 | |
7451 | DESCRIPTION |
7452 | Unique Branch VALIDATIONS |
7453 | |
7454 --------------------------------------------------------------------- */
7455
7456 procedure CE_VALIDATE_UNIQUE_BRANCH(Xi_COUNTRY_NAME in varchar2,
7460 Xi_BRANCH_ID in number)
7457 Xi_BRANCH_NUMBER in varchar2,
7458 Xi_BRANCH_NAME in varchar2,
7459 Xi_BANK_ID in number,
7461 AS
7462
7463 BEGIN
7464 IF l_DEBUG in ('Y', 'C') THEN
7465 cep_standard.debug('>>CE_VALIDATE_BANKINFO.CE_VALIDATE_UNIQUE_BRANCH');
7466 END IF;
7467
7468 -- unique combination -> bank_id, branch_name, country
7469
7470 CE_VALIDATE_BANKINFO.CE_UNIQUE_BRANCH_NAME(Xi_COUNTRY_NAME,Xi_BRANCH_NAME,Xi_BANK_ID,Xi_BRANCH_ID);
7471
7472 -- unique combination -> bank_id, branch_number, country
7473
7474 CE_VALIDATE_BANKINFO.CE_UNIQUE_BRANCH_NUMBER(Xi_COUNTRY_NAME,Xi_BRANCH_NUMBER,Xi_BANK_ID,Xi_BRANCH_ID);
7475
7476 IF l_DEBUG in ('Y', 'C') THEN
7477 cep_standard.debug('<<CE_VALIDATE_BANKINFO.CE_VALIDATE_UNIQUE_BRANCH');
7478 END IF;
7479
7480 END CE_VALIDATE_UNIQUE_BRANCH;
7481
7482 /* -------------------------------------------------------------------- */
7483
7484 procedure CE_VALIDATE_UNIQUE_BRANCH_JP(Xi_COUNTRY_NAME in varchar2,
7485 Xi_BRANCH_NUMBER in varchar2,
7486 Xi_BRANCH_NAME in varchar2,
7487 Xi_BRANCH_NAME_ALT in varchar2,
7488 Xi_BANK_ID in number,
7489 Xi_BRANCH_ID in number)
7490 AS
7491
7492
7493 BEGIN
7494 IF l_DEBUG in ('Y', 'C') THEN
7495 cep_standard.debug('>>CE_VALIDATE_BANKINFO.CE_VALIDATE_UNIQUE_BRANCH_JP');
7496 END IF;
7497
7498 -- unique combination -> bank_id, branch_name, country
7499
7500 CE_VALIDATE_BANKINFO.CE_UNIQUE_BRANCH_NAME(Xi_COUNTRY_NAME,Xi_BRANCH_NAME,Xi_BANK_ID,Xi_BRANCH_ID);
7501
7502 -- unique combination -> bank_id, branch_number, country
7503
7504 CE_VALIDATE_BANKINFO.CE_UNIQUE_BRANCH_NUMBER(Xi_COUNTRY_NAME,Xi_BRANCH_NUMBER,Xi_BANK_ID,Xi_BRANCH_ID);
7505
7506 -- unique combination -> bank_id, branch_name_alt, country bug 2363959
7507
7508 CE_VALIDATE_BANKINFO.CE_UNIQUE_BRANCH_NAME_ALT(Xi_COUNTRY_NAME,Xi_BRANCH_NAME_ALT,Xi_BANK_ID,Xi_BRANCH_ID);
7509
7510 IF l_DEBUG in ('Y', 'C') THEN
7511 cep_standard.debug('<<CE_VALIDATE_BANKINFO.CE_VALIDATE_UNIQUE_BRANCH_JP');
7512 END IF;
7513
7514 END CE_VALIDATE_UNIQUE_BRANCH_JP;
7515
7516 /* -------------------------------------------------------------------- */
7517
7518 procedure CE_VALIDATE_UNIQUE_BRANCH_DE(Xi_BRANCH_NUMBER in varchar2,
7519 Xi_BRANCH_NAME in varchar2,
7520 Xi_BANK_ID in number,
7521 Xi_BRANCH_ID in number)
7522 AS
7523
7524 BEGIN
7525 IF l_DEBUG in ('Y', 'C') THEN
7526 cep_standard.debug('CE_VALIDATE_BANKINFO.CE_VALIDATE_UNIQUE_BRANCH_DE remove unique requirement');
7527 END IF;
7528
7529
7530 END CE_VALIDATE_UNIQUE_BRANCH_DE;
7531
7532 /* -------------------------------------------------------------------- */
7533
7534 procedure CE_VALIDATE_UNIQUE_BRANCH_US(Xi_BRANCH_NUMBER in varchar2,
7535 Xi_BRANCH_NAME in varchar2,
7536 Xi_BANK_ID in number,
7537 Xi_BRANCH_ID in number)
7538 AS
7539
7540 BEGIN
7541 IF l_DEBUG in ('Y', 'C') THEN
7542 cep_standard.debug('CE_VALIDATE_BANKINFO.CE_VALIDATE_UNIQUE_BRANCH_US remove unique requirement');
7543 END IF;
7544
7545
7546 END CE_VALIDATE_UNIQUE_BRANCH_US;
7547
7548
7549 /* --------------------------------------------------------------------
7550 | PRIVATE PROCEDURE |
7551 | CE_VALIDATE_UNIQUE_BANK_* |
7552 | |
7553 | CALLED BY |
7554 | CE_VALIDATE_BANK |
7555 | |
7556 | DESCRIPTION |
7557 | Unique Bank VALIDATIONS |
7558 | |
7559 --------------------------------------------------------------------- */
7560
7561 procedure CE_VALIDATE_UNIQUE_BANK_JP(Xi_COUNTRY_NAME in varchar2,
7562 Xi_BANK_NUMBER in varchar2,
7563 Xi_BANK_NAME in varchar2,
7564 Xi_BANK_NAME_ALT in varchar2,
7565 Xi_BANK_ID in varchar2)
7566 AS
7567
7568 temp_number number;
7569 temp_name number;
7570 temp_name_alt number;
7571
7572 BEGIN
7573 IF l_DEBUG in ('Y', 'C') THEN
7574 cep_standard.debug('>>CE_VALIDATE_BANKINFO.CE_VALIDATE_UNIQUE_BANK_JP');
7575 END IF;
7576
7577 -- unique combination -> bank_name_alt, country bug 2363959 --confirmed sql 6/28/02
7578
7579 select count(*) into temp_name_alt
7580 From HZ_PARTIES HzPartyBankEO,
7584 HzPartyBankEO.ORGANIZATION_NAME_PHONETIC = Xi_BANK_NAME_ALT
7581 HZ_ORGANIZATION_PROFILES HzOrgProfileBankEO,
7582 HZ_CODE_ASSIGNMENTS HzCodeAssignmentBankEO
7583 Where
7585 and HzPartyBankEO.country = Xi_COUNTRY_NAME
7586 and HzPartyBankEO.PARTY_TYPE = 'ORGANIZATION'
7587 and HzPartyBankEO.status = 'A'
7588 And HzPartyBankEO.PARTY_ID = HzOrgProfileBankEO.PARTY_ID
7589 and sysdate between trunc(HzOrgProfileBankEO.EFFECTIVE_START_DATE)
7590 and nvl(trunc(HzOrgProfileBankEO.EFFECTIVE_END_DATE),sysdate)
7591 And HzCodeAssignmentBankEO.CLASS_CATEGORY = 'BANK_INSTITUTION_TYPE'
7592 And HzCodeAssignmentBankEO.CLASS_CODE = 'BANK'
7593 And HzCodeAssignmentBankEO.OWNER_TABLE_NAME = 'HZ_PARTIES'
7594 And HzCodeAssignmentBankEO.OWNER_TABLE_ID = HzPartyBankEO.PARTY_ID
7595 And nvl(HzCodeAssignmentBankEO.status, 'A') = 'A'
7596 And HzPartyBankEO.PARTY_ID = nvl(Xi_BANK_ID, -1);
7597
7598 IF l_DEBUG in ('Y', 'C') THEN
7599 cep_standard.debug('CE_VALIDATE_UNIQUE_BANK_JP - temp_name_alt: ' ||temp_name_alt);
7600 END IF;
7601
7602 IF (nvl(temp_name_alt,0) > 0) then
7603 IF l_DEBUG in ('Y', 'C') THEN
7604 cep_standard.debug('CE_VALIDATE_UNIQUE_BANK_JP: ' || 'CE_BANK_NAME_ALT_EXISTS');
7605 END IF;
7606 fnd_message.set_name('CE', 'CE_BANK_NAME_ALT_EXISTS');
7607 fnd_msg_pub.add;
7608 END IF;
7609
7610 IF l_DEBUG in ('Y', 'C') THEN
7611 cep_standard.debug('<<CE_VALIDATE_BANKINFO.CE_VALIDATE_UNIQUE_BANK_JP');
7612 END IF;
7613
7614 END CE_VALIDATE_UNIQUE_BANK_JP;
7615
7616
7617 -- added 10/25/04
7618 /* --------------------------------------------------------------------
7619 | PRIVATE PROCEDURE |
7620 | CE_VALIDATE_MISC_* other misc validations
7621 --------------------------------------------------------------------- */
7622
7623 procedure CE_VALIDATE_MISC_EFT_NUM(X_COUNTRY_NAME in varchar2,
7624 X_EFT_NUMBER in varchar2,
7625 p_init_msg_list IN VARCHAR2,
7626 x_msg_count OUT NOCOPY NUMBER,
7627 x_msg_data OUT NOCOPY VARCHAR2,
7628 x_return_status IN OUT NOCOPY VARCHAR2)
7629 AS
7630 COUNTRY_NAME VARCHAR2(2);
7631 EFT_NUM_VALUE varchar2(60);
7632 numeric_result varchar2(40);
7633
7634 procedure fail_mandatory is
7635 begin
7636 fnd_message.set_name ('CE', 'CE_ENTER_EFT_NUMBER');
7637 fnd_msg_pub.add;
7638 IF l_DEBUG in ('Y', 'C') THEN
7639 cep_standard.debug('CE_VALIDATE_MISC_EFT_NUM: ' || 'CE_ENTER_EFT_NUMBER');
7640 END IF;
7641 end fail_mandatory;
7642
7643 procedure fail_check is
7644 begin
7645 fnd_message.set_name ('CE', 'CE_INVALID_EFT_NUMBER');
7646 fnd_msg_pub.add;
7647 IF l_DEBUG in ('Y', 'C') THEN
7648 cep_standard.debug('CE_VALIDATE_MISC_EFT_NUM: ' || 'CE_INVALID_EFT_NUMBER');
7649 END IF;
7650 end fail_check;
7651
7652 procedure pass_check is
7653 begin
7654
7655 IF l_DEBUG in ('Y', 'C') THEN
7656 cep_standard.debug('CE_VALIDATE_MISC_EFT_NUM: ' || 'pass_check');
7657 END IF;
7658 end pass_check;
7659
7660
7661 BEGIN
7662 l_DEBUG := NVL(FND_PROFILE.value('CE_DEBUG'), 'N');
7663 --l_DEBUG := 'Y';
7664 IF l_DEBUG in ('Y', 'C') THEN
7665 cep_standard.debug('>>CE_VALIDATE_BANKINFO.CE_VALIDATE_MISC_EFT_NUM');
7666 END IF;
7667
7668 -- initialize API return status to success.
7669 x_return_status := fnd_api.g_ret_sts_success;
7670
7671 COUNTRY_NAME := X_COUNTRY_NAME;
7672
7673 IF l_DEBUG in ('Y', 'C') THEN
7674 cep_standard.debug('CE_VALIDATE_MISC_EFT_NUM - COUNTRY_NAME: '|| COUNTRY_NAME);
7675 END IF;
7676
7677 -- Initialize message list if p_init_msg_list is set to TRUE.
7678 IF FND_API.to_Boolean(p_init_msg_list) THEN
7679 FND_MSG_PUB.initialize;
7680 END IF;
7681
7682 IF l_DEBUG in ('Y', 'C') THEN
7683 cep_standard.debug('CE_VALIDATE_MISC_EFT_NUM: P_INIT_MSG_LIST: '|| P_INIT_MSG_LIST);
7684 END IF;
7685
7686
7687 EFT_NUM_VALUE := upper(replace(X_EFT_NUMBER,' ',''));
7688
7689 EFT_NUM_VALUE := replace(EFT_NUM_VALUE,'-','');
7690
7691 IF (COUNTRY_NAME = 'IL')
7692 THEN
7693
7694 IF (EFT_NUM_VALUE is null) then
7695 fail_mandatory;
7696 ELSE
7697 IF length(EFT_NUM_VALUE) = 8 then
7698
7699 numeric_result := ce_check_numeric(EFT_NUM_VALUE,1,length(EFT_NUM_VALUE));
7700
7701 IF numeric_result = '0' then
7702 -- its numeric so continue
7703
7704 pass_check;
7705 ELSE
7706 fail_check;
7707
7708 END IF; -- end of numeric check
7709
7710 ELSE
7711 fail_check;
7712
7713 END IF; -- end of length check
7714 END IF; -- end of mandatory check
7715 ELSE -- other countries pass_check
7716 pass_check;
7717 END IF; -- end of country_name
7718
7719
7720 FND_MSG_PUB.Count_And_Get(
7721 p_encoded => FND_API.G_FALSE,
7722 p_count => x_msg_count,
7723 p_data => x_msg_data);
7724
7725 IF x_msg_count > 0 THEN
7726 x_return_status := fnd_api.g_ret_sts_error;
7730 cep_standard.debug('CE_VALIDATE_BANKINFO.ce_validate_misc_eft_num - P_COUNT: '|| x_msg_count||
7727 END IF;
7728
7729 IF l_DEBUG in ('Y', 'C') THEN
7731 --'P_DATA: '|| x_msg_data||
7732 --' X_VALUE_OUT: '|| X_VALUE_OUT||
7733 '<<CE_VALIDATE_BANKINFO.CE_VALIDATE_MISC_EFT_NUM');
7734 END IF;
7735
7736 EXCEPTION
7737 WHEN OTHERS THEN
7738 IF l_DEBUG in ('Y', 'C') THEN
7739 cep_standard.debug('CE_VALIDATE_BANKINFO.CE_VALIDATE_MISC_EFT_NUM ' ||X_COUNTRY_NAME );
7740 END IF;
7741
7742 FND_MESSAGE.set_name('CE', 'CE_UNHANDLED_EXCEPTION');
7743 fnd_message.set_token('PROCEDURE', 'CE_VALIDATE_BANKINFO.cd_validate_misc_eft_num');
7744 fnd_msg_pub.add;
7745 RAISE;
7746 END CE_VALIDATE_MISC_EFT_NUM;
7747
7748 /* -------------------------------------------------------------------- */
7749
7750 procedure CE_VALIDATE_MISC_ACCT_HLDR_ALT(X_COUNTRY_NAME in varchar2,
7751 X_ACCOUNT_HOLDER_ALT in varchar2,
7752 X_ACCOUNT_CLASSIFICATION in varchar2,
7753 p_init_msg_list IN VARCHAR2,
7754 x_msg_count OUT NOCOPY NUMBER,
7755 x_msg_data OUT NOCOPY VARCHAR2,
7756 x_return_status IN OUT NOCOPY VARCHAR2)
7757 AS
7758 COUNTRY_NAME VARCHAR2(2);
7759 ACCOUNT_HOLDER_ALT varchar2(60);
7760 numeric_result varchar2(40);
7761
7762 procedure fail_mandatory is
7763 begin
7764 fnd_message.set_name ('CE', 'CE_ENTER_ACCOUNT_HOLDER_ALT');
7765 fnd_msg_pub.add;
7766 IF l_DEBUG in ('Y', 'C') THEN
7767 cep_standard.debug('CE_VALIDATE_MISC_ACCT_HLDR_ALT: ' || 'CE_ENTER_ACCOUNT_HOLDER_ALT');
7768 END IF;
7769 end fail_mandatory;
7770
7771 procedure pass_check is
7772 begin
7773
7774 IF l_DEBUG in ('Y', 'C') THEN
7775 cep_standard.debug('pass_check');
7776 END IF;
7777 end pass_check;
7778
7779 BEGIN
7780 l_DEBUG := NVL(FND_PROFILE.value('CE_DEBUG'), 'N');
7781 --l_DEBUG := 'Y';
7782
7783 IF l_DEBUG in ('Y', 'C') THEN
7784 cep_standard.debug('>>CE_VALIDATE_BANKINFO.CE_VALIDATE_MISC_ACCT_HLDR_ALT');
7785 END IF;
7786
7787 -- initialize API return status to success.
7788 x_return_status := fnd_api.g_ret_sts_success;
7789
7790 COUNTRY_NAME := X_COUNTRY_NAME;
7791
7792 IF l_DEBUG in ('Y', 'C') THEN
7793 cep_standard.debug('CE_VALIDATE_MISC_ACCT_HLDR_ALT - COUNTRY_NAME: '|| COUNTRY_NAME);
7794 END IF;
7795
7796 -- Initialize message list if p_init_msg_list is set to TRUE.
7797 IF FND_API.to_Boolean(p_init_msg_list) THEN
7798 FND_MSG_PUB.initialize;
7799 END IF;
7800
7801 IF l_DEBUG in ('Y', 'C') THEN
7802 cep_standard.debug('CE_VALIDATE_MISC_ACCT_HLDR_ALT: P_INIT_MSG_LIST: '|| P_INIT_MSG_LIST);
7803 END IF;
7804
7805
7806 ACCOUNT_HOLDER_ALT := X_ACCOUNT_HOLDER_ALT;
7807
7808
7809 IF (COUNTRY_NAME = 'JP')
7810 THEN
7811
7812 IF (ACCOUNT_HOLDER_ALT is null and X_ACCOUNT_CLASSIFICATION = 'INTERNAL') then
7813 fail_mandatory;
7814
7815 END IF; -- end of mandatory check
7816 ELSE -- other countries pass_check
7817 pass_check;
7818 END IF; -- end of country_name
7819
7820
7821 FND_MSG_PUB.Count_And_Get(
7822 p_encoded => FND_API.G_FALSE,
7823 p_count => x_msg_count,
7824 p_data => x_msg_data);
7825
7826 IF x_msg_count > 0 THEN
7827 x_return_status := fnd_api.g_ret_sts_error;
7828 END IF;
7829
7830 IF l_DEBUG in ('Y', 'C') THEN
7831 cep_standard.debug('CE_VALIDATE_BANKINFO.ce_validate_misc_acct_hldr_alt - P_COUNT: '|| x_msg_count||
7832 --'P_DATA: '|| x_msg_data||
7833 --' X_VALUE_OUT: '|| X_VALUE_OUT||
7834 '<<CE_VALIDATE_BANKINFO.CE_VALIDATE_MISC_ACCT_HLDR_ALT');
7835 END IF;
7836
7837 EXCEPTION
7838 WHEN OTHERS THEN
7839 IF l_DEBUG in ('Y', 'C') THEN
7840 cep_standard.debug('CE_VALIDATE_BANKINFO.CE_VALIDATE_MISC_ACCT_HLDR_ALT ' ||X_COUNTRY_NAME );
7841 END IF;
7842
7843 FND_MESSAGE.set_name('CE', 'CE_UNHANDLED_EXCEPTION');
7844 fnd_message.set_token('PROCEDURE', 'CE_VALIDATE_BANKINFO.cd_validate_misc_acct_hldr_alt');
7845 fnd_msg_pub.add;
7846 RAISE;
7847
7848 END CE_VALIDATE_MISC_ACCT_HLDR_ALT;
7849
7850 -- added 12/18/06
7851 /* -------------------------------------------------------------------- */
7852
7853 procedure CE_VALIDATE_BRANCH_IS_FORMAT(
7854 Xi_BRANCH_NUMBER in varchar2,
7855 --Xi_BANK_ID in NUMBER,
7856 Xo_VALUE_OUT OUT NOCOPY varchar2
7857 ) AS
7858
7859 BRANCH_NUM varchar2(100);
7860 numeric_result varchar2(100);
7861
7862 BEGIN
7863 IF l_DEBUG in ('Y', 'C') THEN
7864 cep_standard.debug('>>CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_IS_FORMAT');
7865 END IF;
7866
7867 BRANCH_NUM := upper(replace(Xi_BRANCH_NUMBER,' ',''));
7868 BRANCH_NUM := replace(BRANCH_NUM,'-','');
7869
7870 IF (BRANCH_NUM) IS NOT NULL
7871 THEN /* length is ok */
7872 IF length(BRANCH_NUM) <= 4
7873 THEN
7874 numeric_result := ce_check_numeric(BRANCH_NUM,1,length(BRANCH_NUM));
7878 BRANCH_NUM := lpad(BRANCH_NUM,4,0);
7875 IF numeric_result = '0'
7876 THEN /* its numeric so continue */
7877 Xo_value_out := lpad(BRANCH_NUM,4,0);
7879 ELSE
7880 ce_failed_check('BRANCH_NUM','NUMERIC');
7881 END IF; /* end of numeric check */
7882 ELSE
7883 ce_failed_check('BRANCH_NUM','LENGTH_MAX','4');
7884 END IF; /* end of length check */
7885 END IF; /* end of null check */
7886
7887 IF l_DEBUG in ('Y', 'C') THEN
7888 cep_standard.debug('<<CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_IS_FORMAT');
7889 END IF;
7890 END CE_VALIDATE_BRANCH_IS_FORMAT;
7891
7892 /* --------------------------------------------------------------------
7893 | PRIVATE PROCEDURE |
7894 | GET_BRANCH_NUM_FORMAT |
7895 | |
7896 | CALLED BY |
7897 | AR |
7898 | |
7899 | CALLS |
7900 | CE_VALIDATE_BRANCH_* for each country |
7901 | CE_VALIDATE_BRANCH_IS_FORMAT |
7902 --------------------------------------------------------------------- */
7903
7904
7905 PROCEDURE GET_BRANCH_NUM_FORMAT(X_COUNTRY_NAME IN varchar2,
7906 X_BRANCH_NUMBER IN varchar2,
7907 X_VALUE_OUT OUT NOCOPY varchar2,
7908 p_init_msg_list IN VARCHAR2,
7909 x_msg_count OUT NOCOPY NUMBER,
7910 x_msg_data OUT NOCOPY VARCHAR2,
7911 x_return_status IN OUT NOCOPY VARCHAR2)
7912 AS
7913
7914 COUNTRY_NAME VARCHAR2(2);
7915
7916 X_PASS_MAND_CHECK VARCHAR2(1);
7917
7918 procedure fail_mandatory is
7919 begin
7920 fnd_message.set_name ('CE', 'CE_ENTER_BRANCH_NUM');
7921 fnd_msg_pub.add;
7922 IF l_DEBUG in ('Y', 'C') THEN
7923 cep_standard.debug('GET_BRANCH_NUM_FORMAT: ' || 'CE_ENTER_BRANCH_NUM');
7924 END IF;
7925 end fail_mandatory;
7926
7927 BEGIN
7928 l_DEBUG := NVL(FND_PROFILE.value('CE_DEBUG'), 'N');
7929 --l_DEBUG := 'Y';
7930
7931 IF l_DEBUG in ('Y', 'C') THEN
7932 cep_standard.debug('>>CE_VALIDATE_BANKINFO.GET_BRANCH_NUM_FORMAT');
7933 END IF;
7934
7935 -- initialize API return status to success.
7936 x_return_status := fnd_api.g_ret_sts_success;
7937
7938 COUNTRY_NAME := X_COUNTRY_NAME;
7939
7940 X_VALUE_OUT := X_BRANCH_NUMBER;
7941
7942 IF l_DEBUG in ('Y', 'C') THEN
7943 cep_standard.debug('CE_VALIDATE_BANKINFO.GET_BRANCH_NUM_FORMAT - COUNTRY_NAME: '|| COUNTRY_NAME||
7944 ', X_VALUE_OUT: '|| X_VALUE_OUT);
7945 END IF;
7946
7947 -- Initialize message list if p_init_msg_list is set to TRUE.
7948 IF FND_API.to_Boolean(p_init_msg_list) THEN
7949 FND_MSG_PUB.initialize;
7950 END IF;
7951
7952 IF l_DEBUG in ('Y', 'C') THEN
7953 cep_standard.debug('CE_VALIDATE_BANKINFO.GET_BRANCH_NUM_FORMAT - P_INIT_MSG_LIST: '|| P_INIT_MSG_LIST);
7954 END IF;
7955
7956 /* We must validate the Bank Branch Number */
7957
7958 IF X_BRANCH_NUMBER is null then
7959 X_PASS_MAND_CHECK := 'F';
7960 ELSE
7961 X_PASS_MAND_CHECK := 'P';
7962 END IF;
7963
7964 IF l_DEBUG in ('Y', 'C') THEN
7965 cep_standard.debug('CE_VALIDATE_BANKINFO.GET_BRANCH_NUM_FORMAT - X_PASS_MAND_CHECK: '|| X_PASS_MAND_CHECK);
7966 END IF;
7967 IF (X_PASS_MAND_CHECK = 'P') THEN
7968 IF (COUNTRY_NAME = 'AT')
7969 THEN
7970 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_AT(X_BRANCH_NUMBER,
7971 X_PASS_MAND_CHECK,
7972 X_VALUE_OUT);
7973
7974 ELSIF (COUNTRY_NAME = 'ES')
7975 then
7976 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_ES(X_BRANCH_NUMBER,
7977 X_PASS_MAND_CHECK,
7978 X_VALUE_OUT);
7979
7980 ELSIF (COUNTRY_NAME = 'FR')
7981 then
7982 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_FR(X_BRANCH_NUMBER,
7983 X_PASS_MAND_CHECK,
7984 X_VALUE_OUT);
7985
7986 ELSIF (COUNTRY_NAME = 'BR')
7987 then
7988 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_BR(X_BRANCH_NUMBER,
7989 X_PASS_MAND_CHECK,
7990 X_VALUE_OUT);
7991
7992 ELSIF (COUNTRY_NAME = 'IS')
7993 then
7994 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_IS_FORMAT(X_BRANCH_NUMBER,
7995 --X_BANK_ID,
7996 X_VALUE_OUT);
7997
7998 ELSIF (COUNTRY_NAME = 'US')
7999 then
8000 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_US(X_BRANCH_NUMBER,
8001 X_PASS_MAND_CHECK,
8002 X_VALUE_OUT);
8003
8004 END IF;
8005 ELSE
8006 fail_mandatory;
8007 END IF;
8008
8009 FND_MSG_PUB.Count_And_Get(
8010 p_encoded => FND_API.G_FALSE,
8011 p_count => x_msg_count,
8015 x_return_status := fnd_api.g_ret_sts_error;
8012 p_data => x_msg_data);
8013
8014 IF x_msg_count > 0 THEN
8016 END IF;
8017
8018 IF l_DEBUG in ('Y', 'C') THEN
8019 cep_standard.debug('P_COUNT: '|| x_msg_count||
8020 --'P_DATA: '|| x_msg_data||
8021 ' X_VALUE_OUT: '|| X_VALUE_OUT);
8022 cep_standard.debug('<<CE_VALIDATE_BANKINFO.GET_BRANCH_NUM_FORMAT');
8023 END IF;
8024
8025 EXCEPTION
8026 WHEN OTHERS THEN
8027 IF l_DEBUG in ('Y', 'C') THEN
8028 cep_standard.debug('CE_VALIDATE_BANKINFO.GET_BRANCH_NUM_FORMAT ' ||X_COUNTRY_NAME );
8029 END IF;
8030
8031 FND_MESSAGE.set_name('CE', 'CE_UNHANDLED_EXCEPTION');
8032 fnd_message.set_token('PROCEDURE', 'CE_VALIDATE_BANKINFO.GET_BRANCH_NUM_FORMAT');
8033 fnd_msg_pub.add;
8034 RAISE;
8035
8036 END GET_BRANCH_NUM_FORMAT;
8037
8038 -- bug 6856840 : Added procedure
8039 /* ---------------------------------------------------------------------
8040 | PUBLIC PROCEDURE |
8041 | CE_VALIDATE_BRANCH_BANK |
8042 | |
8043 | DESCRIPTION |
8044 | This procedure sets the global variable BANK_ID_IS_NUM and calls |
8045 | the country-specific branch validation procedure. |
8046 | |
8047 | CALLED BY |
8048 | IBY |
8049 | |
8050 | CALLS |
8051 | CE_VALIDATE_BRANCH_* for some countries |
8052 --------------------------------------------------------------------- */
8053 procedure CE_VALIDATE_BRANCH_BANK (
8054 Xi_COUNTRY IN varchar2,
8055 Xi_BRANCH_NUM IN varchar2,
8056 Xi_BANK_NUM IN varchar2,
8057 Xo_VALUE_OUT OUT NOCOPY varchar2
8058 ) AS
8059 BEGIN
8060 IF l_DEBUG in ('Y', 'C') THEN
8061 cep_standard.debug('<<CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_BANK');
8062 END IF;
8063
8064 -- setting global variable to map Bank ID as Bank Number instead
8065 -- of party ID
8066 BANK_ID_IS_NUM := TRUE;
8067
8068 Xo_VALUE_OUT := Xi_BRANCH_NUM;
8069 -- depending upon country code call the appropriate function
8070 IF Xi_COUNTRY = 'AU'
8071 THEN
8072 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_AU(
8073 Xi_BRANCH_NUMBER => Xi_BRANCH_NUM,
8074 Xi_BANK_ID => Xi_BANK_NUM,
8075 Xi_PASS_MAND_CHECK => 'P');
8076
8077 ELSIF Xi_COUNTRY = 'DE'
8078 THEN
8079 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_DE(
8080 Xi_BRANCH_NUMBER => Xi_BRANCH_NUM,
8081 Xi_BANK_ID => Xi_BANK_NUM);
8082
8083 ELSIF Xi_COUNTRY = 'IS'
8084 THEN
8085 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_IS(
8086 Xi_BRANCH_NUMBER => Xi_BRANCH_NUM,
8087 Xi_BANK_ID => Xi_BANK_NUM,
8088 Xo_VALUE_OUT => Xo_VALUE_OUT);
8089
8090 ELSIF Xi_COUNTRY = 'IE'
8091 THEN
8092 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_IE(
8093 Xi_BRANCH_NUMBER => Xi_BRANCH_NUM,
8094 Xi_BANK_ID => Xi_BANK_NUM);
8095
8096 ELSIF Xi_COUNTRY = 'LU'
8097 THEN
8098 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_LU(
8099 Xi_BRANCH_NUMBER => Xi_BRANCH_NUM,
8100 Xi_BANK_ID => Xi_BANK_NUM);
8101
8102 ELSIF Xi_COUNTRY = 'PL'
8103 THEN
8104 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_PL(
8105 Xi_BRANCH_NUMBER => Xi_BRANCH_NUM,
8106 Xi_BANK_ID => Xi_BANK_NUM);
8107
8108 ELSIF Xi_COUNTRY = 'SE'
8109 THEN
8110 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_SE(
8111 Xi_BRANCH_NUMBER => Xi_BRANCH_NUM,
8112 Xi_BANK_ID => Xi_BANK_NUM);
8113
8114 ELSIF Xi_COUNTRY = 'CH'
8115 THEN
8116 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_CH(
8117 Xi_BRANCH_NUMBER => Xi_BRANCH_NUM,
8118 Xi_BANK_ID => Xi_BANK_NUM);
8119
8120 ELSIF Xi_COUNTRY = 'GB'
8121 THEN
8122 CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_GB(
8123 Xi_BRANCH_NUMBER => Xi_BRANCH_NUM,
8124 Xi_BANK_ID => Xi_BANK_NUM);
8125 END IF;
8126
8127 -- resetting the variable
8128 BANK_ID_IS_NUM := FALSE;
8129
8130 IF l_DEBUG in ('Y', 'C') THEN
8131 cep_standard.debug('<<CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_BANK');
8132 END IF;
8133 END CE_VALIDATE_BRANCH_BANK;
8134
8135 END CE_VALIDATE_BANKINFO;