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