DBA Data[Home] [Help]

PACKAGE BODY: APPS.IBY_EXT_BANKACCT_VALIDATIONS

Source


1 PACKAGE BODY IBY_EXT_BANKACCT_VALIDATIONS AS
2 /*$Header: ibybnkvalb.pls 120.16.12010000.1 2008/07/28 05:39:41 appldev ship $*/
3 
4 
5  --
6  -- Forward Declarations
7  --
8   PROCEDURE print_debuginfo(
9     p_message              IN     VARCHAR2,
10     p_prefix               IN     VARCHAR2 DEFAULT 'DEBUG',
11     p_msg_level            IN     NUMBER   DEFAULT FND_LOG.LEVEL_STATEMENT,
12     p_module               IN     VARCHAR2 DEFAULT G_DEBUG_MODULE
13   );
14 
15   PROCEDURE check_mandatory(
16     p_field           IN     VARCHAR2,
17     p_value           IN     VARCHAR2
18    );
19 
20   --  iby_validate_account_at
21   --
22   --   API name        : iby_validate_account_at
23   --   Type            : Public
24   --   Pre-reqs        : None
25   --   Function        : Austria Validations
26   --   Current version : 1.0
27   --   Previous version: 1.0
28   --   Initial version : 1.0
29 
30   PROCEDURE iby_validate_account_at(
31     p_ext_bank_rec            IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBank_rec_type,
32     p_ext_bank_branch_rec     IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankBranch_rec_type,
33     p_ext_bank_acct_rec       IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankAcct_rec_type,
34     foreign_payment_flag      IN BOOLEAN,
35     x_valid                   IN OUT NOCOPY BOOLEAN
36     )
37   IS
38 
39   l_api_name           CONSTANT VARCHAR2(30)   := 'iby_validate_account_at';
40   l_api_version        CONSTANT NUMBER         := 1.0;
41   l_module_name        CONSTANT VARCHAR2(200)  := G_PKG_NAME || '.' || l_api_name;
42 
43   val_result           BOOLEAN;
44   l_bank_account_num   VARCHAR2(100);
45   l_bank_branch_num    VARCHAR2(30);
46   l_bank_num           VARCHAR2(30);
47 
48   BEGIN
49 
50     print_debuginfo('ENTER ' || l_module_name);
51     x_valid := FALSE;
52 
53     l_bank_account_num := p_ext_bank_acct_rec.bank_account_num;
54 
55     -- Validate Bank Account Information
56     CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_AT (
57        Xi_ACCOUNT_NUMBER   => p_ext_bank_acct_rec.bank_account_num,
58        Xi_PASS_MAND_CHECK  => 'P',
59        Xo_VALUE_OUT        => l_bank_account_num);
60 
61     p_ext_bank_acct_rec.bank_account_num :=
62           NVL(l_bank_account_num,p_ext_bank_acct_rec.bank_account_num);
63 
64     IF (foreign_payment_flag) THEN
65 
66       l_bank_branch_num := p_ext_bank_branch_rec.branch_number;
67 
68       -- Validate Bank Branch
69       CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_AT(
70          Xi_BRANCH_NUMBER    => p_ext_bank_branch_rec.branch_number,
71          Xi_PASS_MAND_CHECK  => 'P',
72          Xo_VALUE_OUT        => l_bank_branch_num);
73 
74       p_ext_bank_branch_rec.branch_number :=
75          NVL(l_bank_branch_num, p_ext_bank_branch_rec.branch_number);
76 
77     END IF;
78 
79     x_valid := TRUE;
80 
81     print_debuginfo('RETURN ' || l_module_name);
82 
83   END iby_validate_account_at;
84 
85 
86   --  iby_validate_account_au
87   --
88   --   API name        : iby_validate_account_au
89   --   Type            : Public
90   --   Pre-reqs        : None
91   --   Function        : Australian Validations
92   --   Current version : 1.0
93   --   Previous version: 1.0
94   --   Initial version : 1.0
95   PROCEDURE iby_validate_account_au(
96     p_ext_bank_rec            IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBank_rec_type,
97     p_ext_bank_branch_rec     IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankBranch_rec_type,
98     p_ext_bank_acct_rec       IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankAcct_rec_type,
99     foreign_payment_flag      IN BOOLEAN,
100     x_valid                   IN OUT NOCOPY BOOLEAN
101     )
102   IS
103   l_api_name           CONSTANT VARCHAR2(30)   := 'iby_validate_account_au';
104   l_api_version        CONSTANT NUMBER         := 1.0;
105   l_module_name        CONSTANT VARCHAR2(200)  := G_PKG_NAME || '.' || l_api_name;
106 
107   val_result           BOOLEAN;
108   l_bank_account_num   VARCHAR2(100);
109   l_bank_branch_num    VARCHAR2(30);
110   l_bank_num           VARCHAR2(30);
111 
112   BEGIN
113 
114     print_debuginfo('ENTER ' || l_module_name);
115     x_valid := FALSE;
116 
117     -- Validate Bank Account Information
118     CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_AU(
119        Xi_ACCOUNT_NUMBER   => p_ext_bank_acct_rec.bank_account_num,
120        Xi_CURRENCY_CODE    => p_ext_bank_acct_rec.currency);
121 
122     IF (foreign_payment_flag) THEN
123 
124       -- Validate Bank Bank
125       CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_AU(
126          Xi_BANK_NUMBER    => l_bank_num);
127 
128       /*
129       -- Validate Bank Branch
130       CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_AU(
131          Xi_BRANCH_NUMBER    => p_ext_bank_branch_rec.branch_number,
132          Xi_BANK_ID          => p_ext_bank_rec.bank_id,
133          Xi_PASS_MAND_CHECK  => 'P');
134       */
135 
136       -- Validate Bank Branch
137             print_debuginfo('Calling bank branch validation CE API');
138       CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_BANK(
139            Xi_COUNTRY	  => 'AU',
140            Xi_BRANCH_NUM  => p_ext_bank_branch_rec.branch_number,
141            Xi_BANK_NUM	  => p_ext_bank_rec.bank_number,
142            Xo_VALUE_OUT   => l_bank_branch_num);
143 
144     END IF;
145 
146     x_valid := TRUE;
147 
148     print_debuginfo('RETURN ' || l_module_name);
149 
150 
151   END iby_validate_account_au;
152 
153 
154   --  iby_validate_account_be
155   --
156   --   API name        : iby_validate_account_be
157   --   Type            : Public
158   --   Pre-reqs        : None
159   --   Function        : Belgian Validations
160   --   Current version : 1.0
161   --   Previous version: 1.0
162   --   Initial version : 1.0
163   PROCEDURE iby_validate_account_be(
164     p_ext_bank_rec            IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBank_rec_type,
165     p_ext_bank_branch_rec     IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankBranch_rec_type,
166     p_ext_bank_acct_rec       IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankAcct_rec_type,
167     foreign_payment_flag      IN BOOLEAN,
168     x_valid                   IN OUT NOCOPY BOOLEAN
169     )
170   IS
171   l_api_name           CONSTANT VARCHAR2(30)   := 'iby_validate_account_be';
172   l_api_version        CONSTANT NUMBER         := 1.0;
173   l_module_name        CONSTANT VARCHAR2(200)  := G_PKG_NAME || '.' || l_api_name;
174 
175   val_result           BOOLEAN;
176   l_bank_account_num   VARCHAR2(100);
177   l_bank_branch_num    VARCHAR2(30);
178   l_bank_num           VARCHAR2(30);
179 
180   BEGIN
181 
182     print_debuginfo('ENTER ' || l_module_name);
183     x_valid := FALSE;
184 
185     -- Validate Bank Account Information
186     CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_BE(
187        Xi_ACCOUNT_NUMBER   => l_bank_account_num,
188        Xi_PASS_MAND_CHECK  => 'P');
189 
190 
191     x_valid := TRUE;
192 
193     print_debuginfo('RETURN ' || l_module_name);
194 
195 
196   END iby_validate_account_be;
197 
198   --  iby_validate_account_ca
199   --
200   --   API name        : iby_validate_account_ca
201   --   Type            : Public
202   --   Pre-reqs        : None
203   --   Function        : Canadian Validations
204   --   Current version : 1.0
205   --   Previous version: 1.0
206   --   Initial version : 1.0
207   PROCEDURE iby_validate_account_ca(
208     p_ext_bank_rec            IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBank_rec_type,
209     p_ext_bank_branch_rec     IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankBranch_rec_type,
210     p_ext_bank_acct_rec       IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankAcct_rec_type,
211     foreign_payment_flag      IN BOOLEAN,
212     x_valid                   IN OUT NOCOPY BOOLEAN
213     )
214   IS
215   l_api_name           CONSTANT VARCHAR2(30)   := 'iby_validate_account_ca';
216   l_api_version        CONSTANT NUMBER         := 1.0;
217   l_module_name        CONSTANT VARCHAR2(200)  := G_PKG_NAME || '.' || l_api_name;
218 
219   val_result           BOOLEAN;
220   l_bank_account_num   VARCHAR2(100);
221   l_bank_branch_num    VARCHAR2(30);
222   l_bank_num           VARCHAR2(30);
223 
224   BEGIN
225 
226     print_debuginfo('ENTER ' || l_module_name);
227     x_valid := FALSE;
228 
229     print_debuginfo('RETURN ' || l_module_name);
230 
231     END iby_validate_account_ca;
232 
233 
234   --  iby_validate_account_de
235   --
236   --   API name        : iby_validate_account_de
237   --   Type            : Public
238   --   Pre-reqs        : None
239   --   Function        : German Validations
240   --   Current version : 1.0
241   --   Previous version: 1.0
242   --   Initial version : 1.0
243   PROCEDURE iby_validate_account_de(
244     p_ext_bank_rec            IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBank_rec_type,
245     p_ext_bank_branch_rec     IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankBranch_rec_type,
246     p_ext_bank_acct_rec       IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankAcct_rec_type,
247     foreign_payment_flag      IN BOOLEAN,
248     x_valid                   IN OUT NOCOPY BOOLEAN
249     )
250   IS
251   l_api_name           CONSTANT VARCHAR2(30)   := 'iby_validate_account_de';
252   l_api_version        CONSTANT NUMBER         := 1.0;
253   l_module_name        CONSTANT VARCHAR2(200)  := G_PKG_NAME || '.' || l_api_name;
254 
255   val_result           BOOLEAN;
256   l_bank_account_num   VARCHAR2(100);
257   l_bank_branch_num    VARCHAR2(30);
258   l_bank_num           VARCHAR2(30);
259 
260 
261   BEGIN
262 
263     print_debuginfo('ENTER ' || l_module_name);
264     x_valid := FALSE;
265 
266     l_bank_account_num := p_ext_bank_acct_rec.bank_account_num;
267 
268     -- Validate Bank Account Information
269     CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_DE (
270        Xi_ACCOUNT_NUMBER   => p_ext_bank_acct_rec.bank_account_num,
271        Xo_VALUE_OUT        => l_bank_account_num);
272 
273     p_ext_bank_acct_rec.bank_account_num :=
274           NVL(l_bank_account_num,p_ext_bank_acct_rec.bank_account_num);
275 
276     IF (foreign_payment_flag) THEN
277 
278       -- Validate Bank Bank
279       CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_DE(
280          Xi_BANK_NUMBER    => p_ext_bank_rec.bank_number);
281 
282       /*
283       -- Validate Bank Branch
284       CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_DE(
285          Xi_BRANCH_NUMBER    => p_ext_bank_branch_rec.branch_number,
286          Xi_BANK_ID          => p_ext_bank_rec.bank_id);
287       */
288 
289       -- Validate Bank Branch
290             print_debuginfo('Calling bank branch validation CE API');
291       CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_BANK(
292            Xi_COUNTRY	  => 'DE',
293            Xi_BRANCH_NUM  => p_ext_bank_branch_rec.branch_number,
294            Xi_BANK_NUM	  => p_ext_bank_rec.bank_number,
295            Xo_VALUE_OUT   => l_bank_branch_num);
296     END IF;
297 
298     -- Validate Check Digit
299     CE_VALIDATE_BANKINFO.CE_VALIDATE_CD_DE(
300          Xi_CD               => p_ext_bank_acct_rec.check_digits,
301          Xi_X_ACCOUNT_NUMBER => p_ext_bank_acct_rec.bank_account_num);
302 
303     x_valid := TRUE;
304 
305     print_debuginfo('RETURN ' || l_module_name);
306 
307 
308     END iby_validate_account_de;
309 
310 
311   --  iby_validate_account_dk
312   --
313   --   API name        : iby_validate_account_dk
314   --   Type            : Public
315   --   Pre-reqs        : None
316   --   Function        : Denmark Validations
317   --   Current version : 1.0
318   --   Previous version: 1.0
319   --   Initial version : 1.0
320   PROCEDURE iby_validate_account_dk(
321     p_ext_bank_rec            IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBank_rec_type,
322     p_ext_bank_branch_rec     IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankBranch_rec_type,
323     p_ext_bank_acct_rec       IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankAcct_rec_type,
324     foreign_payment_flag      IN BOOLEAN,
325     x_valid                   IN OUT NOCOPY BOOLEAN
326     )
327   IS
328   l_api_name           CONSTANT VARCHAR2(30)   := 'iby_validate_account_dk';
329   l_api_version        CONSTANT NUMBER         := 1.0;
330   l_module_name        CONSTANT VARCHAR2(200)  := G_PKG_NAME || '.' || l_api_name;
331 
332   val_result           BOOLEAN;
333   l_bank_account_num   VARCHAR2(100);
334   l_bank_branch_num    VARCHAR2(30);
335   l_bank_num           VARCHAR2(30);
336 
337   BEGIN
338 
339     print_debuginfo('ENTER ' || l_module_name);
340     x_valid := FALSE;
341 
342     l_bank_account_num := p_ext_bank_acct_rec.bank_account_num;
343 
344     -- Validate Bank Account Information
345     CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_DK (
346        Xi_ACCOUNT_NUMBER   => p_ext_bank_acct_rec.bank_account_num,
347        Xi_PASS_MAND_CHECK  => 'P',
348        Xo_VALUE_OUT        => l_bank_account_num);
349 
350     p_ext_bank_acct_rec.bank_account_num :=
351           NVL(l_bank_account_num,p_ext_bank_acct_rec.bank_account_num);
352 
353     x_valid := TRUE;
354 
355   END iby_validate_account_dk;
356 
357 
358   --  iby_validate_account_fi
359   --
360   --   API name        : iby_validate_account_fi
361   --   Type            : Public
362   --   Pre-reqs        : None
363   --   Function        : Finnish Validations
364   --   Current version : 1.0
365   --   Previous version: 1.0
366   --   Initial version : 1.0
367   PROCEDURE iby_validate_account_fi(
368     p_ext_bank_rec            IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBank_rec_type,
369     p_ext_bank_branch_rec     IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankBranch_rec_type,
370     p_ext_bank_acct_rec       IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankAcct_rec_type,
371     foreign_payment_flag      IN BOOLEAN,
372     x_valid                   IN OUT NOCOPY BOOLEAN
373     )
374   IS
375   l_api_name           CONSTANT VARCHAR2(30)   := 'iby_validate_account_fi';
376   l_api_version        CONSTANT NUMBER         := 1.0;
377   l_module_name        CONSTANT VARCHAR2(200)  := G_PKG_NAME || '.' || l_api_name;
378 
379    val_result           BOOLEAN;
380    l_bank_account_num   VARCHAR2(100);
381    l_bank_branch_num    VARCHAR2(30);
382    l_bank_num           VARCHAR2(30);
383 
384   BEGIN
385 
386     print_debuginfo('ENTER ' || l_module_name);
387     x_valid := FALSE;
388 
389     -- Validate Bank Account Information
390     CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_FI (
391        Xi_ACCOUNT_NUMBER   => p_ext_bank_acct_rec.bank_account_num,
392        Xi_PASS_MAND_CHECK  => 'P');
393 
394 
395     x_valid := TRUE;
396 
397     print_debuginfo('RETURN ' || l_module_name);
398 
399   END iby_validate_account_fi;
400 
401 
402   --  iby_validate_account_fr
403   --
404   --   API name        : iby_validate_account_fr
405   --   Type            : Public
406   --   Pre-reqs        : None
407   --   Function        : France Validations
408   --   Current version : 1.0
409   --   Previous version: 1.0
410   --   Initial version : 1.0
411   PROCEDURE iby_validate_account_fr(
412     p_ext_bank_rec            IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBank_rec_type,
413     p_ext_bank_branch_rec     IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankBranch_rec_type,
414     p_ext_bank_acct_rec       IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankAcct_rec_type,
415     foreign_payment_flag      IN BOOLEAN,
416     x_valid                   IN OUT NOCOPY BOOLEAN
417     )
418   IS
419   l_api_name           CONSTANT VARCHAR2(30)   := 'iby_validate_account_fr';
420   l_api_version        CONSTANT NUMBER         := 1.0;
421   l_module_name        CONSTANT VARCHAR2(200)  := G_PKG_NAME || '.' || l_api_name;
422 
423   val_result           BOOLEAN;
424   l_bank_account_num   VARCHAR2(100);
425   l_bank_branch_num    VARCHAR2(30);
426   l_bank_num           VARCHAR2(30);
427 
428 
429   BEGIN
430 
431     print_debuginfo('ENTER ' || l_module_name);
432     x_valid := FALSE;
433 
434     l_bank_account_num := p_ext_bank_acct_rec.bank_account_num;
435 
436     -- Validate Bank Account Information
437     CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_FR (
438        Xi_ACCOUNT_NUMBER   => p_ext_bank_acct_rec.bank_account_num,
439        Xi_PASS_MAND_CHECK  => 'P',
440        Xo_VALUE_OUT        => l_bank_account_num);
441 
442     p_ext_bank_acct_rec.bank_account_num :=
443           NVL(l_bank_account_num,p_ext_bank_acct_rec.bank_account_num);
444 
445     IF (foreign_payment_flag) THEN
446 
447       l_bank_num := p_ext_bank_rec.bank_number;
448 
449       -- Validate Bank
450       CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_FR(
451          Xi_BANK_NUMBER    => p_ext_bank_rec.bank_number,
452          Xi_PASS_MAND_CHECK  => 'P',
453          Xo_VALUE_OUT        => l_bank_num);
454 
455       p_ext_bank_rec.bank_number :=
456          NVL(l_bank_num,p_ext_bank_rec.bank_number);
457 
458       l_bank_branch_num := p_ext_bank_branch_rec.branch_name;
459 
460       -- Validate Bank Branch
461       CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_FR(
462          Xi_BRANCH_NUMBER    => p_ext_bank_branch_rec.branch_number,
463          Xi_PASS_MAND_CHECK  => 'P',
464          Xo_VALUE_OUT        => l_bank_branch_num);
465 
466       p_ext_bank_branch_rec.branch_number :=
467          NVL(l_bank_branch_num, p_ext_bank_branch_rec.branch_number);
468 
469     END IF;
470 
471     -- Validate Check Digits
472     CE_VALIDATE_BANKINFO.CE_VALIDATE_CD_FR(
473          Xi_CD                =>  p_ext_bank_acct_rec.check_digits,
474          Xi_PASS_MAND_CHECK   =>  'P',
475          Xi_X_BANK_NUMBER     =>  p_ext_bank_rec.bank_number,
476          Xi_X_BRANCH_NUMBER   =>  p_ext_bank_branch_rec.branch_number,
477          Xi_X_ACCOUNT_NUMBER  =>  translate(p_ext_bank_acct_rec.bank_account_num,
478                                             'ABCDEFGHIJKLMNOPQRSTUVWXYZ ',
479                                             '123456789123456789234567890'));
480 
481     x_valid := TRUE;
482 
483   END iby_validate_account_fr;
484 
485 
486   --  iby_validate_account_gb
487   --
488   --   API name        : iby_validate_account_gb
489   --   Type            : Public
490   --   Pre-reqs        : None
491   --   Function        : Greek Validations
492   --   Current version : 1.0
493   --   Previous version: 1.0
494   --   Initial version : 1.0
495   PROCEDURE iby_validate_account_gb(
496     p_ext_bank_rec            IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBank_rec_type,
497     p_ext_bank_branch_rec     IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankBranch_rec_type,
498     p_ext_bank_acct_rec       IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankAcct_rec_type,
499     foreign_payment_flag      IN BOOLEAN,
500     x_valid                   IN OUT NOCOPY BOOLEAN
501     )
502   IS
503   l_api_name           CONSTANT VARCHAR2(30)   := 'iby_validate_account_gb';
504   l_api_version        CONSTANT NUMBER         := 1.0;
505   l_module_name        CONSTANT VARCHAR2(200)  := G_PKG_NAME || '.' || l_api_name;
506 
507   val_result           BOOLEAN;
508   l_bank_account_num   VARCHAR2(100);
509   l_bank_branch_num    VARCHAR2(30);
510   l_bank_num           VARCHAR2(30);
511 
512   BEGIN
513 
514     print_debuginfo('ENTER ' || l_module_name);
515     x_valid := FALSE;
516 
517     l_bank_account_num := p_ext_bank_acct_rec.bank_account_num;
518 
519     -- Validate Bank Account Information
520     CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_GB (
521        Xi_ACCOUNT_NUMBER   => p_ext_bank_acct_rec.bank_account_num,
522        Xo_VALUE_OUT        => l_bank_account_num);
523 
524     p_ext_bank_acct_rec.bank_account_num :=
525           NVL(l_bank_account_num,p_ext_bank_acct_rec.bank_account_num);
526 
527     IF (foreign_payment_flag) THEN
528 
529       -- Validate Bank Bank
530       CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_GB(
531          Xi_BANK_NUMBER    => p_ext_bank_rec.bank_number);
532 
533       /*
534       -- Validate Bank Branch
535       CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_GB(
536          Xi_BRANCH_NUMBER    => p_ext_bank_branch_rec.branch_number,
537          Xi_BANK_ID          => p_ext_bank_rec.bank_id);
538       */
539 
540       -- Validate Bank Branch
541             print_debuginfo('Calling bank branch validation CE API');
542       CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_BANK(
543            Xi_COUNTRY	  => 'GB',
544            Xi_BRANCH_NUM  => p_ext_bank_branch_rec.branch_number,
545            Xi_BANK_NUM	  => p_ext_bank_rec.bank_number,
546            Xo_VALUE_OUT   => l_bank_branch_num);
547 
548     END IF;
549 
550     x_valid := TRUE;
551 
552     print_debuginfo('RETURN ' || l_module_name);
553 
554   END iby_validate_account_gb;
555 
556 
557   --  iby_validate_account_gr
558   --
559   --   API name        : iby_validate_account_gr
560   --   Type            : Public
561   --   Pre-reqs        : None
562   --   Function        : Greek Validations
563   --   Current version : 1.0
564   --   Previous version: 1.0
565   --   Initial version : 1.0
566   PROCEDURE iby_validate_account_gr(
567     p_ext_bank_rec            IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBank_rec_type,
568     p_ext_bank_branch_rec     IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankBranch_rec_type,
569     p_ext_bank_acct_rec       IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankAcct_rec_type,
570     foreign_payment_flag      IN BOOLEAN,
571     x_valid                   IN OUT NOCOPY BOOLEAN
572     )
573   IS
574   l_api_name           CONSTANT VARCHAR2(30)   := 'iby_validate_account_gr';
575   l_api_version        CONSTANT NUMBER         := 1.0;
576   l_module_name        CONSTANT VARCHAR2(200)  := G_PKG_NAME || '.' || l_api_name;
577 
578    val_result           BOOLEAN;
579    l_bank_account_num   VARCHAR2(100);
580    l_bank_branch_num    VARCHAR2(30);
581    l_bank_num           VARCHAR2(30);
582 
583 
584   BEGIN
585 
586     print_debuginfo('ENTER ' || l_module_name);
587     x_valid := FALSE;
588 
589     l_bank_account_num := p_ext_bank_acct_rec.bank_account_num;
590 
591     -- Validate Bank Account Information
592     CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_GR (
593        Xi_ACCOUNT_NUMBER   => p_ext_bank_acct_rec.bank_account_num,
594        Xo_VALUE_OUT        => l_bank_account_num);
595 
596     p_ext_bank_acct_rec.bank_account_num :=
597           NVL(l_bank_account_num,p_ext_bank_acct_rec.bank_account_num);
598 
599     IF (foreign_payment_flag) THEN
600 
601       -- Validate Bank Bank
602       CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_GR(
603          Xi_BANK_NUMBER    => p_ext_bank_rec.bank_number);
604 
605       -- Validate Bank Branch
606       CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_GR(
607          Xi_BRANCH_NUMBER    => p_ext_bank_branch_rec.branch_number);
608 
609     END IF;
610 
611     -- Validate Check Digits
612     CE_VALIDATE_BANKINFO.CE_VALIDATE_CD_GR(
613          Xi_CD                =>  p_ext_bank_acct_rec.check_digits,
614          Xi_PASS_MAND_CHECK   =>  'P',
615          Xi_X_BANK_NUMBER     =>  p_ext_bank_rec.bank_number,
616          Xi_X_BRANCH_NUMBER   =>  p_ext_bank_branch_rec.branch_number,
617          Xi_X_ACCOUNT_NUMBER  =>  translate(p_ext_bank_acct_rec.bank_account_num,
618                                             'ABCDEFGHIJKLMNOPQRSTUVWXYZ ',
619                                             '123456789123456789234567890'));
620 
621 
622     x_valid := TRUE;
623 
624     print_debuginfo('RETURN ' || l_module_name);
625 
626   END iby_validate_account_gr;
627 
628 
629   --  iby_validate_account_hk
630   --
631   --   API name        : iby_validate_account_hk
632   --   Type            : Public
633   --   Pre-reqs        : None
634   --   Function        : Hongkong Validations
635   --   Current version : 1.0
636   --   Previous version: 1.0
637   --   Initial version : 1.0
638   PROCEDURE iby_validate_account_hk(
639     p_ext_bank_rec            IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBank_rec_type,
640     p_ext_bank_branch_rec     IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankBranch_rec_type,
641     p_ext_bank_acct_rec       IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankAcct_rec_type,
642     foreign_payment_flag      IN BOOLEAN,
643     x_valid                   IN OUT NOCOPY BOOLEAN
644     )
645   IS
646   l_api_name           CONSTANT VARCHAR2(30)   := 'iby_validate_account_hk';
647   l_api_version        CONSTANT NUMBER         := 1.0;
648   l_module_name        CONSTANT VARCHAR2(200)  := G_PKG_NAME || '.' || l_api_name;
649 
650   val_result           BOOLEAN;
651   l_bank_account_num   VARCHAR2(100);
652   l_bank_branch_num    VARCHAR2(30);
653   l_bank_num           VARCHAR2(30);
654 
655   BEGIN
656 
657     print_debuginfo('ENTER ' || l_module_name);
658 
659     x_valid := TRUE;
660 
661     print_debuginfo('RETURN ' || l_module_name);
662 
663   END iby_validate_account_hk;
664 
665 
666   --  iby_validate_account_il
667   --
668   --   API name        : iby_validate_account_il
669   --   Type            : Public
670   --   Pre-reqs        : None
671   --   Function        : Iceland Validations
672   --   Current version : 1.0
673   --   Previous version: 1.0
674   --   Initial version : 1.0
675   PROCEDURE iby_validate_account_il(
676     p_ext_bank_rec            IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBank_rec_type,
677     p_ext_bank_branch_rec     IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankBranch_rec_type,
678     p_ext_bank_acct_rec       IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankAcct_rec_type,
679     foreign_payment_flag      IN BOOLEAN,
680     x_valid                   IN OUT NOCOPY BOOLEAN
681     )
682   IS
683   l_api_name           CONSTANT VARCHAR2(30)   := 'iby_validate_account_il';
684   l_api_version        CONSTANT NUMBER         := 1.0;
685   l_module_name        CONSTANT VARCHAR2(200)  := G_PKG_NAME || '.' || l_api_name;
686 
687    val_result           BOOLEAN;
688    l_bank_account_num   VARCHAR2(100);
689    l_bank_branch_num    VARCHAR2(30);
690    l_bank_num           VARCHAR2(30);
691 
692   BEGIN
693 
694     print_debuginfo('ENTER ' || l_module_name);
695     x_valid := FALSE;
696 
697     -- Validate Bank Account Information
698     CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_IL (
699        Xi_ACCOUNT_NUMBER   => p_ext_bank_acct_rec.bank_account_num);
700 
701     IF (foreign_payment_flag) THEN
702 
703       -- Validate Bank
704       CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_IL(
705          Xi_BANK_NUMBER    => p_ext_bank_rec.bank_number,
706          Xi_PASS_MAND_CHECK  => 'P');
707 
708       -- Validate Bank Branch
709       CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_IL(
710          Xi_BRANCH_NUMBER    => p_ext_bank_branch_rec.branch_number,
711          Xi_PASS_MAND_CHECK  => 'P');
712 
713     END IF;
714 
715     x_valid := TRUE;
716 
717     print_debuginfo('RETURN ' || l_module_name);
718 
719 
720   END iby_validate_account_il;
721 
722 
723   --  iby_validate_account_ie
724   --
725   --   API name        : iby_validate_account_ie
726   --   Type            : Public
727   --   Pre-reqs        : None
728   --   Function        : Ireland Validations
729   --   Current version : 1.0
730   --   Previous version: 1.0
731   --   Initial version : 1.0
732   PROCEDURE iby_validate_account_ie(
733     p_ext_bank_rec            IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBank_rec_type,
734     p_ext_bank_branch_rec     IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankBranch_rec_type,
735     p_ext_bank_acct_rec       IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankAcct_rec_type,
736     foreign_payment_flag      IN BOOLEAN,
737     x_valid                   IN OUT NOCOPY BOOLEAN
738     )
739   IS
740   l_api_name           CONSTANT VARCHAR2(30)   := 'iby_validate_account_ie';
741   l_api_version        CONSTANT NUMBER         := 1.0;
742   l_module_name        CONSTANT VARCHAR2(200)  := G_PKG_NAME || '.' || l_api_name;
743 
744   val_result           BOOLEAN;
745   l_bank_account_num   VARCHAR2(100);
746   l_bank_branch_num    VARCHAR2(30);
747   l_bank_num           VARCHAR2(30);
748 
749 
750 
751   BEGIN
752 
753      print_debuginfo('ENTER ' || l_module_name);
754     x_valid := FALSE;
755 
756     CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_IE (
757        Xi_ACCOUNT_NUMBER   => p_ext_bank_acct_rec.bank_account_num);
758 
759     IF (foreign_payment_flag) THEN
760 
761       -- Validate Bank
762       CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_IE(
763          Xi_BANK_NUMBER    => p_ext_bank_rec.bank_number);
764 
765       /*
766       -- Validate Bank Branch
767       CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_IE(
768          Xi_BRANCH_NUMBER    => p_ext_bank_branch_rec.branch_number,
769          Xi_BANK_ID          => p_ext_bank_rec.bank_id);
770       */
771 
772       -- Validate Bank Branch
773             print_debuginfo('Calling bank branch validation CE API');
774       CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_BANK(
775            Xi_COUNTRY	  => 'IE',
776            Xi_BRANCH_NUM  => p_ext_bank_branch_rec.branch_number,
777            Xi_BANK_NUM	  => p_ext_bank_rec.bank_number,
778            Xo_VALUE_OUT   => l_bank_branch_num);
779     END IF;
780 
781     x_valid := TRUE;
782 
783     print_debuginfo('RETURN ' || l_module_name);
784 
785   END iby_validate_account_ie;
786 
787   --  iby_validate_account_is
788   --
789   --   API name        : iby_validate_account_is
790   --   Type            : Public
791   --   Pre-reqs        : None
792   --   Function        : Italy Validations
793   --   Current version : 1.0
794   --   Previous version: 1.0
795   --   Initial version : 1.0
796   PROCEDURE iby_validate_account_is(
797     p_ext_bank_rec            IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBank_rec_type,
798     p_ext_bank_branch_rec     IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankBranch_rec_type,
799     p_ext_bank_acct_rec       IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankAcct_rec_type,
800     foreign_payment_flag      IN BOOLEAN,
801     x_valid                   IN OUT NOCOPY BOOLEAN
802     )
803   IS
804   l_api_name           CONSTANT VARCHAR2(30)   := 'iby_validate_account_is';
805   l_api_version        CONSTANT NUMBER         := 1.0;
806   l_module_name        CONSTANT VARCHAR2(200)  := G_PKG_NAME || '.' || l_api_name;
807 
808   val_result           BOOLEAN;
809   l_bank_account_num   VARCHAR2(100);
810   l_bank_branch_num    VARCHAR2(30);
811   l_bank_num           VARCHAR2(30);
812 
813 
814   BEGIN
815 
816     print_debuginfo('ENTER ' || l_module_name);
817     x_valid := FALSE;
818 
819     l_bank_account_num := p_ext_bank_acct_rec.bank_account_num;
820 
821     -- Validate Bank Account Information
822     CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_IS (
823        Xi_ACCOUNT_NUMBER   => p_ext_bank_acct_rec.bank_account_num,
824        Xo_VALUE_OUT        => l_bank_account_num);
825 
826     p_ext_bank_acct_rec.bank_account_num :=
827           NVL(l_bank_account_num,p_ext_bank_acct_rec.bank_account_num);
828 
829     IF (foreign_payment_flag) THEN
830 
831       l_bank_branch_num := p_ext_bank_branch_rec.branch_name;
832 
833       /*
834       -- Validate Bank Branch
835       CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_IS(
836          Xi_BRANCH_NUMBER  => p_ext_bank_branch_rec.branch_number,
837 		 Xi_BANK_ID        => p_ext_bank_rec.bank_id,
838          Xo_VALUE_OUT      => l_bank_branch_num);
839       */
840 
841       -- Validate Bank Branch
842             print_debuginfo('Calling bank branch validation CE API');
843       CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_BANK(
844            Xi_COUNTRY	  => 'IS',
845            Xi_BRANCH_NUM  => p_ext_bank_branch_rec.branch_number,
846            Xi_BANK_NUM	  => p_ext_bank_rec.bank_number,
847            Xo_VALUE_OUT   => l_bank_branch_num);
848 
849        p_ext_bank_branch_rec.branch_number :=
850          NVL(l_bank_branch_num, p_ext_bank_branch_rec.branch_number);
851 
852     END IF;
853 
854     -- Validate Check Digits
855     CE_VALIDATE_BANKINFO.CE_VALIDATE_CD_IS(
856          Xi_CD                =>  p_ext_bank_acct_rec.check_digits,
857          Xi_X_ACCOUNT_NUMBER  =>  translate(p_ext_bank_acct_rec.bank_account_num,
858                                             'ABCDEFGHIJKLMNOPQRSTUVWXYZ ',
859                                             '123456789123456789234567890'));
860 
861     x_valid := TRUE;
862 
863     print_debuginfo('RETURN ' || l_module_name);
864 
865   END iby_validate_account_is;
866 
867   --  iby_validate_account_it
868   --
869   --   API name        : iby_validate_account_it
870   --   Type            : Public
871   --   Pre-reqs        : None
872   --   Function        : Italy Validations
873   --   Current version : 1.0
874   --   Previous version: 1.0
875   --   Initial version : 1.0
876   PROCEDURE iby_validate_account_it(
877     p_ext_bank_rec            IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBank_rec_type,
878     p_ext_bank_branch_rec     IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankBranch_rec_type,
879     p_ext_bank_acct_rec       IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankAcct_rec_type,
880     foreign_payment_flag      IN BOOLEAN,
881     x_valid                   IN OUT NOCOPY BOOLEAN
882     )
883   IS
884   l_api_name           CONSTANT VARCHAR2(30)   := 'iby_validate_account_it';
885   l_api_version        CONSTANT NUMBER         := 1.0;
886   l_module_name        CONSTANT VARCHAR2(200)  := G_PKG_NAME || '.' || l_api_name;
887 
888   val_result           BOOLEAN;
889   l_bank_account_num   VARCHAR2(100);
890   l_bank_branch_num    VARCHAR2(30);
891   l_bank_num           VARCHAR2(30);
892 
893 
894   BEGIN
895 
896     print_debuginfo('ENTER ' || l_module_name);
897     x_valid := FALSE;
898 
899     l_bank_account_num := p_ext_bank_acct_rec.bank_account_num;
900 
901     -- Validate Bank Account Information
902     CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_IT (
903        Xi_ACCOUNT_NUMBER   => p_ext_bank_acct_rec.bank_account_num,
904        Xo_VALUE_OUT        => l_bank_account_num);
905 
906     p_ext_bank_acct_rec.bank_account_num :=
907           NVL(l_bank_account_num,p_ext_bank_acct_rec.bank_account_num);
908 
909     IF (foreign_payment_flag) THEN
910 
911       -- Validate Bank Branch
912       CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_IT(
913          Xi_BRANCH_NUMBER    => p_ext_bank_branch_rec.branch_number,
914          Xi_PASS_MAND_CHECK  => 'P');
915 
916     END IF;
917 
918     -- Validate Check Digits
919     CE_VALIDATE_BANKINFO.CE_VALIDATE_CD_IT(
920          Xi_CD                =>  p_ext_bank_acct_rec.check_digits,
921          Xi_PASS_MAND_CHECK   =>  'P',
922          Xi_X_BANK_NUMBER     =>  p_ext_bank_rec.bank_number,
923          Xi_X_BRANCH_NUMBER   =>  p_ext_bank_branch_rec.branch_number,
924          Xi_X_ACCOUNT_NUMBER  =>  p_ext_bank_acct_rec.bank_account_num);
925 
926     x_valid := TRUE;
927 
928     print_debuginfo('RETURN ' || l_module_name);
929 
930   END iby_validate_account_it;
931 
932 
933   --  iby_validate_account_jp
934   --
935   --   API name        : iby_validate_account_jp
936   --   Type            : Public
937   --   Pre-reqs        : None
938   --   Function        : Japan Validations
939   --   Current version : 1.0
940   --   Previous version: 1.0
941   --   Initial version : 1.0
942   PROCEDURE iby_validate_account_jp(
943     p_ext_bank_rec            IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBank_rec_type,
944     p_ext_bank_branch_rec     IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankBranch_rec_type,
945     p_ext_bank_acct_rec       IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankAcct_rec_type,
946     foreign_payment_flag      IN BOOLEAN,
947     x_valid                   IN OUT NOCOPY BOOLEAN
948     )
949   IS
950   l_api_name           CONSTANT VARCHAR2(30)   := 'iby_validate_account_jp';
951   l_api_version        CONSTANT NUMBER         := 1.0;
952   l_module_name        CONSTANT VARCHAR2(200)  := G_PKG_NAME || '.' || l_api_name;
953 
954   val_result           BOOLEAN;
955   l_bank_account_num   VARCHAR2(100);
956   l_bank_branch_num    VARCHAR2(30);
957   l_bank_num           VARCHAR2(30);
958 
959   BEGIN
960 
961      print_debuginfo('ENTER ' || l_module_name);
962     x_valid := FALSE;
963 
964     -- Validate Bank Account Information
965     CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_JP(
966        Xi_ACCOUNT_NUMBER   => p_ext_bank_acct_rec.bank_account_num,
967        Xi_ACCOUNT_TYPE     => p_ext_bank_acct_rec.acct_type);
968 
969 
970     IF (foreign_payment_flag) THEN
971 
972       -- Validate Bank Bank
973       CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_JP(
977 
974          Xi_BANK_NUMBER    => p_ext_bank_rec.bank_number,
975          Xi_BANK_NAME_ALT  => p_ext_bank_rec.bank_alt_name,
976          Xi_PASS_MAND_CHECK  => 'P');
978       -- Validate Bank Branch
979       CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_JP(
980          Xi_BRANCH_NUMBER    => p_ext_bank_branch_rec.branch_number,
981          Xi_BRANCH_NAME_ALT  => p_ext_bank_branch_rec.alternate_branch_name,
982          Xi_PASS_MAND_CHECK  => 'P');
983 
984 
985     END IF;
986 
987     x_valid := TRUE;
988 
989     print_debuginfo('RETURN ' || l_module_name);
990 
991   END iby_validate_account_jp;
992 
993 
994   --  iby_validate_account_lu
995   --
996   --   API name        : iby_validate_account_lu
997   --   Type            : Public
998   --   Pre-reqs        : None
999   --   Function        : Luzembourg Validations
1000   --   Current version : 1.0
1001   --   Previous version: 1.0
1002   --   Initial version : 1.0
1003   PROCEDURE iby_validate_account_lu(
1004     p_ext_bank_rec            IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBank_rec_type,
1005     p_ext_bank_branch_rec     IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankBranch_rec_type,
1006     p_ext_bank_acct_rec       IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankAcct_rec_type,
1007     foreign_payment_flag      IN BOOLEAN,
1008     x_valid                   IN OUT NOCOPY BOOLEAN
1009     )
1010   IS
1011   l_api_name           CONSTANT VARCHAR2(30)   := 'iby_validate_account_lu';
1012   l_api_version        CONSTANT NUMBER         := 1.0;
1013   l_module_name        CONSTANT VARCHAR2(200)  := G_PKG_NAME || '.' || l_api_name;
1014 
1015   val_result           BOOLEAN;
1016   l_bank_account_num   VARCHAR2(100);
1017   l_bank_branch_num    VARCHAR2(30);
1018   l_bank_num           VARCHAR2(30);
1019 
1020   BEGIN
1021 
1022     print_debuginfo('ENTER ' || l_module_name);
1023     x_valid := FALSE;
1024 
1025     -- Validate Bank Account Information
1026     CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_LU (
1027        Xi_ACCOUNT_NUMBER   => p_ext_bank_acct_rec.bank_account_num);
1028 
1029     IF (foreign_payment_flag) THEN
1030 
1031       -- Validate Bank Bank
1032       CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_LU(
1033          Xi_BANK_NUMBER    => p_ext_bank_rec.bank_number);
1034 
1035       /*
1036       -- Validate Bank Branch
1037       CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_LU(
1038          Xi_BRANCH_NUMBER    => p_ext_bank_branch_rec.branch_number,
1039          Xi_BANK_ID          => p_ext_bank_rec.bank_id);
1040       */
1041 
1042       -- Validate Bank Branch
1043             print_debuginfo('Calling bank branch validation CE API');
1044       CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_BANK(
1045            Xi_COUNTRY	  => 'LU',
1046            Xi_BRANCH_NUM  => p_ext_bank_branch_rec.branch_number,
1047            Xi_BANK_NUM	  => p_ext_bank_rec.bank_number,
1048            Xo_VALUE_OUT   => l_bank_branch_num);
1049 
1050     END IF;
1051 
1052     -- Validate Check Digits
1053     CE_VALIDATE_BANKINFO.CE_VALIDATE_CD_LU(
1054          Xi_CD                =>  p_ext_bank_acct_rec.check_digits,
1055          Xi_X_BANK_NUMBER     =>  p_ext_bank_rec.bank_number,
1056          Xi_X_BRANCH_NUMBER   =>  p_ext_bank_branch_rec.branch_number,
1057          Xi_X_ACCOUNT_NUMBER  =>  p_ext_bank_acct_rec.bank_account_num);
1058 
1059     x_valid := TRUE;
1060 
1061     print_debuginfo('RETURN ' || l_module_name);
1062 
1063   END iby_validate_account_lu;
1064 
1065 
1066   --  iby_validate_account_nl
1067   --
1068   --   API name        : iby_validate_account_nl
1069   --   Type            : Public
1070   --   Pre-reqs        : None
1071   --   Function        : Netherlands Validations
1072   --   Current version : 1.0
1073   --   Previous version: 1.0
1074   --   Initial version : 1.0
1075   PROCEDURE iby_validate_account_nl(
1076     p_ext_bank_rec            IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBank_rec_type,
1077     p_ext_bank_branch_rec     IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankBranch_rec_type,
1078     p_ext_bank_acct_rec       IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankAcct_rec_type,
1079     foreign_payment_flag      IN BOOLEAN,
1080     x_valid                   IN OUT NOCOPY BOOLEAN
1081     )
1082   IS
1083   l_api_name           CONSTANT VARCHAR2(30)   := 'iby_validate_account_nl';
1084   l_api_version        CONSTANT NUMBER         := 1.0;
1085   l_module_name        CONSTANT VARCHAR2(200)  := G_PKG_NAME || '.' || l_api_name;
1086 
1087   val_result           BOOLEAN;
1088   l_bank_account_num   VARCHAR2(100);
1089   l_bank_branch_num    VARCHAR2(30);
1090   l_bank_num           VARCHAR2(30);
1091 
1092   BEGIN
1093 
1094     print_debuginfo('ENTER ' || l_module_name);
1095 
1096     -- Validate Bank Account Information
1097     CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_NL (
1098        Xi_ACCOUNT_NUMBER   => p_ext_bank_acct_rec.bank_account_num,
1099        Xi_PASS_MAND_CHECK  => 'P');
1100 
1101     x_valid := TRUE;
1102 
1103     print_debuginfo('RETURN ' || l_module_name);
1104   END iby_validate_account_nl;
1105 
1106 
1107   --  iby_validate_account_nz
1108   --
1109   --   API name        : iby_validate_account_nz
1110   --   Type            : Public
1111   --   Pre-reqs        : None
1112   --   Function        : New Zealand Validations
1116   PROCEDURE iby_validate_account_nz(
1113   --   Current version : 1.0
1114   --   Previous version: 1.0
1115   --   Initial version : 1.0
1117     p_ext_bank_rec            IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBank_rec_type,
1118     p_ext_bank_branch_rec     IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankBranch_rec_type,
1119     p_ext_bank_acct_rec       IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankAcct_rec_type,
1120     foreign_payment_flag      IN BOOLEAN,
1121     x_valid                   IN OUT NOCOPY BOOLEAN
1122     )
1123   IS
1124   l_api_name           CONSTANT VARCHAR2(30)   := 'iby_validate_account_nz';
1125   l_api_version        CONSTANT NUMBER         := 1.0;
1126   l_module_name        CONSTANT VARCHAR2(200)  := G_PKG_NAME || '.' || l_api_name;
1127 
1128   val_result           BOOLEAN;
1129   l_bank_account_num   VARCHAR2(100);
1130   l_bank_branch_num    VARCHAR2(30);
1131   l_bank_num           VARCHAR2(30);
1132 
1133   BEGIN
1134 
1135     print_debuginfo('ENTER ' || l_module_name);
1136     x_valid := FALSE;
1137 
1138     -- Validate Bank Account Information
1139     CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_NZ (
1140        Xi_ACCOUNT_NUMBER   => p_ext_bank_acct_rec.bank_account_num,
1141        Xi_ACCOUNT_SUFFIX  => p_ext_bank_acct_rec.acct_suffix);
1142 
1143     IF (foreign_payment_flag) THEN
1144 
1145       -- Validate Bank
1146       CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_NZ(
1147          Xi_BANK_NUMBER    => p_ext_bank_rec.bank_number,
1148          Xi_PASS_MAND_CHECK  => 'P');
1149 
1150 
1151       -- Validate Bank Branch
1152       CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_NZ(
1153          Xi_BRANCH_NUMBER    => p_ext_bank_branch_rec.branch_number,
1154          Xi_PASS_MAND_CHECK  => 'P');
1155 
1156     END IF;
1157 
1158     x_valid := TRUE;
1159 
1160     print_debuginfo('RETURN ' || l_module_name);
1161 
1162   END iby_validate_account_nz;
1163 
1164 
1165   --  iby_validate_account_no
1166   --
1167   --   API name        : iby_validate_account_no
1168   --   Type            : Public
1169   --   Pre-reqs        : None
1170   --   Function        : Norway Validations
1171   --   Current version : 1.0
1172   --   Previous version: 1.0
1173   --   Initial version : 1.0
1174   PROCEDURE iby_validate_account_no(
1175     p_ext_bank_rec            IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBank_rec_type,
1176     p_ext_bank_branch_rec     IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankBranch_rec_type,
1177     p_ext_bank_acct_rec       IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankAcct_rec_type,
1178     foreign_payment_flag      IN BOOLEAN,
1179     x_valid                   IN OUT NOCOPY BOOLEAN
1180     )
1181   IS
1182   l_api_name           CONSTANT VARCHAR2(30)   := 'iby_validate_account_no';
1183   l_api_version        CONSTANT NUMBER         := 1.0;
1184   l_module_name        CONSTANT VARCHAR2(200)  := G_PKG_NAME || '.' || l_api_name;
1185 
1186   val_result           BOOLEAN;
1187   l_bank_account_num   VARCHAR2(100);
1188   l_bank_branch_num    VARCHAR2(30);
1189   l_bank_num           VARCHAR2(30);
1190 
1191   BEGIN
1192 
1193     print_debuginfo('ENTER ' || l_module_name);
1194     x_valid := FALSE;
1195 
1196     -- Validate Bank Account Information
1197     CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_NO (
1198        Xi_ACCOUNT_NUMBER   => p_ext_bank_acct_rec.bank_account_num,
1199        Xi_PASS_MAND_CHECK  => 'P');
1200 
1201     x_valid := TRUE;
1202 
1203     print_debuginfo('RETURN ' || l_module_name);
1204 
1205   END iby_validate_account_no;
1206 
1207 
1208   --  iby_validate_account_pl
1209   --
1210   --   API name        : iby_validate_account_pl
1211   --   Type            : Public
1212   --   Pre-reqs        : None
1213   --   Function        : Poland Validations
1214   --   Current version : 1.0
1215   --   Previous version: 1.0
1216   --   Initial version : 1.0
1217   PROCEDURE iby_validate_account_pl(
1218     p_ext_bank_rec            IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBank_rec_type,
1219     p_ext_bank_branch_rec     IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankBranch_rec_type,
1220     p_ext_bank_acct_rec       IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankAcct_rec_type,
1221     foreign_payment_flag      IN BOOLEAN,
1222     x_valid                   IN OUT NOCOPY BOOLEAN
1223     )
1224   IS
1225   l_api_name           CONSTANT VARCHAR2(30)   := 'iby_validate_account_pl';
1226   l_api_version        CONSTANT NUMBER         := 1.0;
1227   l_module_name        CONSTANT VARCHAR2(200)  := G_PKG_NAME || '.' || l_api_name;
1228 
1229   val_result           BOOLEAN;
1230   l_bank_account_num   VARCHAR2(100);
1231   l_bank_branch_num    VARCHAR2(30);
1232   l_bank_num           VARCHAR2(30);
1233 
1234   BEGIN
1235 
1236     print_debuginfo('ENTER ' || l_module_name);
1237     x_valid := FALSE;
1238 
1239     -- Validate Bank Account Information
1240     CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_PL (
1241        Xi_ACCOUNT_NUMBER   => p_ext_bank_acct_rec.bank_account_num);
1242 
1243 
1244     IF (foreign_payment_flag) THEN
1245 
1246       -- Validate Bank
1247       CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_PL(
1248          Xi_BANK_NUMBER    => p_ext_bank_rec.bank_number);
1249 
1250       /*
1251       -- Validate Bank Branch
1252       CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_PL(
1256 
1253          Xi_BRANCH_NUMBER    => p_ext_bank_branch_rec.branch_number,
1254          Xi_BANK_ID          => p_ext_bank_rec.bank_id);
1255       */
1257       -- Validate Bank Branch
1258             print_debuginfo('Calling bank branch validation CE API');
1259       CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_BANK(
1260            Xi_COUNTRY	  => 'PL',
1261            Xi_BRANCH_NUM  => p_ext_bank_branch_rec.branch_number,
1262            Xi_BANK_NUM	  => p_ext_bank_rec.bank_number,
1263            Xo_VALUE_OUT   => l_bank_branch_num);
1264     END IF;
1265 
1266     x_valid := TRUE;
1267 
1268     print_debuginfo('RETURN ' || l_module_name);
1269 
1270   END iby_validate_account_pl;
1271 
1272 
1273   --  iby_validate_account_pt
1274   --
1275   --   API name        : iby_validate_account_pt
1276   --   Type            : Public
1277   --   Pre-reqs        : None
1278   --   Function        : Portugal Validations
1279   --   Current version : 1.0
1280   --   Previous version: 1.0
1281   --   Initial version : 1.0
1282   PROCEDURE iby_validate_account_pt(
1283     p_ext_bank_rec            IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBank_rec_type,
1284     p_ext_bank_branch_rec     IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankBranch_rec_type,
1285     p_ext_bank_acct_rec       IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankAcct_rec_type,
1286     foreign_payment_flag      IN BOOLEAN,
1287     x_valid                   IN OUT NOCOPY BOOLEAN
1288     )
1289   IS
1290   l_api_name           CONSTANT VARCHAR2(30)   := 'iby_validate_account_pt';
1291   l_api_version        CONSTANT NUMBER         := 1.0;
1292   l_module_name        CONSTANT VARCHAR2(200)  := G_PKG_NAME || '.' || l_api_name;
1293 
1294   val_result           BOOLEAN;
1295   l_bank_account_num   VARCHAR2(100);
1296   l_bank_branch_num    VARCHAR2(30);
1297   l_bank_num           VARCHAR2(30);
1298 
1299   BEGIN
1300 
1301     print_debuginfo('ENTER ' || l_module_name);
1302     x_valid := FALSE;
1303 
1304     l_bank_account_num := p_ext_bank_acct_rec.bank_account_num;
1305 
1306     -- Validate Bank Account Information
1307     CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_PT (
1308        Xi_ACCOUNT_NUMBER   => p_ext_bank_acct_rec.bank_account_num,
1309        Xi_PASS_MAND_CHECK  => 'P',
1310        Xo_VALUE_OUT        => l_bank_account_num);
1311 
1312     p_ext_bank_acct_rec.bank_account_num :=
1313           NVL(l_bank_account_num,p_ext_bank_acct_rec.bank_account_num);
1314 
1315     IF (foreign_payment_flag) THEN
1316 
1317       -- Validate Bank
1318       CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_PT(
1319          Xi_BANK_NUMBER      => p_ext_bank_rec.bank_number,
1320          Xi_PASS_MAND_CHECK  => 'P');
1321 
1322       -- Validate Bank Branch
1323       CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_PT(
1324          Xi_BRANCH_NUMBER    => p_ext_bank_branch_rec.branch_number,
1325          Xi_PASS_MAND_CHECK  => 'P');
1326 
1327     END IF;
1328 
1329     -- Validate Check Digits
1330     CE_VALIDATE_BANKINFO.CE_VALIDATE_CD_PT(
1331          Xi_CD                =>  p_ext_bank_acct_rec.check_digits,
1332          Xi_PASS_MAND_CHECK   =>  'P',
1333          Xi_X_BANK_NUMBER     =>  p_ext_bank_rec.bank_number,
1334          Xi_X_BRANCH_NUMBER   =>  p_ext_bank_branch_rec.branch_number,
1335          Xi_X_ACCOUNT_NUMBER  =>  translate(p_ext_bank_acct_rec.bank_account_num,
1336                                             'ABCDEFGHIJKLMNOPQRSTUVWXYZ ',
1337                                             '123456789123456789234567890'));
1338 
1339     x_valid := TRUE;
1340 
1341     print_debuginfo('RETURN ' || l_module_name);
1342   END iby_validate_account_pt;
1343 
1344 
1345   --  iby_validate_account_sg
1346   --
1347   --   API name        : iby_validate_account_sg
1348   --   Type            : Public
1349   --   Pre-reqs        : None
1350   --   Function        : Italy Validations
1351   --   Current version : 1.0
1352   --   Previous version: 1.0
1353   --   Initial version : 1.0
1354   PROCEDURE iby_validate_account_sg(
1355     p_ext_bank_rec            IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBank_rec_type,
1356     p_ext_bank_branch_rec     IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankBranch_rec_type,
1357     p_ext_bank_acct_rec       IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankAcct_rec_type,
1358     foreign_payment_flag      IN BOOLEAN,
1359     x_valid                   IN OUT NOCOPY BOOLEAN
1360     )
1361   IS
1362   l_api_name           CONSTANT VARCHAR2(30)   := 'iby_validate_account_sg';
1363   l_api_version        CONSTANT NUMBER         := 1.0;
1364   l_module_name        CONSTANT VARCHAR2(200)  := G_PKG_NAME || '.' || l_api_name;
1365 
1366   val_result           BOOLEAN;
1367   l_bank_account_num   VARCHAR2(100);
1368   l_bank_branch_num    VARCHAR2(30);
1369   l_bank_num           VARCHAR2(30);
1370 
1371   BEGIN
1372 
1373     print_debuginfo('ENTER ' || l_module_name);
1374 
1375     x_valid := TRUE;
1376 
1377     print_debuginfo('RETURN ' || l_module_name);
1378 
1379   END iby_validate_account_sg;
1380 
1381 
1382 
1383   --  iby_validate_account_es
1384   --
1385   --   API name        : iby_validate_account_es
1386   --   Type            : Public
1387   --   Pre-reqs        : None
1388   --   Function        : Italy Validations
1389   --   Current version : 1.0
1390   --   Previous version: 1.0
1394     p_ext_bank_branch_rec     IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankBranch_rec_type,
1391   --   Initial version : 1.0
1392   PROCEDURE iby_validate_account_es(
1393     p_ext_bank_rec            IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBank_rec_type,
1395     p_ext_bank_acct_rec       IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankAcct_rec_type,
1396     foreign_payment_flag      IN BOOLEAN,
1397     x_valid                   IN OUT NOCOPY BOOLEAN
1398     )
1399   IS
1400   l_api_name           CONSTANT VARCHAR2(30)   := 'iby_validate_account_es';
1401   l_api_version        CONSTANT NUMBER         := 1.0;
1402   l_module_name        CONSTANT VARCHAR2(200)  := G_PKG_NAME || '.' || l_api_name;
1403 
1404   val_result           BOOLEAN;
1405   l_bank_account_num   VARCHAR2(100);
1406   l_bank_branch_num    VARCHAR2(30);
1407   l_bank_num           VARCHAR2(30);
1408 
1409 
1410   BEGIN
1411 
1412     print_debuginfo('ENTER ' || l_module_name);
1413     x_valid := FALSE;
1414 
1415     l_bank_account_num := p_ext_bank_acct_rec.bank_account_num;
1416 
1417     -- Validate Bank Account Information
1418     CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_ES (
1419        Xi_ACCOUNT_NUMBER   => p_ext_bank_acct_rec.bank_account_num,
1420        Xi_PASS_MAND_CHECK  => 'P',
1421        Xo_VALUE_OUT        => l_bank_account_num);
1422 
1423     p_ext_bank_acct_rec.bank_account_num :=
1424           NVL(l_bank_account_num,p_ext_bank_acct_rec.bank_account_num);
1425 
1426     IF (foreign_payment_flag) THEN
1427 
1428       l_bank_num := p_ext_bank_rec.bank_number;
1429 
1430       -- Validate Bank
1431       CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_ES(
1432          Xi_BANK_NUMBER      => p_ext_bank_rec.bank_number,
1433          Xi_PASS_MAND_CHECK  => 'P',
1434          Xo_VALUE_OUT        => l_bank_num);
1435 
1436       p_ext_bank_rec.bank_number :=
1437          NVL(l_bank_num,p_ext_bank_rec.bank_number);
1438 
1439       l_bank_branch_num := p_ext_bank_branch_rec.branch_number;
1440 
1441       -- Validate Bank Branch
1442       CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_ES(
1443          Xi_BRANCH_NUMBER    => p_ext_bank_branch_rec.branch_number,
1444          Xi_PASS_MAND_CHECK  => 'P',
1445          Xo_VALUE_OUT        => l_bank_branch_num);
1446 
1447       p_ext_bank_branch_rec.branch_number :=
1448          NVL(l_bank_branch_num, p_ext_bank_branch_rec.branch_number);
1449 
1450     END IF;
1451 
1452     -- Validate Check Digits
1453     CE_VALIDATE_BANKINFO.CE_VALIDATE_CD_ES(
1454          Xi_CD                =>  p_ext_bank_acct_rec.check_digits,
1455          Xi_PASS_MAND_CHECK   =>  'P',
1456          Xi_X_BANK_NUMBER     =>  p_ext_bank_rec.bank_number,
1457          Xi_X_BRANCH_NUMBER   =>  p_ext_bank_branch_rec.branch_number,
1458          Xi_X_ACCOUNT_NUMBER  =>  translate(p_ext_bank_acct_rec.bank_account_num,
1459                                             'ABCDEFGHIJKLMNOPQRSTUVWXYZ ',
1460                                             '123456789123456789234567890'));
1461 
1462   END iby_validate_account_es;
1463 
1464 
1465   --  iby_validate_account_se
1466   --
1467   --   API name        : iby_validate_account_se
1468   --   Type            : Public
1469   --   Pre-reqs        : None
1470   --   Function        : Italy Validations
1471   --   Current version : 1.0
1472   --   Previous version: 1.0
1473   --   Initial version : 1.0
1474   PROCEDURE iby_validate_account_se(
1475     p_ext_bank_rec            IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBank_rec_type,
1476     p_ext_bank_branch_rec     IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankBranch_rec_type,
1477     p_ext_bank_acct_rec       IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankAcct_rec_type,
1478     foreign_payment_flag      IN BOOLEAN,
1479     x_valid                   IN OUT NOCOPY BOOLEAN
1480     )
1481   IS
1482   l_api_name           CONSTANT VARCHAR2(30)   := 'iby_validate_account_se';
1483   l_api_version        CONSTANT NUMBER         := 1.0;
1484   l_module_name        CONSTANT VARCHAR2(200)  := G_PKG_NAME || '.' || l_api_name;
1485 
1486   val_result           BOOLEAN;
1487   l_bank_account_num   VARCHAR2(100);
1488   l_bank_branch_num    VARCHAR2(30);
1489   l_bank_num           VARCHAR2(30);
1490 
1491   BEGIN
1492 
1493     print_debuginfo('ENTER ' || l_module_name);
1494     x_valid := FALSE;
1495 
1496     -- Validate Bank Account Information
1497     CE_VALIDATE_BANKINFO.CE_VALIDATE_ACCOUNT_SE (
1498        Xi_ACCOUNT_NUMBER   => p_ext_bank_acct_rec.bank_account_num);
1499 
1500     IF (foreign_payment_flag) THEN
1501 
1502       -- Validate Bank
1503       CE_VALIDATE_BANKINFO.CE_VALIDATE_BANK_SE(
1504          Xi_BANK_NUMBER    => p_ext_bank_rec.bank_number);
1505 
1506        /*
1507        -- Validate Bank Branch
1508       CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_SE(
1509          Xi_BRANCH_NUMBER  => p_ext_bank_branch_rec.branch_number,
1510          Xi_BANK_ID        => p_ext_bank_rec.bank_id);
1511       */
1512 
1513       -- Validate Bank Branch
1514             print_debuginfo('Calling bank branch validation CE API');
1515       CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_BANK(
1516            Xi_COUNTRY	  => 'SE',
1517            Xi_BRANCH_NUM  => p_ext_bank_branch_rec.branch_number,
1518            Xi_BANK_NUM	  => p_ext_bank_rec.bank_number,
1519            Xo_VALUE_OUT   => l_bank_branch_num);
1520     END IF;
1521 
1522     x_valid := TRUE;
1523 
1524     -- Validate Check Digit
1525     CE_VALIDATE_BANKINFO.CE_VALIDATE_CD_SE(
1526          Xi_CD               => p_ext_bank_acct_rec.check_digits,
1527          Xi_X_ACCOUNT_NUMBER => p_ext_bank_acct_rec.bank_account_num);
1528 
1529     print_debuginfo('RETURN ' || l_module_name);
1530 
1531   END iby_validate_account_se;
1532 
1533 
1534   --  iby_validate_account_us
1535   --
1536   --   API name        : iby_validate_account_us
1537   --   Type            : Public
1538   --   Pre-reqs        : None
1539   --   Function        : Italy Validations
1540   --   Current version : 1.0
1541   --   Previous version: 1.0
1542   --   Initial version : 1.0
1543   PROCEDURE iby_validate_account_us(
1544     p_ext_bank_rec            IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBank_rec_type,
1545     p_ext_bank_branch_rec     IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankBranch_rec_type,
1546     p_ext_bank_acct_rec       IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankAcct_rec_type,
1547     foreign_payment_flag      IN BOOLEAN,
1548     x_valid                   IN OUT NOCOPY BOOLEAN
1549     )
1550   IS
1551   l_api_name           CONSTANT VARCHAR2(30)   := 'iby_validate_account_us';
1552   l_api_version        CONSTANT NUMBER         := 1.0;
1553   l_module_name        CONSTANT VARCHAR2(200)  := G_PKG_NAME || '.' || l_api_name;
1554 
1555   val_result           BOOLEAN;
1556   l_bank_account_num   VARCHAR2(100);
1557   l_bank_branch_num    VARCHAR2(30);
1558   l_bank_num           VARCHAR2(30);
1559 
1560   BEGIN
1561 
1562     print_debuginfo('ENTER ' || l_module_name);
1563     x_valid := FALSE;
1564 
1565     IF (foreign_payment_flag
1566        AND p_ext_bank_branch_rec.branch_number IS NOT NULL  -- Bug 6043905
1567        ) THEN
1568 
1569       l_bank_num := p_ext_bank_rec.bank_number;
1570 
1571       l_bank_branch_num := p_ext_bank_branch_rec.branch_name;
1572 
1573       -- Validate Bank Branch
1574       CE_VALIDATE_BANKINFO.CE_VALIDATE_BRANCH_US(
1575          Xi_BRANCH_NUMBER    => p_ext_bank_branch_rec.branch_number,
1576          Xi_PASS_MAND_CHECK  => 'P',
1577          Xo_VALUE_OUT        => l_bank_branch_num);
1578 
1579       p_ext_bank_branch_rec.branch_number :=
1580          NVL(l_bank_branch_num, p_ext_bank_branch_rec.branch_number);
1581 
1582     END IF;
1583 
1584     x_valid := TRUE;
1585 
1586     print_debuginfo('RETURN ' || l_module_name);
1587 
1588   END iby_validate_account_us;
1589 
1590 
1591   --  iby_validate_account
1592   --
1593   --   API name        : iby_validate_account
1594   --   Type            : Public
1595   --   Pre-reqs        : None
1596   --   Function        : validates the external bank account
1597   --   Current version : 1.0
1598   --   Previous version: 1.0
1599   --   Initial version : 1.0
1600   --
1601 
1602   PROCEDURE iby_validate_account(
1603     p_api_version             IN NUMBER,
1604     p_init_msg_list           IN VARCHAR2 default FND_API.G_FALSE,
1605     p_ext_bank_rec            IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBank_rec_type,
1606     p_ext_bank_branch_rec     IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankBranch_rec_type,
1607     p_ext_bank_acct_rec       IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankAcct_rec_type,
1608     x_return_status           OUT NOCOPY  VARCHAR2,
1609     x_msg_count               OUT NOCOPY  NUMBER,
1610     x_msg_data                OUT NOCOPY  VARCHAR2,
1611     x_response                OUT NOCOPY IBY_FNDCPT_COMMON_PUB.Result_rec_type
1612     )
1613     IS
1614 
1615     BEGIN
1616 
1617     iby_validate_account(
1618        p_api_version            => p_api_version,
1619        p_init_msg_list          => p_init_msg_list,
1620        p_create_flag            => FND_API.G_TRUE,
1621        p_ext_bank_rec           => p_ext_bank_rec,
1622        p_ext_bank_branch_rec    => p_ext_bank_branch_rec,
1623        p_ext_bank_acct_rec      => p_ext_bank_acct_rec,
1624        x_return_status          => x_return_status,
1625        x_msg_count              => x_msg_count,
1626        x_msg_data               => x_msg_data,
1627        x_response               => x_response
1628        );
1629 
1630 
1631     END iby_validate_account;
1632 
1633 
1634   --  iby_validate_account
1635   --
1636   --   API name        : iby_validate_account
1637   --   Type            : Public
1638   --   Pre-reqs        : None
1639   --   Function        : validates the external bank account, overloaded
1640   --                     using the p_create_flag parameter
1641   --   Current version : 1.0
1642   --   Previous version: 1.0
1643   --   Initial version : 1.0
1644   --
1645 
1646   PROCEDURE iby_validate_account(
1647     p_api_version             IN NUMBER,
1648     p_init_msg_list           IN VARCHAR2 default FND_API.G_FALSE,
1649     p_create_flag             IN VARCHAR2 default FND_API.G_TRUE,
1650     p_ext_bank_rec            IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBank_rec_type,
1651     p_ext_bank_branch_rec     IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankBranch_rec_type,
1652     p_ext_bank_acct_rec       IN OUT NOCOPY IBY_EXT_BANKACCT_PUB.ExtBankAcct_rec_type,
1653     x_return_status           OUT NOCOPY  VARCHAR2,
1654     x_msg_count               OUT NOCOPY  NUMBER,
1655     x_msg_data                OUT NOCOPY  VARCHAR2,
1656     x_response                OUT NOCOPY IBY_FNDCPT_COMMON_PUB.Result_rec_type
1660   l_branch_rec         	hz_bank_pub.bank_rec_type;
1657     )
1658   IS
1659   l_bank_rec  	       hz_bank_pub.bank_rec_type;
1661   l_org_rec   	 hz_party_v2pub.organization_rec_type;
1662   l_country			VARCHAR2(60);
1663   l_party_rec 	 hz_party_v2pub.party_rec_type;
1664   l_api_name           CONSTANT VARCHAR2(30)   := 'iby_validate_account';
1665   l_api_version        CONSTANT NUMBER         := 1.0;
1666   l_module_name        CONSTANT VARCHAR2(200)  := G_PKG_NAME || '.' || l_api_name;
1667 
1668   X_PASS_MAND_CHECK  VARCHAR2(1) := 'P';
1669   COUNTRY            VARCHAR2(2);
1670   x_valid            BOOLEAN := FALSE;
1671   l_foreign_pmt_flag BOOLEAN := FALSE;
1672   l_count            NUMBER;
1673   l_return_status    VARCHAR2(35);
1674   l_iban             VARCHAR2(50);
1675  l_bank_number	 VARCHAR2(30);
1676  l_branch_number		VARCHAR2(30);
1677  l_bank_name			VARCHAR2(360);
1678   -- get bank info. cursor
1679   CURSOR c_bank IS
1680       SELECT hz_p.party_name, hz_org.bank_or_branch_number, hz_org.home_country
1681       FROM   hz_parties                 hz_p,
1682              hz_organization_profiles   hz_org
1683       WHERE  hz_p.party_id = hz_org.party_id
1684       AND    SYSDATE between TRUNC(hz_org.effective_start_date)
1685              and NVL(TRUNC(hz_org.effective_end_date), SYSDATE+1)
1686       AND    hz_p.party_id = p_ext_bank_acct_rec.bank_id;
1687 
1688   -- checks if account already exists
1689 CURSOR uniq_check (p_account_number VARCHAR2,
1690                      p_currency VARCHAR2,
1691                      p_bank_id NUMBER,
1692                      p_branch_id NUMBER,
1693                      p_country_code VARCHAR2,
1694                      p_bank_account_id NUMBER) IS
1695 
1696      SELECT count(1)
1697      FROM IBY_EXT_BANK_ACCOUNTS
1698      WHERE ((BANK_ACCOUNT_NUM = p_account_number) OR
1699              (BANK_ACCOUNT_NUM_HASH1=  iby_security_pkg.Get_Hash
1700                        (p_account_number,'F')
1701                        AND BANK_ACCOUNT_NUM_HASH2=iby_security_pkg.Get_Hash
1702                        (p_account_number,'T') ))
1703          AND ((p_currency IS NULL and CURRENCY_CODE is NULL)  OR (CURRENCY_CODE = p_currency))
1704         AND ((p_bank_id IS NULL AND BANK_ID is NULL) OR (BANK_ID = p_bank_id))
1705         AND ((p_branch_id IS NULL AND BRANCH_ID is NULL) OR (BRANCH_ID = p_branch_id))
1706        AND p_country_code=COUNTRY_CODE
1707      AND ((p_bank_account_id is NULL) OR p_bank_account_id<>EXT_BANK_ACCOUNT_ID);
1708 
1709 
1710   BEGIN
1711 
1712     print_debuginfo('ENTER ' || l_module_name);
1713 
1714     -- Standard call to check for call compatibility.
1715     IF NOT FND_API.Compatible_API_Call(l_api_version,
1716                                        p_api_version,
1717                                        l_api_name,
1718                                        G_PKG_NAME) THEN
1719       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1720     END IF;
1721 
1722     -- Initialize message list if p_init_msg_list is set to TRUE.
1723     IF FND_API.to_Boolean(p_init_msg_list) THEN
1724        FND_MSG_PUB.initialize;
1725     END IF;
1726 
1727     --  Initialize API return status to success
1728     x_return_status := FND_API.G_RET_STS_SUCCESS;
1729 
1730     -- Initialize message list if p_init_msg_list is set to TRUE.
1731     IF FND_API.to_Boolean(p_init_msg_list) THEN
1732         FND_MSG_PUB.initialize;
1733     END IF;
1734 
1735     -- Account Number is mandatory
1736     check_mandatory('Account Number', p_ext_bank_acct_rec.bank_account_num);
1737 
1738     IF (p_create_flag = FND_API.G_TRUE) THEN
1739 
1740        -- Account Name if specfied should be unique
1741        IF (p_ext_bank_acct_rec.bank_account_name <> NULL) THEN
1742          SELECT COUNT(EXT_BANK_ACCOUNT_ID)
1743            INTO l_count
1744            FROM IBY_EXT_BANK_ACCOUNTS_V
1745           WHERE BANK_ACCOUNT_NAME =p_ext_bank_acct_rec.bank_account_name;
1746 
1747           IF (l_count > 0) THEN
1748             fnd_message.set_name('IBY', 'IBY_UNIQ_ACCOUNT_NAME');
1749             fnd_msg_pub.add;
1750             print_debuginfo('Bank Account Name failed unique check');
1751             x_valid := FALSE;
1752          END IF;
1753        END IF;
1754 
1755        -- perform unique check for account
1756        OPEN uniq_check(p_ext_bank_acct_rec.bank_account_num,
1757                        p_ext_bank_acct_rec.currency,
1758                        p_ext_bank_acct_rec.bank_id,
1759                        p_ext_bank_acct_rec.branch_id,
1760                        p_ext_bank_acct_rec.country_code,
1761                        p_ext_bank_acct_rec.bank_account_id);
1762        FETCH uniq_check into l_count;
1763 
1764        IF (l_count > 0) THEN
1765           fnd_message.set_name('IBY', 'IBY_UNIQ_ACCOUNT');
1766           fnd_msg_pub.add;
1767           print_debuginfo('Bank Account Name failed unique check');
1768           x_valid := FALSE;
1769        END IF;
1770 
1771     END IF;
1772 
1773     /* Foreign Payment Flag decides whether bank and branch records
1774      * are optional or mandatory
1775      */
1776      IF ((p_ext_bank_acct_rec.foreign_payment_use_flag = 'Y')  AND
1777        (p_ext_bank_acct_rec.bank_id is NULL)) THEN
1778         l_foreign_pmt_flag := TRUE;
1779         -- Bank Name is mandatory
1780         check_mandatory('Bank Name',p_ext_bank_rec.bank_name);
1781 
1785        (p_ext_bank_acct_rec.branch_id is NULL)) THEN
1782            END IF;
1783 
1784    IF ((p_ext_bank_acct_rec.foreign_payment_use_flag = 'Y')  AND
1786         l_foreign_pmt_flag := TRUE;
1787          -- Bank Branch Name is mandatory
1788         check_mandatory('Branch Name',p_ext_bank_branch_rec.branch_name);
1789      END IF;
1790 
1791      /* if bank information provided, we need validate bank info.*/
1792     if((NOT p_ext_bank_rec.bank_name is NULL)  AND
1793        (p_ext_bank_acct_rec.bank_id is NULL)) then
1794 
1795 /* Bug 6043905: Bank number is not mandatory for all the countries */
1796 --         check_mandatory('Bank Number', p_ext_bank_rec.bank_number);
1797 
1798      -- call CE validate bank api to validate bank
1799      -- country specific validation API call here
1800     ce_validate_bankinfo.ce_validate_bank(p_ext_bank_rec.country_code,
1801 					  p_ext_bank_rec.bank_number,
1802 					  p_ext_bank_rec.bank_name,
1803 					  p_ext_bank_rec.bank_alt_name,
1804 					  p_ext_bank_rec.tax_payer_id,
1805 					  null,    -- bank_id
1806                                           FND_API.G_FALSE,  -- do not re-initialize msg stack
1807                                           x_msg_count,
1808 					  x_msg_data,
1809 					  l_bank_number,   -- reformated bank number
1810 					  x_return_status);
1811 
1812       print_debuginfo('After return from CE country specific validation: '|| x_return_status);
1813    -- raise an exception if country specific validations fail
1814     IF (x_return_status IS NULL OR
1815         x_return_status <> fnd_api.g_ret_sts_success) THEN
1816       RAISE fnd_api.g_exc_error;
1817     END IF;
1818 
1819      -- call HZ bank validation API to validate bank record
1820    l_party_rec.attribute_category := p_ext_bank_rec.attribute_category;
1821     l_party_rec.attribute1 := p_ext_bank_rec.attribute1;
1822     l_party_rec.attribute2 := p_ext_bank_rec.attribute2;
1823     l_party_rec.attribute3 := p_ext_bank_rec.attribute3;
1824     l_party_rec.attribute4 := p_ext_bank_rec.attribute4;
1825     l_party_rec.attribute5 := p_ext_bank_rec.attribute5;
1826     l_party_rec.attribute6 := p_ext_bank_rec.attribute6;
1827     l_party_rec.attribute7 := p_ext_bank_rec.attribute7;
1828     l_party_rec.attribute8 := p_ext_bank_rec.attribute8;
1829     l_party_rec.attribute9 := p_ext_bank_rec.attribute9;
1830     l_party_rec.attribute10 := p_ext_bank_rec.attribute10;
1831     l_party_rec.attribute11 := p_ext_bank_rec.attribute11;
1832     l_party_rec.attribute12 := p_ext_bank_rec.attribute12;
1833     l_party_rec.attribute13 := p_ext_bank_rec.attribute13;
1834     l_party_rec.attribute14 := p_ext_bank_rec.attribute14;
1835     l_party_rec.attribute15 := p_ext_bank_rec.attribute15;
1836     l_party_rec.attribute16 := p_ext_bank_rec.attribute16;
1837     l_party_rec.attribute17 := p_ext_bank_rec.attribute17;
1838     l_party_rec.attribute18 := p_ext_bank_rec.attribute18;
1839     l_party_rec.attribute19 := p_ext_bank_rec.attribute19;
1840     l_party_rec.attribute20 := p_ext_bank_rec.attribute20;
1841     l_party_rec.attribute21 := p_ext_bank_rec.attribute21;
1842     l_party_rec.attribute22 := p_ext_bank_rec.attribute22;
1843     l_party_rec.attribute23 := p_ext_bank_rec.attribute23;
1844     l_party_rec.attribute24 := p_ext_bank_rec.attribute24;
1845 
1846 
1847    l_org_rec.organization_name := p_ext_bank_rec.bank_name;
1848     l_org_rec.organization_name_phonetic := p_ext_bank_rec.bank_alt_name;
1849     l_org_rec.known_as := p_ext_bank_rec.bank_short_name;
1850     l_org_rec.mission_statement := p_ext_bank_rec.description;
1851     l_org_rec.jgzz_fiscal_code := p_ext_bank_rec.tax_payer_id;
1852     l_org_rec.tax_reference := p_ext_bank_rec.tax_registration_number;
1853     l_org_rec.created_by_module := 'CE';
1854     l_org_rec.party_rec := l_party_rec;
1855     l_org_rec.home_country := p_ext_bank_rec.country_code;
1856     l_bank_rec.bank_or_branch_number := p_ext_bank_rec.bank_number;
1857     l_bank_rec.country := p_ext_bank_rec.country_code;
1858     l_bank_rec.institution_type := 'BANK';
1859     l_bank_rec.organization_rec := l_org_rec;
1860 
1861      -- now call HZ validation api
1862     hz_bank_pub.validate_bank (p_init_msg_list,
1863                                l_bank_rec,
1864                                 'I',
1865                                  x_return_status,
1866                                  x_msg_count,
1867                                  x_msg_data);
1868  print_debuginfo('After return from HZ bank validation: '|| x_return_status);
1869     -- raise an exception if the validation routine is unsuccessful
1870     IF l_return_status <> fnd_api.g_ret_sts_success THEN
1871       RAISE fnd_api.g_exc_error;
1872     END IF;
1873     end if;
1874 
1875 /* Bug 6043905: The branch number is not mandatory for all countries.
1876     if((NOT p_ext_bank_branch_rec.branch_name is NULL)  AND
1877        (p_ext_bank_acct_rec.branch_id is NULL)) then
1878          check_mandatory('Branch Number', p_ext_bank_branch_rec.branch_number);
1879     end if;
1880 */
1881 
1882    /*
1883     * If bank id is not available, do not validate the bank branch.
1884     *
1885     * The bank is the primary entity, and the branch is the secondary entity.
1886     * The CE branch validation API expects the bank id as an input param.
1887     *
1888     * Without the bank id, this API will always return an error for the
1889     * branch validation. Therefore, it is logical to skip the branch
1890     * validation when the bank id is not available.
1891     *
1895       if((NOT p_ext_bank_branch_rec.branch_name is NULL)  AND
1892     * See bug 5117620 for a discussion on this subject.
1893     */
1894    -- if the bank is not new, and branch is new, we need validate the branch info.
1896        (p_ext_bank_acct_rec.branch_id is NULL)            AND
1897        (NOT p_ext_bank_acct_rec.bank_id is NULL)  ) then
1898 
1899         -- call CE bank branch validation api
1900 
1901 
1902     -- get bank information
1903      OPEN c_bank;
1904     FETCH c_bank INTO l_bank_name, l_bank_number, l_country;
1905     IF c_bank%NOTFOUND THEN
1906       fnd_message.set_name('CE', 'CE_API_NO_BANK');
1907       fnd_msg_pub.add;
1908       x_return_status := fnd_api.g_ret_sts_error;
1909       RAISE fnd_api.g_exc_error;
1910     END IF;
1911     CLOSE c_bank;
1912 
1913    -- country specific validation API call here
1914     ce_validate_bankinfo.ce_validate_branch(l_country,
1915                                             l_bank_number,
1916                                             p_ext_bank_branch_rec.branch_number,
1917                                             l_bank_name,
1918                                             p_ext_bank_branch_rec.branch_name,
1919                                              p_ext_bank_branch_rec.alternate_branch_name,
1920                                             p_ext_bank_acct_rec.bank_id,
1921                                             null,    -- branch_id
1922                                             FND_API.G_FALSE,  -- do not re-initialize msg stack
1923                                             x_msg_count,
1924                                             x_msg_data,
1925                                             l_branch_number,   -- reformatted branch number
1926                                             x_return_status);
1927 
1928     -- raise an exception if country specific validations fail
1929     IF (x_return_status IS NULL OR
1930         x_return_status <> fnd_api.g_ret_sts_success) THEN
1931       RAISE fnd_api.g_exc_error;
1932     END IF;
1933     -- check HZ validate branch API
1934     l_party_rec.attribute_category := p_ext_bank_branch_rec.attribute_category;
1935     l_party_rec.attribute1 := p_ext_bank_branch_rec.attribute1;
1936     l_party_rec.attribute2 := p_ext_bank_branch_rec.attribute2;
1937     l_party_rec.attribute3 := p_ext_bank_branch_rec.attribute3;
1938     l_party_rec.attribute4 := p_ext_bank_branch_rec.attribute4;
1939     l_party_rec.attribute5 := p_ext_bank_branch_rec.attribute5;
1940     l_party_rec.attribute6 := p_ext_bank_branch_rec.attribute6;
1941     l_party_rec.attribute7 := p_ext_bank_branch_rec.attribute7;
1942     l_party_rec.attribute8 := p_ext_bank_branch_rec.attribute8;
1943     l_party_rec.attribute9 := p_ext_bank_branch_rec.attribute9;
1944     l_party_rec.attribute10 := p_ext_bank_branch_rec.attribute10;
1945     l_party_rec.attribute11 := p_ext_bank_branch_rec.attribute11;
1946     l_party_rec.attribute12 := p_ext_bank_branch_rec.attribute12;
1947     l_party_rec.attribute13 := p_ext_bank_branch_rec.attribute13;
1948     l_party_rec.attribute14 := p_ext_bank_branch_rec.attribute14;
1949     l_party_rec.attribute15 := p_ext_bank_branch_rec.attribute15;
1950     l_party_rec.attribute16 := p_ext_bank_branch_rec.attribute16;
1951     l_party_rec.attribute17 := p_ext_bank_branch_rec.attribute17;
1952     l_party_rec.attribute18 := p_ext_bank_branch_rec.attribute18;
1953     l_party_rec.attribute19 :=p_ext_bank_branch_rec. attribute19;
1954     l_party_rec.attribute20 := p_ext_bank_branch_rec.attribute20;
1955     l_party_rec.attribute21 := p_ext_bank_branch_rec.attribute21;
1956     l_party_rec.attribute22 := p_ext_bank_branch_rec.attribute22;
1957     l_party_rec.attribute23 := p_ext_bank_branch_rec.attribute23;
1958     l_party_rec.attribute24 := p_ext_bank_branch_rec.attribute24;
1959 
1960     l_org_rec.organization_name := p_ext_bank_branch_rec.branch_name;
1961     l_org_rec.organization_name_phonetic := p_ext_bank_branch_rec.alternate_branch_name;
1962     l_org_rec.mission_statement := p_ext_bank_branch_rec.description;
1963     l_org_rec.created_by_module := 'CE';
1964     l_org_rec.party_rec := l_party_rec;
1965     l_org_rec.home_country := l_country;
1966 
1967     l_branch_rec.bank_or_branch_number := p_ext_bank_branch_rec.branch_number;
1968     l_branch_rec.branch_type := p_ext_bank_branch_rec.branch_type;
1969     l_branch_rec.rfc_code := p_ext_bank_branch_rec.rfc_identifier;
1970     l_branch_rec.institution_type := 'BANK_BRANCH';
1971     l_branch_rec.organization_rec := l_org_rec;
1972     l_branch_rec.country := l_country;
1973 
1974   -- now call HZ validation branch api
1975     hz_bank_pub.validate_bank_branch (p_init_msg_list,
1976                                p_ext_bank_acct_rec.bank_id,
1977                                l_branch_rec,
1978                                 'I',
1979                                  x_return_status,
1980                                  x_msg_count,
1981                                  x_msg_data);
1982  print_debuginfo('After return from HZ branch validation: '|| x_return_status);
1983     -- raise an exception if the validation routine is unsuccessful
1984     IF l_return_status <> fnd_api.g_ret_sts_success THEN
1985       RAISE fnd_api.g_exc_error;
1986     END IF;
1987 
1988     end if;
1989 
1990     /* perform validation on bank number, bank branch number*/
1991 
1992 
1993     COUNTRY := p_ext_bank_acct_rec.country_code;
1994     print_debuginfo('Country Code: '||COUNTRY);
1995     CE_BANK_AND_ACCOUNT_VALIDATION.validate_country(
1999        RAISE fnd_api.g_exc_error;
1996         p_country_code  => p_ext_bank_acct_rec.country_code,
1997         x_return_status => l_return_status);
1998     IF (l_return_status = fnd_api.g_ret_sts_error) THEN
2000     END IF;
2001 
2002     -- Validate IBAN Number
2003     CE_BANK_AND_ACCOUNT_VALIDATION.validate_IBAN (
2004        p_IBAN         	=> p_ext_bank_acct_rec.iban,
2005 	   p_IBAN_OUT     	=> l_iban,
2006 	   x_return_status  => l_return_status);
2007 	IF (l_return_status = fnd_api.g_ret_sts_error) THEN
2008        RAISE fnd_api.g_exc_error;
2009     END IF;
2010 
2011     -- invoke Country specific validation procedures
2012     CASE COUNTRY
2013        WHEN 'AT' THEN
2014  	      iby_validate_account_at(
2015             p_ext_bank_rec,
2016             p_ext_bank_branch_rec,
2017             p_ext_bank_acct_rec,
2018             l_foreign_pmt_flag,
2019             x_valid);
2020        WHEN 'AU' THEN
2021  	      iby_validate_account_au(
2022             p_ext_bank_rec,
2023             p_ext_bank_branch_rec,
2024             p_ext_bank_acct_rec,
2025             l_foreign_pmt_flag,
2026             x_valid);
2027       WHEN 'BE' THEN
2028  	      iby_validate_account_be(
2029             p_ext_bank_rec,
2030             p_ext_bank_branch_rec,
2031             p_ext_bank_acct_rec,
2032             l_foreign_pmt_flag,
2033             x_valid);
2034       WHEN 'CA' THEN
2035  	      iby_validate_account_ca(
2036             p_ext_bank_rec,
2037             p_ext_bank_branch_rec,
2038             p_ext_bank_acct_rec,
2039             l_foreign_pmt_flag,
2040             x_valid);
2041       WHEN 'DE' THEN
2042  	      iby_validate_account_de(
2043             p_ext_bank_rec,
2044             p_ext_bank_branch_rec,
2045             p_ext_bank_acct_rec,
2046             l_foreign_pmt_flag,
2047             x_valid);
2048       WHEN 'DK' THEN
2049  	      iby_validate_account_dk(
2050             p_ext_bank_rec,
2051             p_ext_bank_branch_rec,
2052             p_ext_bank_acct_rec,
2053             l_foreign_pmt_flag,
2054             x_valid);
2055       WHEN 'ES' THEN
2056  	      iby_validate_account_es(
2057             p_ext_bank_rec,
2058             p_ext_bank_branch_rec,
2059             p_ext_bank_acct_rec,
2060             l_foreign_pmt_flag,
2061             x_valid);
2062       WHEN 'FI' THEN
2063  	      iby_validate_account_fi(
2064             p_ext_bank_rec,
2065             p_ext_bank_branch_rec,
2066             p_ext_bank_acct_rec,
2067             l_foreign_pmt_flag,
2068             x_valid);
2069       WHEN 'FR' THEN
2070  	      iby_validate_account_fr(
2071             p_ext_bank_rec,
2072             p_ext_bank_branch_rec,
2073             p_ext_bank_acct_rec,
2074             l_foreign_pmt_flag,
2075             x_valid);
2076       WHEN 'GB' THEN
2077  	      iby_validate_account_gb(
2078             p_ext_bank_rec,
2079             p_ext_bank_branch_rec,
2080             p_ext_bank_acct_rec,
2081             l_foreign_pmt_flag,
2082             x_valid);
2083       WHEN 'GR' THEN
2084  	      iby_validate_account_gr(
2085             p_ext_bank_rec,
2086             p_ext_bank_branch_rec,
2087             p_ext_bank_acct_rec,
2088             l_foreign_pmt_flag,
2089             x_valid);
2090       WHEN 'HK' THEN
2091  	      iby_validate_account_hk(
2092             p_ext_bank_rec,
2093             p_ext_bank_branch_rec,
2094             p_ext_bank_acct_rec,
2095             l_foreign_pmt_flag,
2096             x_valid);
2097       WHEN 'IE' THEN
2098  	      iby_validate_account_ie(
2099             p_ext_bank_rec,
2100             p_ext_bank_branch_rec,
2101             p_ext_bank_acct_rec,
2102             l_foreign_pmt_flag,
2103             x_valid);
2104       WHEN 'IL' THEN
2105  	      iby_validate_account_il(
2106             p_ext_bank_rec,
2107             p_ext_bank_branch_rec,
2108             p_ext_bank_acct_rec,
2109             l_foreign_pmt_flag,
2110             x_valid);
2111       WHEN 'IS' THEN
2112  	      iby_validate_account_is(
2113             p_ext_bank_rec,
2114             p_ext_bank_branch_rec,
2115             p_ext_bank_acct_rec,
2116             l_foreign_pmt_flag,
2117             x_valid);
2118       WHEN 'IT' THEN
2119  	      iby_validate_account_it(
2120             p_ext_bank_rec,
2121             p_ext_bank_branch_rec,
2122             p_ext_bank_acct_rec,
2123             l_foreign_pmt_flag,
2124             x_valid);
2125       WHEN 'JP' THEN
2126  	      iby_validate_account_jp(
2127             p_ext_bank_rec,
2128             p_ext_bank_branch_rec,
2129             p_ext_bank_acct_rec,
2130             l_foreign_pmt_flag,
2131             x_valid);
2132       WHEN 'LU' THEN
2133  	      iby_validate_account_lu(
2134             p_ext_bank_rec,
2135             p_ext_bank_branch_rec,
2136             p_ext_bank_acct_rec,
2137             l_foreign_pmt_flag,
2138             x_valid);
2139       WHEN 'NL' THEN
2140  	      iby_validate_account_nl(
2141             p_ext_bank_rec,
2142             p_ext_bank_branch_rec,
2143             p_ext_bank_acct_rec,
2144             l_foreign_pmt_flag,
2148             p_ext_bank_rec,
2145             x_valid);
2146       WHEN 'NO' THEN
2147  	      iby_validate_account_no(
2149             p_ext_bank_branch_rec,
2150             p_ext_bank_acct_rec,
2151             l_foreign_pmt_flag,
2152             x_valid);
2153       WHEN 'NZ' THEN
2154  	      iby_validate_account_nz(
2155             p_ext_bank_rec,
2156             p_ext_bank_branch_rec,
2157             p_ext_bank_acct_rec,
2158             l_foreign_pmt_flag,
2159             x_valid);
2160       WHEN 'PL' THEN
2161  	      iby_validate_account_pl(
2162             p_ext_bank_rec,
2163             p_ext_bank_branch_rec,
2164             p_ext_bank_acct_rec,
2165             l_foreign_pmt_flag,
2166             x_valid);
2167       WHEN 'PT' THEN
2168  	      iby_validate_account_pt(
2169             p_ext_bank_rec,
2170             p_ext_bank_branch_rec,
2171             p_ext_bank_acct_rec,
2172             l_foreign_pmt_flag,
2173             x_valid);
2174       WHEN 'SE' THEN
2175  	      iby_validate_account_se(
2176             p_ext_bank_rec,
2177             p_ext_bank_branch_rec,
2178             p_ext_bank_acct_rec,
2179             l_foreign_pmt_flag,
2180             x_valid);
2181       WHEN 'SG' THEN
2182  	      iby_validate_account_sg(
2183             p_ext_bank_rec,
2184             p_ext_bank_branch_rec,
2185             p_ext_bank_acct_rec,
2186             l_foreign_pmt_flag,
2187             x_valid);
2188       WHEN 'US' THEN
2189  	      iby_validate_account_us(
2190             p_ext_bank_rec,
2191             p_ext_bank_branch_rec,
2192             p_ext_bank_acct_rec,
2193             l_foreign_pmt_flag,
2194             x_valid);
2195     ELSE
2196        -- Not a recognized country, mark as successful
2197        x_valid := TRUE;
2198        print_debuginfo('No validations for country'|| COUNTRY);
2199     END CASE;
2200 
2201 
2202     -- get message count and if count is 1, get message info.
2203     fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2204                               p_count => x_msg_count,
2205                               p_data  => x_msg_data);
2206 
2207 
2208     IF x_msg_count > 0 THEN
2209       x_return_status := fnd_api.g_ret_sts_error;
2210       print_debuginfo('Account Validations Failed ');
2211     ELSE
2212       print_debuginfo('Account Validations Successful');
2213     END IF;
2214 
2215     print_debuginfo('RETURN ' || l_module_name);
2216 
2217 EXCEPTION
2218     WHEN fnd_api.g_exc_error THEN
2219       x_return_status := fnd_api.g_ret_sts_error;
2220       print_debuginfo('IN Exception fnd_api.g_exc_error');
2221       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2222                                 p_count => x_msg_count,
2223                                 p_data  => x_msg_data);
2224 
2225     WHEN fnd_api.g_exc_unexpected_error THEN
2226       x_return_status := fnd_api.g_ret_sts_unexp_error;
2227       print_debuginfo('IN Exception fnd_api.g_ret_sts_unexp_error');
2228       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2229                                 p_count => x_msg_count,
2230                                 p_data  => x_msg_data);
2231 
2232 
2233     WHEN OTHERS THEN
2234       x_return_status := fnd_api.g_ret_sts_unexp_error;
2235       print_debuginfo('Exception : ' || SQLERRM);
2236     --  fnd_message.set_name('CE', 'CE_API_OTHERS_EXCEP');
2237     --  fnd_message.set_token('ERROR',SQLERRM);
2238       FND_MSG_PUB.add_exc_msg(G_PKG_NAME, l_module_name, null);
2239     --  fnd_msg_pub.add;
2240       fnd_msg_pub.count_and_get(p_encoded => fnd_api.g_false,
2241                                 p_count => x_msg_count,
2242                                 p_data  => x_msg_data);
2243 
2244   END iby_validate_account;
2245 
2246 
2247 
2248   --  print_debuginfo
2249   --
2250   --   Type            : check_mandatory procedure
2251   --   Pre-reqs        : None
2252   --   Function        : check for mandatory parameters.
2253   --   Current version : 1.0
2254   --   Previous version: 1.0
2255   --   Initial version : 1.0
2256 
2257    PROCEDURE check_mandatory(
2258       p_field           IN     VARCHAR2,
2259       p_value           IN     VARCHAR2
2260    ) IS
2261 
2262    l_temp         VARCHAR2(80);
2263 
2264    CURSOR c_validate_currency (p_currency_code  VARCHAR2) IS
2265       SELECT CURRENCY_CODE
2266         FROM FND_CURRENCIES
2267        WHERE CURRENCY_CODE = p_currency_code;
2268 
2269    BEGIN
2270 
2271    if (p_value is NULL) THEN
2272        fnd_message.set_name('IBY', 'IBY_MISSING_MANDATORY_PARAM');
2273        fnd_message.set_token('PARAM', p_field);
2274        fnd_msg_pub.add;
2275        print_debuginfo(p_field || ' is a required parameter.');
2276        RAISE fnd_api.g_exc_error;
2277    END IF;
2278 
2279 
2280    --Validate Currency
2281    IF (UPPER(p_field) = 'CURRENCY') THEN
2282       OPEN c_validate_currency(p_value);
2283       FETCH c_validate_currency INTO l_temp;
2284       CLOSE c_validate_currency;
2285 
2286       IF (l_temp IS NULL) THEN
2287          fnd_message.set_name('IBY', 'IBY_INVALID_CURRENCY');
2288          fnd_message.set_token('CURRENCY_CODE', p_field);
2289          fnd_msg_pub.add;
2290          RAISE fnd_api.g_exc_error;
2291       END IF;
2292 
2293    END IF;
2294    print_debuginfo('Checked mandatory field : ' || p_field || ' : ' || p_value);
2295    END check_mandatory;
2296 
2297 
2298 
2299   --  print_debuginfo
2300   --
2301   --   Type            : utility procedure
2302   --   Pre-reqs        : None
2303   --   Function        : write to log
2304   --   Current version : 1.0
2305   --   Previous version: 1.0
2306   --   Initial version : 1.0
2307 
2308   PROCEDURE print_debuginfo(
2309     p_message                               IN     VARCHAR2,
2310     p_prefix                                IN     VARCHAR2 DEFAULT 'DEBUG',
2311     p_msg_level                             IN     NUMBER   DEFAULT FND_LOG.LEVEL_STATEMENT,
2312     p_module                                IN     VARCHAR2 DEFAULT G_DEBUG_MODULE
2313   ) IS
2314 
2315    l_message                               VARCHAR2(4000);
2316    l_module                                VARCHAR2(255);
2317 
2318   BEGIN
2319 
2320 
2321     IF fnd_log.level_procedure>=fnd_log.g_current_runtime_level THEN
2322        -- Debug info.
2323        l_module  :=SUBSTRB(p_module,1,255);
2324 
2325        IF p_prefix IS NOT NULL THEN
2326           l_message :=SUBSTRB(p_prefix||'-'||p_message,1,4000);
2327        ELSE
2328           l_message :=SUBSTRB(p_message,1,4000);
2329        END IF;
2330        FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE,l_module,l_message);
2331 
2332     END IF;
2333    --   dbms_output.put_line(p_module || ':  ' || p_message);
2334   END print_debuginfo;
2335 
2336 END IBY_EXT_BANKACCT_VALIDATIONS;