DBA Data[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;