DBA Data[Home] [Help]

PACKAGE BODY: APPS.IBY_VALIDATIONSETS_CALLS_PUB

Source


1 PACKAGE BODY IBY_VALIDATIONSETS_CALLS_PUB AS
2 /*$Header: ibyvalcb.pls 120.36.12020000.2 2012/12/05 09:20:35 asarada 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  G_PKG_NAME CONSTANT VARCHAR2(30) := 'IBY_VALIDATIONSETS_CALLS_PUB';
7 
8 
9  --
10  -- List of possible transaction types
11  -- These are used to insert into the IBY_TRANSACTION_ERRORS table.
12  --
13  TRANS_TYPE_DOC   CONSTANT VARCHAR2(100) := 'DOCUMENT_PAYABLE';
14  TRANS_TYPE_PAY   CONSTANT VARCHAR2(100) := 'PAYMENT';
15  TRANS_TYPE_INS   CONSTANT VARCHAR2(100) := 'PAYMENT_INSTRUCTION';
16 
17  --
18  -- List of possible error types
19  -- These are used to insert into the IBY_TRANSACTION_ERRORS table.
20  --
21  ERROR_TYPE_VALIDATION   CONSTANT VARCHAR2(100) := 'VALIDATION';
22  ERROR_TYPE_BANK         CONSTANT VARCHAR2(100) := 'BANK';
23 
24 
25  PROCEDURE validate_uri_using_modulus10(s IN VARCHAR2,
26      x_valResult   OUT NOCOPY BOOLEAN,
27      x_docErrorRec IN OUT NOCOPY IBY_TRANSACTION_ERRORS%ROWTYPE);
28 
29  PROCEDURE xxno_chk_mod_10_11
30     (p_kid_nr  IN  varchar2,
31      x_valResult   OUT NOCOPY BOOLEAN,
32      x_docErrorRec IN OUT NOCOPY IBY_TRANSACTION_ERRORS%ROWTYPE);
33 
34 /*--------------------------------------------------------------------
35  | NAME:
36  |     CITI_AT_EFT_DOM_PAYEE
37  |
38  | PURPOSE:
39  |     Citibank Austrian domestic EFT payee validation
40  |
41  | PARAMETERS:
42  |     IN
43  |
44  |
45  |     OUT
46  |
47  |
48  | RETURNS:
49  |
50  | NOTES:
51  |
52  *---------------------------------------------------------------------*/
53  PROCEDURE CITI_AT_EFT_DOM_PAYEE (
54      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
55      p_validation_set_code   IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
56      p_document_id           IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
57      p_is_online_val         IN VARCHAR2,
58      x_result                OUT NOCOPY NUMBER)
59  IS
60 
61  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
62  l_valResult BOOLEAN;
63  l_valid NUMBER := 0;
64  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
65  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
66 
67  BEGIN
68 
69      -- Initializing the document record
70      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
71 
72      l_docErrorRec.validation_set_code := p_validation_set_code;
73      l_docErrorRec.transaction_id := p_document_id;
74      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
75      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
76      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
77      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
78 
79      -- Validate target name
80      IBY_VALIDATIONSETS_PUB.evaluateCondition(
81          'PAYEE_PARTY_NAME',
82          l_document_rec.payee_party_name,
83          'MAXLENGTH',
84          null,
85          35,
86          l_valResult,
87          l_docErrorRec);
88 
89      IF (l_valResult = FALSE) THEN
90         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
91         l_valid := 1;
92      END IF;
93 
94      -- Validate target bank account number
95      -- by CE
96 
97      -- Validate target bank country code
98      IBY_VALIDATIONSETS_PUB.evaluateCondition(
99          'EXT_BANK_BRANCH_COUNTRY',
100          l_document_rec.ext_bank_branch_country,
101          'STRIS',
102          'AT',
103          null,
104          l_valResult,
105          l_docErrorRec);
106 
107      IF (l_valResult = FALSE) THEN
108         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
109         l_valid := 1;
110      END IF;
111 
112      -- Validate target bank code
113      IBY_VALIDATIONSETS_PUB.evaluateCondition(
114          'EXT_BANK_BRANCH_NUM',
115          l_document_rec.ext_bank_branch_num,
116          'MAXLENGTH',
117          null,
118          5,
119          l_valResult,
120          l_docErrorRec);
121 
122      IF (l_valResult = FALSE) THEN
123         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
124         l_valid := 1;
125      END IF;
126 
127      -- Insert errors into IBY_TRANSACTION_ERRORS
128      IF (l_valid = 1) THEN
129         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
130      END IF;
131 
132      -- Return the Validation Result
133      x_result := l_valid;
134 
135  END CITI_AT_EFT_DOM_PAYEE;
136 
137 /*--------------------------------------------------------------------
138  | NAME:
139  |     CITI_AT_EFT_DOM_DOC
140  |
141  | PURPOSE:
142  |     Citibank Austrian domestic EFT document validation
143  |
144  | PARAMETERS:
145  |     IN
146  |
147  |
148  |     OUT
149  |
150  |
151  | RETURNS:
152  |
153  | NOTES:
154  |
155  *---------------------------------------------------------------------*/
156  PROCEDURE CITI_AT_EFT_DOM_DOC (
157      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
158      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
159      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
160      p_is_online_val      IN VARCHAR2,
161      x_result             OUT NOCOPY NUMBER)
162  IS
163 
164  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
165  l_valResult BOOLEAN;
166  l_valid NUMBER := 0;
167  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
168  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
169 
170  BEGIN
171 
172      -- Initializing the document record
173      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
174 
175      l_docErrorRec.validation_set_code := p_validation_set_code;
176      l_docErrorRec.transaction_id := p_document_id;
177      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
178      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
179      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
180      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
181 
182      -- Validate transaction code
183      IBY_VALIDATIONSETS_PUB.evaluateCondition(
184          'DELIVERY_CHANNEL_CODE',
185          l_document_rec.delivery_channel_code,
186          'INDELIV',
187          'AT',
188          null,
189          l_valResult,
190          l_docErrorRec);
191 
192      IF (l_valResult = FALSE) THEN
193         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
194         l_valid := 1;
195      END IF;
196 
197      -- Inserting errors into IBY_TRANSACTION_ERRORS
198      IF (l_valid = 1) THEN
199         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
200      END IF;
201 
202      -- Return the Validation Result
203      x_result := l_valid;
204 
205  END CITI_AT_EFT_DOM_DOC;
206 
207 /*--------------------------------------------------------------------
208  | NAME:
209  |     AT_EFT_INT_INTERNAL_BANK
210  |
211  | PURPOSE:
212  |     Austrian International EFT internal bank validation
213  |
214  | PARAMETERS:
215  |     IN
216  |
217  |
218  |     OUT
219  |
220  |
221  | RETURNS:
222  |
223  | NOTES:
224  |
225  *---------------------------------------------------------------------*/
226  PROCEDURE AT_EFT_INT_INTERNAL_BANK(
227      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
228      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
229      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
230      p_is_online_val      IN VARCHAR2,
231      x_result             OUT NOCOPY NUMBER)
232  IS
233 
234  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
235  l_valResult BOOLEAN;
236  l_valid NUMBER := 0;
237  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
238  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
239 
240  BEGIN
241 
242      -- Initializing the document record
243      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
244 
245      l_docErrorRec.validation_set_code := p_validation_set_code;
246      l_docErrorRec.transaction_id := p_document_id;
247      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
248      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
249      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
250      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
251 
252      -- Validate payer bank account number
253      -- by CE
254 
255      -- Validate payer bank sort code
256      -- by CE
257 
258      IBY_VALIDATIONSETS_PUB.evaluateCondition(
259          'INT_BANK_BRANCH_NUM',
260          '+'||substr(l_document_rec.int_bank_branch_num,1,1)||'+',
261          'NOTINSET',
262          '+0+9+',
263          null,
264          l_valResult,
265          l_docErrorRec);
266 
267      IF (l_valResult = FALSE) THEN
268         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
269         l_valid := 1;
270      END IF;
271 
272      -- Insert errors into IBY_TRANSACTION_ERRORS
273      IF (l_valid = 1) THEN
274         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
275      END IF;
276 
277      -- Return the Validation Result
278      x_result := l_valid;
279 
280  END AT_EFT_INT_INTERNAL_BANK;
281 
282  /*--------------------------------------------------------------------
283  | NAME:
284  |     AT_EFT_INT_PAYER
285  |
286  | PURPOSE:
287  |     Austrian international EFT payer validation
288  |
289  | PARAMETERS:
290  |     IN
291  |
292  |
293  |     OUT
294  |
295  |
296  | RETURNS:
297  |
298  | NOTES:
299  |
300  *---------------------------------------------------------------------*/
301  PROCEDURE AT_EFT_INT_PAYER (
302      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
303      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
304      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
305      p_is_online_val      IN VARCHAR2,
306      x_result             OUT NOCOPY NUMBER)
307  IS
308 
309  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
310  l_valResult BOOLEAN;
311  l_valid NUMBER := 0;
312  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
313  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
314 
315  BEGIN
316 
317      -- Initializing the document record
318      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
319 
320      l_docErrorRec.validation_set_code := p_validation_set_code;
321      l_docErrorRec.transaction_id := p_document_id;
322      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
323      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
324      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
325      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
326 
327      -- Validate payer company description
328      IBY_VALIDATIONSETS_PUB.evaluateCondition(
329          'PAYER_LE_NANE',
330          l_document_rec.payer_le_name,
331          'NOTNULL',
332          null,
333          null,
334          l_valResult,
335          l_docErrorRec);
336 
337      IF (l_valResult = FALSE) THEN
338         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
339         l_valid := 1;
340      END IF;
341 
342      -- Validate payer location telephone number
343      IBY_VALIDATIONSETS_PUB.evaluateCondition(
344          'PAYER_PHONE',
345          l_document_rec.payer_phone,
346          'NOTNULL',
347          null,
348          null,
349          l_valResult,
350          l_docErrorRec);
351 
352      IF (l_valResult = FALSE) THEN
353         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
354         l_valid := 1;
355      END IF;
356 
357      -- Insert errors into IBY_TRANSACTION_ERRORS
358      IF (l_valid = 1) THEN
359         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
360      END IF;
361 
362      -- Return the Validation Result
363      x_result := l_valid;
364 
365  END AT_EFT_INT_PAYER;
366 
367  /*--------------------------------------------------------------------
368  | NAME:
369  |     AT_EFT_INT_PAYEE
370  |
371  | PURPOSE:
372  |     Austrian international EFT payee validation
373  |
374  | PARAMETERS:
375  |     IN
376  |
377  |
378  |     OUT
379  |
380  |
381  | RETURNS:
382  |
383  | NOTES:
384  |
385  *---------------------------------------------------------------------*/
386  PROCEDURE AT_EFT_INT_PAYEE(
387      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
388      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
389      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
390      p_is_online_val      IN VARCHAR2,
391      x_result             OUT NOCOPY NUMBER)
392  IS
393 
394  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
395  l_valResult BOOLEAN;
396  l_valid NUMBER := 0;
397  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
398  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
399 
400  BEGIN
401 
402      -- Initializing the document record
403      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
404 
405      l_docErrorRec.validation_set_code := p_validation_set_code;
406      l_docErrorRec.transaction_id := p_document_id;
407      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
408      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
409      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
410      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
411 
412      -- Validate payee bank account number
413      IBY_VALIDATIONSETS_PUB.evaluateCondition(
414          'EXT_BANK_ACC_NUM',
415          l_document_rec.ext_bank_acc_num,
416          'NOTNULL',
417          null,
418          null,
419          l_valResult,
420          l_docErrorRec);
421 
422      IF (l_valResult = FALSE) THEN
423         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
424         l_valid := 1;
425      END IF;
426 
427      -- Validate payee bank sort code
428      IBY_VALIDATIONSETS_PUB.evaluateCondition(
429          'EXT_BANK_BRANCH_NUM',
430          l_document_rec.ext_bank_branch_num,
431          'NOTNULL',
432          null,
433          null,
434          l_valResult,
435          l_docErrorRec);
436 
437      IF (l_valResult = FALSE) THEN
438         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
439         l_valid := 1;
440      END IF;
441 
442      -- Insert errors into IBY_TRANSACTION_ERRORS
443      IF (l_valid = 1) THEN
444         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
445      END IF;
446 
447      -- Return the Validation Result
448      x_result := l_valid;
449 
450  END AT_EFT_INT_PAYEE;
451 
452 /*--------------------------------------------------------------------
453  | NAME:
454  |     CITI_BE_EFT_DOM_PAYEE
455  |
456  | PURPOSE:
457  |     Citibank Belgian domestic EFT payee validation
458  |
459  | PARAMETERS:
460  |     IN
461  |
462  |
463  |     OUT
464  |
465  |
466  | RETURNS:
467  |
468  | NOTES:
469  |
470  *---------------------------------------------------------------------*/
471  PROCEDURE CITI_BE_EFT_DOM_PAYEE (
472      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
473      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
474      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
475      p_is_online_val      IN VARCHAR2,
476      x_result             OUT NOCOPY NUMBER)
477  IS
478 
479  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
480  l_valResult BOOLEAN;
481  l_valid NUMBER := 0;
482  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
483  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
484 
485  BEGIN
486 
487      -- Initializing the document record
488      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
489 
490      l_docErrorRec.validation_set_code := p_validation_set_code;
491      l_docErrorRec.transaction_id := p_document_id;
492      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
493      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
494      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
495      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
496 
497      -- Validate target name
498      IBY_VALIDATIONSETS_PUB.evaluateCondition(
499          'PAYEE_PARTY_NAME',
500          l_document_rec.payee_party_name,
501          'MAXLENGTH',
502          null,
503          26,
504          l_valResult,
505          l_docErrorRec);
506 
507      IF (l_valResult = FALSE) THEN
508         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
509         l_valid := 1;
510      END IF;
511 
512      -- Validate target bank account number
513      IBY_VALIDATIONSETS_PUB.evaluateCondition(
514          'EXT_BANK_ACC_NUM',
515          l_document_rec.ext_bank_acc_num,
516          'MAXLENGTH',
517          null,
518          12,
519          l_valResult,
520          l_docErrorRec);
521 
522      IF (l_valResult = FALSE) THEN
523         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
524         l_valid := 1;
525      END IF;
526 
527      IBY_VALIDATIONSETS_PUB.evaluateCondition(
528          'EXT_BANK_ACC_NUM',
529          l_document_rec.ext_bank_acc_num,
530          'DIGITSONLY',
531          null,
532          null,
533          l_valResult,
534          l_docErrorRec);
535 
536      IF (l_valResult = FALSE) THEN
537         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
538         l_valid := 1;
539      END IF;
540 
541      -- by CE (the most important validation for this data)
542      -- check algorithm
543 
544      -- Validate target bank country code
545      IBY_VALIDATIONSETS_PUB.evaluateCondition(
546          'EXT_BANK_BRANCH_COUNTRY',
547          l_document_rec.ext_bank_branch_country,
548          'STRIS',
549          'BE',
550          null,
551          l_valResult,
552          l_docErrorRec);
553 
554      IF (l_valResult = FALSE) THEN
555         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
556         l_valid := 1;
557      END IF;
558 
559      -- Inserting errors into IBY_TRANSACTION_ERRORS
560      IF (l_valid = 1) THEN
561         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
562      END IF;
563 
564      -- Return the Validation Result
565      x_result := l_valid;
566 
567  END CITI_BE_EFT_DOM_PAYEE;
568 
569 /*--------------------------------------------------------------------
570  | NAME:
571  |     P_CITI_BE_EFT_DOM_PMT
572  |
573  | PURPOSE:
574  |     Citibank Belgian domestic EFT payment validation
575  |
576  | PARAMETERS:
577  |     IN
578  |
579  |
580  |     OUT
581  |
582  |
583  | RETURNS:
584  |
585  | NOTES:
586  |
587  *---------------------------------------------------------------------*/
588  PROCEDURE P_CITI_BE_EFT_DOM_PMT (
589      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
590      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
591      p_payment_id         IN IBY_PAYMENTS_ALL.payment_id%type,
592      p_is_online_val      IN VARCHAR2,
593      x_result             OUT NOCOPY NUMBER)
594  IS
595 
596  l_payment_rec IBY_VALIDATIONSETS_PUB.paymentRecType;
597  l_valResult BOOLEAN;
598  l_valid NUMBER := 0;
599  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
600  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
601 
602  l_max_ach_amt NUMBER;
603 
604  BEGIN
605 
606      -- Initializing the payment record
607      IBY_VALIDATIONSETS_PUB.initPaymentData(p_payment_id,l_payment_rec);
608 
609      l_docErrorRec.validation_set_code := p_validation_set_code;
610      l_docErrorRec.transaction_id := p_payment_id;
611      l_docErrorRec.transaction_type := 'PAYMENT';
612      l_docErrorRec.calling_app_doc_unique_ref1 := p_payment_id;
613 
614      -- Validate transaction reference
615      IBY_VALIDATIONSETS_PUB.evaluateCondition(
616          'PMT_ID',
617          l_payment_rec.pmt_id,
618          'MAXLENGTH',
619          null,
620          8,
621          l_valResult,
622          l_docErrorRec);
623 
624      IF (l_valResult = FALSE) THEN
625         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
626         l_valid := 1;
627      END IF;
628 
629      -- Validate transaction amount
630      IBY_VALIDATIONSETS_PUB.getParamValue(
631                             p_validation_assign_id,
632                             p_validation_set_code,
633                             'MAX_PAYMENT_AMOUNT',
634                             l_max_ach_amt );
635 
636      IBY_VALIDATIONSETS_PUB.evaluateCondition(
637          'PMT_AMOUNT',
638          l_payment_rec.pmt_amount,
639          'LESSEQUAL',
640          null,
641          l_max_ach_amt,
642          l_valResult,
643          l_docErrorRec);
644 
645      IF (l_valResult = FALSE) THEN
646         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
647         l_valid := 1;
648      END IF;
649 
650      -- Inserting errors into IBY_TRANSACTION_ERRORS
651      -- The first parameter p_is_online_val takes hardcoded value 'N'.
652      IF (l_valid = 1) THEN
653         IBY_VALIDATIONSETS_PUB.insert_transaction_errors('N',l_docErrorTab);
654      END IF;
655 
656      -- Return the Validation Result
657      x_result := l_valid;
658 
659  END P_CITI_BE_EFT_DOM_PMT;
660 
661 /*--------------------------------------------------------------------
662  | NAME:
663  |     BE_EFT_DOM_DOC
664  |
665  | PURPOSE:
666  |     Belgian domestic EFT document validation
667  |
668  | PARAMETERS:
669  |     IN
670  |
671  |
672  |     OUT
673  |
674  |
675  | RETURNS:
676  |
677  | NOTES:
678  |
679  *---------------------------------------------------------------------*/
680  PROCEDURE BE_EFT_DOM_DOC (
681      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
682      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
683      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
684      p_is_online_val      IN VARCHAR2,
685      x_result             OUT NOCOPY NUMBER)
686  IS
687 
688  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
689  l_valResult BOOLEAN;
690  l_valid NUMBER := 0;
691  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
692  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
693 
694  BEGIN
695 
696      -- Initializing the document record
697      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
698 
699      l_docErrorRec.validation_set_code := p_validation_set_code;
700      l_docErrorRec.transaction_id := p_document_id;
701      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
702      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
703      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
704      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
705 
706      -- Validate payment currency
707      IBY_VALIDATIONSETS_PUB.evaluateCondition(
708          'DOCUMENT_PAY_CURRENCY',
709          l_document_rec.document_pay_currency,
710          'STRIS',
711          'EUR',
712          null,
713          l_valResult,
714          l_docErrorRec);
715 
716      IF (l_valResult = FALSE) THEN
717         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
718         l_valid := 1;
719      END IF;
720 
721      -- Inserting errors into IBY_TRANSACTION_ERRORS
722      IF (l_valid = 1) THEN
723         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
724      END IF;
725 
726      -- Return the Validation Result
727      x_result := l_valid;
728 
729  END BE_EFT_DOM_DOC;
730 
731  /*--------------------------------------------------------------------
732  | NAME:
733  |     BE_EFT_INT_PAYEE
734  |
735  | PURPOSE:
736  |     Belgian international EFT payee validation
737  |
738  | PARAMETERS:
739  |     IN
740  |
741  |
742  |     OUT
743  |
744  |
745  | RETURNS:
746  |
747  | NOTES:
748  |
749  *---------------------------------------------------------------------*/
750  PROCEDURE BE_EFT_INT_PAYEE (
751      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
752      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
753      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
754      p_is_online_val      IN VARCHAR2,
755      x_result             OUT NOCOPY NUMBER)
756  IS
757 
758  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
759  l_valResult BOOLEAN;
760  l_valid NUMBER := 0;
761  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
762  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
763 
764  BEGIN
765 
766      -- Initializing the document record
767      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
768 
769      l_docErrorRec.validation_set_code := p_validation_set_code;
770      l_docErrorRec.transaction_id := p_document_id;
771      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
772      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
773      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
774      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
775 
776      -- Validate vendor site cost code
777      IBY_VALIDATIONSETS_PUB.evaluateCondition(
778          'BANK_CHARGE_BEARER',
779          l_document_rec.bank_charge_bearer,
780          'INLOOKUPTYPE',
781          'IBY_BANK_CHARGE_BEARER',
782          null,
783          l_valResult,
784          l_docErrorRec);
785 
786      IF (l_valResult = FALSE) THEN
787         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
788         l_valid := 1;
789      END IF;
790 
791      -- Validate payee bank number/branch number
792      IBY_VALIDATIONSETS_PUB.evaluateCondition(
793          'EXT_BANK_NUM',
794          l_document_rec.ext_bank_num,
795          'NOTNULL',
796          null,
797          null,
798          l_valResult,
799          l_docErrorRec);
800 
801      IF (l_valResult = FALSE) THEN
802         IBY_VALIDATIONSETS_PUB.evaluateCondition(
803             'EXT_BANK_BRANCH_NUM',
804             l_document_rec.ext_bank_branch_num,
805             'NOTNULL',
806             null,
807             null,
808             l_valResult,
809             l_docErrorRec);
810 
811         IF (l_valResult = FALSE) THEN
812            IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
813            l_valid := 1;
814         END IF;
815      END IF;
816 
817      -- Validate EFT cost code
818      -- Not necessary. Combined into Validate Supplier cost code.
819 
820      -- Inserting errors into IBY_TRANSACTION_ERRORS
821      IF (l_valid = 1) THEN
822         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
823      END IF;
824 
825      -- Return the Validation Result
826      x_result := l_valid;
827 
828  END BE_EFT_INT_PAYEE;
829 
830 /*--------------------------------------------------------------------
831  | NAME:
832  |     BE_EFT_INT_DOC
833  |
834  | PURPOSE:
835  |     Belgian international EFT document validation
836  |
837  | PARAMETERS:
838  |     IN
839  |
840  |
841  |     OUT
842  |
843  |
844  | RETURNS:
845  |
846  | NOTES:
847  |
848  *---------------------------------------------------------------------*/
849  PROCEDURE BE_EFT_INT_DOC (
850      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
851      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
852      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
853      p_is_online_val      IN VARCHAR2,
854      x_result             OUT NOCOPY NUMBER)
855  IS
856 
857  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
858  l_valResult BOOLEAN;
859  l_valid NUMBER := 0;
860  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
861  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
862 
863  BEGIN
864 
865      -- Initializing the document record
866      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
867 
868      l_docErrorRec.validation_set_code := p_validation_set_code;
869      l_docErrorRec.transaction_id := p_document_id;
870      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
871      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
872      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
873      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
874 
875      -- Validate payment method
876      IBY_VALIDATIONSETS_PUB.evaluateCondition(
877          'EXT_BANK_ACC_NUM',
878          l_document_rec.ext_bank_acc_num,
879          'NOTNULL',
880          null,
881          null,
882          l_valResult,
883          l_docErrorRec);
884 
885      IF (l_valResult = FALSE) THEN
886         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
887         l_valid := 1;
888      END IF;
889 
890      -- Validate number of IBLC code
891      -- Not coded. This has been moved to the payment level.
892 
893      -- Validate number of detail records
894      -- Not coded. This has been moved to the instruction level.
895 
896      -- Inserting errors into IBY_TRANSACTION_ERRORS
897      IF (l_valid = 1) THEN
898         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
899      END IF;
900 
901      -- Return the Validation Result
902      x_result := l_valid;
903 
904  END BE_EFT_INT_DOC;
905 
906 /*--------------------------------------------------------------------
907  | NAME:
908  |     P_BE_EFT_INT_PMT
909  |
910  | PURPOSE:
911  |     Belgian international EFT payment validation.
912  |
913  | PARAMETERS:
914  |     IN
915  |
916  |
917  |     OUT
918  |
919  |
920  | RETURNS:
921  |
922  | NOTES:
923  |
924  *---------------------------------------------------------------------*/
925  PROCEDURE P_BE_EFT_INT_PMT (
926      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
927      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
928      p_payment_id         IN IBY_PAYMENTS_ALL.payment_id%type,
929      p_is_online_val      IN VARCHAR2,
930      x_result             OUT NOCOPY NUMBER)
931  IS
932 
933  l_payment_rec IBY_VALIDATIONSETS_PUB.paymentRecType;
934  l_valResult BOOLEAN;
935  l_valid NUMBER := 0;
936  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
937  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
938 
939  l_max_check_amt NUMBER;
940  l_max_pay_reason_cnt NUMBER;
941 
942  BEGIN
943 
944      -- Initializing the payment record
945      IBY_VALIDATIONSETS_PUB.initPaymentData(p_payment_id,l_payment_rec);
946 
947      l_docErrorRec.validation_set_code := p_validation_set_code;
948      l_docErrorRec.transaction_id := p_payment_id;
949      l_docErrorRec.transaction_type := 'PAYMENT';
950      l_docErrorRec.calling_app_doc_unique_ref1 := p_payment_id;
951 
952      -- Validate payment amount
953      IBY_VALIDATIONSETS_PUB.getParamValue(
954                             p_validation_assign_id,
955                             p_validation_set_code,
956                             'MAX_PAYMENT_AMOUNT',
957                             l_max_check_amt );
958 
959      IBY_VALIDATIONSETS_PUB.evaluateCondition(
960          'PMT_AMOUNT',
961          l_payment_rec.pmt_amount,
962          'LESSEQUAL',
963          null,
964          l_max_check_amt,
965          l_valResult,
966          l_docErrorRec);
967 
968      IF (l_valResult = FALSE) THEN
969         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
970         l_valid := 1;
971      END IF;
972 
973      -- Validate number of IBLC codes
974      -- Bug 5411492 changes start here
975      -- Analysis - the commenting of this code will ignore the validation.
976 /*------------------------------------------------------------------------
977      IBY_VALIDATIONSETS_PUB.getParamValue(
978                             p_validation_assign_id,
979                             p_validation_set_code,
980                             'MAX_PAYMENT_REASON_COUNT',
981                             l_max_pay_reason_cnt );
982 
983      IBY_VALIDATIONSETS_PUB.evaluateCondition(
984          'PMT_PAYMENT_REASON_COUNT',
985          l_payment_rec.pmt_payment_reason_count,
986          'LESSEQUAL',
987          null,
988          l_max_pay_reason_cnt,
989          l_valResult,
990          l_docErrorRec);
991 
992      IF (l_valResult = FALSE) THEN
993         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
994         l_valid := 1;
995      END IF;
996 
997 ---------------------------------------------------------------------------*/
998 
999 -- Bug 5411492 changes end here
1000 
1001      -- Inserting errors into IBY_TRANSACTION_ERRORS
1002      -- The first parameter p_is_online_val takes hardcoded value 'N'.
1003      IF (l_valid = 1) THEN
1004         IBY_VALIDATIONSETS_PUB.insert_transaction_errors('N',l_docErrorTab);
1005      END IF;
1006 
1007      -- Return the Validation Result
1008      x_result := l_valid;
1009 
1010  END P_BE_EFT_INT_PMT;
1011 
1012 /*--------------------------------------------------------------------
1013  | NAME:
1014  |     I_BE_EFT_INT_INSTR
1015  |
1016  | PURPOSE:
1017  |     Belgian international EFT payment instruction validation
1018  |
1019  | PARAMETERS:
1020  |     IN
1021  |
1022  |
1023  |     OUT
1024  |
1025  |
1026  | RETURNS:
1027  |
1028  | NOTES:
1029  |
1030  *---------------------------------------------------------------------*/
1031  PROCEDURE I_BE_EFT_INT_INSTR (
1032      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
1033      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
1034      p_instruction_id     IN IBY_PAY_INSTRUCTIONS_ALL.payment_instruction_id%type,
1035      p_is_online_val      IN VARCHAR2,
1036      x_result             OUT NOCOPY NUMBER)
1037      IS
1038 
1039  l_instruction_rec IBY_VALIDATIONSETS_PUB.instructionRecType;
1040  l_valResult BOOLEAN;
1041  l_valid NUMBER := 0;
1042  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
1043  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
1044 
1045  l_max_num_of_docs NUMBER;
1046 
1047  BEGIN
1048 
1049      -- Initializing the payment record
1050      IBY_VALIDATIONSETS_PUB.initInstructionData(p_instruction_id,l_instruction_rec);
1051 
1052      l_docErrorRec.validation_set_code := p_validation_set_code;
1053      l_docErrorRec.transaction_id := p_instruction_id;
1054      l_docErrorRec.transaction_type := 'PAYMENT_INSTRUCTION';
1055      l_docErrorRec.calling_app_doc_unique_ref1 := p_instruction_id;
1056 
1057      -- Validate number of detail records
1058      IBY_VALIDATIONSETS_PUB.getParamValue(
1059                             p_validation_assign_id,
1060                             p_validation_set_code,
1061                             'MAX_DOCUMENT_COUNT',
1062                             l_max_num_of_docs );
1063 
1064      IBY_VALIDATIONSETS_PUB.evaluateCondition(
1065          'INS_DOCUMENT_COUNT',
1066          l_instruction_rec.ins_document_count,
1067          'LESSEQUAL',
1068          null,
1069          l_max_num_of_docs,
1070          l_valResult,
1071          l_docErrorRec);
1072 
1073      IF (l_valResult = FALSE) THEN
1074         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
1075         l_valid := 1;
1076      END IF;
1077 
1078      -- Inserting errors into IBY_TRANSACTION_ERRORS
1079      -- The first parameter p_is_online_val takes hardcoded value 'N'.
1080      IF (l_valid = 1) THEN
1081         IBY_VALIDATIONSETS_PUB.insert_transaction_errors('N',l_docErrorTab);
1082      END IF;
1083 
1084      -- Return the Validation Result
1085      x_result := l_valid;
1086 
1087  END I_BE_EFT_INT_INSTR;
1088 
1089 /*--------------------------------------------------------------------
1090  | NAME:
1091  |     CITI_CH_EFT_DOM_PAYEE
1092  |
1093  | PURPOSE:
1094  |     Citibank Swiss domestic EFT payee validation.
1095  |
1096  | PARAMETERS:
1097  |     IN
1098  |
1099  |
1100  |     OUT
1101  |
1102  |
1103  | RETURNS:
1104  |
1105  | NOTES:
1106  |
1107  *---------------------------------------------------------------------*/
1108  PROCEDURE CITI_CH_EFT_DOM_PAYEE(
1109      p_validation_assign_id IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
1110      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
1111      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
1112      p_is_online_val      IN VARCHAR2,
1113      x_result             OUT NOCOPY NUMBER)
1114  IS
1115 
1116  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
1117  l_valResult BOOLEAN;
1118  l_valid NUMBER := 0;
1119  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
1120  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
1121 
1122  BEGIN
1123 
1124      -- Initializing the document record
1125      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
1126 
1127      l_docErrorRec.validation_set_code := p_validation_set_code;
1128      l_docErrorRec.transaction_id := p_document_id;
1129      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
1130      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
1131      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
1132      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
1133 
1134      if l_document_rec.delivery_channel_code = '1000' then
1135 
1136         -- Validate target name
1137         IBY_VALIDATIONSETS_PUB.evaluateCondition(
1138             'PAYEE_PARTY_NAME',
1139             l_document_rec.payee_party_name,
1140             'MAXLENGTH',
1141             null,
1142             20,
1143             l_valResult,
1144             l_docErrorRec);
1145 
1146         IF (l_valResult = FALSE) THEN
1147            IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
1148            l_valid := 1;
1149         END IF;
1150 
1151         -- Validate target address
1152         IBY_VALIDATIONSETS_PUB.evaluateCondition(
1153 	    'PAYEE_PARTY_SITE_ADDR1',
1154 	    l_document_rec.payee_party_addr1,
1155 	    'NOTNULL',
1156 	    null,
1157 	    null,
1158 	    l_valResult,
1159 	    l_docErrorRec);
1160 
1161         IF (l_valResult = FALSE) THEN
1162    	       IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
1163 	       l_valid := 1;
1164         END IF;
1165 
1166         IBY_VALIDATIONSETS_PUB.evaluateCondition(
1167             'PAYEE_PARTY_SITE_ADDR1',
1168             l_document_rec.payee_party_addr1,
1169             'MAXLENGTH',
1170             null,
1171             20,
1172             l_valResult,
1173             l_docErrorRec);
1174 
1175         IF (l_valResult = FALSE) THEN
1176            IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
1177            l_valid := 1;
1178         END IF;
1179 
1180         -- Validate target bank account number
1181         IBY_VALIDATIONSETS_PUB.evaluateCondition(
1182             'EXT_BANK_ACC_NUM',
1183             l_document_rec.ext_bank_acc_num,
1184             'DIGITSONLY',
1185             null,
1186             null,
1187             l_valResult,
1188             l_docErrorRec);
1189 
1190         IF (l_valResult = FALSE) THEN
1191            IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
1192            l_valid := 1;
1193         END IF;
1194 
1195         IBY_VALIDATIONSETS_PUB.evaluateCondition(
1196             'EXT_BANK_ACC_NUM',
1197             l_document_rec.ext_bank_acc_num,
1198             'EXACTLENGTH',
1199             null,
1200             9,
1201             l_valResult,
1202             l_docErrorRec);
1203 
1204         IF (l_valResult = FALSE) THEN
1205            IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
1206            l_valid := 1;
1207         END IF;
1208 
1209      elsif l_document_rec.delivery_channel_code in ('0100', '0000') then
1210 
1211         -- Validate target name
1212         IBY_VALIDATIONSETS_PUB.evaluateCondition(
1213             'PAYEE_PARTY_NAME',
1214             l_document_rec.payee_party_name,
1215             'MAXLENGTH',
1216             null,
1217             24,
1218             l_valResult,
1219             l_docErrorRec);
1220 
1221         IF (l_valResult = FALSE) THEN
1222            IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
1223            l_valid := 1;
1224         END IF;
1225 
1226         -- Validate target address
1227         IBY_VALIDATIONSETS_PUB.evaluateCondition(
1228 	        'PAYEE_PARTY_SITE_ADDR1',
1229 	        l_document_rec.payee_party_addr1,
1230 	        'NOTNULL',
1231 	        null,
1232 	        null,
1233 	        l_valResult,
1234 	        l_docErrorRec);
1235 
1236         IF (l_valResult = FALSE) THEN
1237    	       IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
1238 	       l_valid := 1;
1239         END IF;
1240 
1241         IBY_VALIDATIONSETS_PUB.evaluateCondition(
1242             'PAYEE_PARTY_SITE_ADDR1',
1243             l_document_rec.payee_party_addr1,
1244             'MAXLENGTH',
1245             null,
1246             24,
1247             l_valResult,
1248             l_docErrorRec);
1249 
1250         IF (l_valResult = FALSE) THEN
1251            IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
1252            l_valid := 1;
1253         END IF;
1254 
1255         -- Validate target bank address
1256         IBY_VALIDATIONSETS_PUB.evaluateCondition(
1257             'EXT_BANK_BRANCH_ADDR1',
1258             l_document_rec.ext_bank_branch_addr1,
1259             'NOTNULL',
1260             null,
1261             null,
1262             l_valResult,
1263             l_docErrorRec);
1264 
1265         IF (l_valResult = FALSE) THEN
1266            IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(
1267                l_docErrorRec, l_docErrorTab);
1268            l_valid := 1;
1269         END IF;
1270 
1271         IBY_VALIDATIONSETS_PUB.evaluateCondition(
1272             'EXT_BANK_BRANCH_ADDR1',
1273             l_document_rec.ext_bank_branch_addr1,
1274             'MAXLENGTH',
1275             null,
1276             24,
1277             l_valResult,
1278             l_docErrorRec);
1279 
1280         IF (l_valResult = FALSE) THEN
1281            IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
1282            l_valid := 1;
1283         END IF;
1284 
1285         -- Validate target bank code
1286         if (length(l_document_rec.ext_bank_branch_num) in (3, 4, 5) or
1287 	    (length(l_document_rec.ext_bank_branch_num) = 9 and
1288 	     substr(l_document_rec.ext_bank_branch_num,1,2) = '07') ) then
1289 	   null;
1290 	else
1291 	   -- this is a dummy validation for generating the error message.
1292            IBY_VALIDATIONSETS_PUB.evaluateCondition(
1293                'EXT_BANK_BRANCH_NUM',
1294                l_document_rec.ext_bank_branch_num,
1295                'MAXLENGTH',
1296                null,
1297                -1,
1298                l_valResult,
1299                l_docErrorRec);
1300 
1301            IF (l_valResult = FALSE) THEN
1302               IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
1303               l_valid := 1;
1304            END IF;
1305         end if;
1306 
1307         -- Validate target bank account number
1308         IBY_VALIDATIONSETS_PUB.evaluateCondition(
1309             'EXT_BANK_ACC_NUM',
1310             l_document_rec.ext_bank_acc_num,
1311             'MAXLENGTH',
1312             null,
1313             27,
1314             l_valResult,
1315             l_docErrorRec);
1316 
1317         IF (l_valResult = FALSE) THEN
1318            IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
1319            l_valid := 1;
1320         END IF;
1321      else
1322         null;
1323      end if;
1324 
1325      -- Insert errors into IBY_TRANSACTION_ERRORS
1326      IF (l_valid = 1) THEN
1327         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
1328      END IF;
1329 
1330      -- Return the validation result
1331      x_result := l_valid;
1332 
1333  END CITI_CH_EFT_DOM_PAYEE;
1334 
1335 /*--------------------------------------------------------------------
1336  | NAME:
1337  |     CITI_CH_EFT_DOM_DOC
1338  |
1339  | PURPOSE:
1340  |     Citibank Swiss domestic EFT document validation.
1341  |
1342  | PARAMETERS:
1343  |     IN
1344  |
1345  |
1346  |     OUT
1347  |
1348  |
1349  | RETURNS:
1350  |
1351  | NOTES:
1352  |
1353  *---------------------------------------------------------------------*/
1354  PROCEDURE CITI_CH_EFT_DOM_DOC (
1355      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
1356      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
1357      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
1358      p_is_online_val      IN VARCHAR2,
1359      x_result             OUT NOCOPY NUMBER)
1360  IS
1361 
1362  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
1363  l_valResult BOOLEAN;
1364  l_valid NUMBER := 0;
1365  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
1366  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
1367 
1368  BEGIN
1369 
1370      -- Initializing the document record
1371      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
1372 
1373      l_docErrorRec.validation_set_code := p_validation_set_code;
1374      l_docErrorRec.transaction_id := p_document_id;
1375      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
1376      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
1377      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
1378      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
1379 
1380      -- Validate transaction code
1381      IBY_VALIDATIONSETS_PUB.evaluateCondition(
1382          'DELIVERY_CHANNEL_CODE',
1383          l_document_rec.delivery_channel_code,
1384          'INDELIV',
1385          'CH',
1386          null,
1387          l_valResult,
1388          l_docErrorRec);
1389 
1390      IF (l_valResult = FALSE) THEN
1391         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
1392         l_valid := 1;
1393      END IF;
1394 
1395      -- Validate ESR reference number
1396      IBY_VALIDATIONSETS_PUB.evaluateCondition(
1397          'UNIQUE_REMIT_ID_CODE',
1398          l_document_rec.unique_remit_id_code,
1399          'VALID_CH_ESR',
1400          null,
1401          null,
1402          l_valResult,
1403          l_docErrorRec);
1404 
1405      IF (l_valResult = FALSE) THEN
1406         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
1407         l_valid := 1;
1408      END IF;
1409 
1410      -- Inserting errors into IBY_TRANSACTION_ERRORS
1411      IF (l_valid = 1) THEN
1412         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
1413      END IF;
1414 
1415      -- Return the Validation Result
1416      x_result := l_valid;
1417 
1418  END CITI_CH_EFT_DOM_DOC;
1419 
1420 /*--------------------------------------------------------------------
1421  | NAME:
1422  |     P_CITI_CH_EFT_DOM_PMT
1423  |
1424  | PURPOSE:
1425  |     Citibank Swiss domestic EFT payment validation.
1426  |
1427  | PARAMETERS:
1428  |     IN
1429  |
1430  |
1431  |     OUT
1432  |
1433  |
1434  | RETURNS:
1435  |
1436  | NOTES:
1437  |
1438  *---------------------------------------------------------------------*/
1439  PROCEDURE P_CITI_CH_EFT_DOM_PMT (
1440      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
1441      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
1442      p_payment_id         IN IBY_PAYMENTS_ALL.payment_id%type,
1443      p_is_online_val      IN VARCHAR2,
1444      x_result             OUT NOCOPY NUMBER)
1445  IS
1446 
1447  l_payment_rec IBY_VALIDATIONSETS_PUB.paymentRecType;
1448  l_valResult BOOLEAN;
1449  l_valid NUMBER := 0;
1450  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
1451  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
1452 
1453  BEGIN
1454 
1455      -- Initializing the payment record
1456      IBY_VALIDATIONSETS_PUB.initPaymentData(p_payment_id,l_payment_rec);
1457 
1458      l_docErrorRec.validation_set_code := p_validation_set_code;
1459      l_docErrorRec.transaction_id := p_payment_id;
1460      l_docErrorRec.transaction_type := 'PAYMENT';
1461      l_docErrorRec.calling_app_doc_unique_ref1 := p_payment_id;
1462 
1463      -- Validate transaction reference
1464      IBY_VALIDATIONSETS_PUB.evaluateCondition(
1465          'PMT_ID',
1466          l_payment_rec.pmt_id,
1467          'MAXLENGTH',
1468          null,
1469          11,
1470          l_valResult,
1471          l_docErrorRec);
1472 
1473      IF (l_valResult = FALSE) THEN
1474         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
1475         l_valid := 1;
1476      END IF;
1477 
1478      -- Inserting errors into IBY_TRANSACTION_ERRORS
1479      -- The first parameter p_is_online_val takes hardcoded value 'N'.
1480      IF (l_valid = 1) THEN
1481         IBY_VALIDATIONSETS_PUB.insert_transaction_errors('N',l_docErrorTab);
1482      END IF;
1483 
1484      -- Return the Validation Result
1485      x_result := l_valid;
1486 
1487  END P_CITI_CH_EFT_DOM_PMT;
1488 
1489 /*--------------------------------------------------------------------
1490  | NAME:
1491  |     CH_EFT_GEN_PAYEE
1492  |
1493  | PURPOSE:
1494  |     Swiss EFT general payee validation.
1495  |
1496  | PARAMETERS:
1497  |     IN
1498  |
1499  |
1500  |     OUT
1501  |
1502  |
1503  | RETURNS:
1504  |
1505  | NOTES:
1506  |
1507  *---------------------------------------------------------------------*/
1508  PROCEDURE CH_EFT_GEN_PAYEE (
1509      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
1510      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
1511      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
1512      p_is_online_val      IN VARCHAR2,
1513      x_result             OUT NOCOPY NUMBER)
1514  IS
1515 
1516  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
1517  l_valResult BOOLEAN;
1518  l_valid NUMBER := 0;
1519  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
1520  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
1521 
1522  BEGIN
1523 
1524      -- Initializing the payment record
1525      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
1526 
1527      l_docErrorRec.validation_set_code := p_validation_set_code;
1528      l_docErrorRec.transaction_id := p_document_id;
1529      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
1530      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
1531      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
1532      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
1533 
1534      -- Validate bank account type (delivery channel)
1535      IBY_VALIDATIONSETS_PUB.evaluateCondition(
1536          'DELIVERY_CHANNEL_CODE',
1537          l_document_rec.delivery_channel_code,
1538          'INDELIV',
1539          'CH',
1540          null,
1541          l_valResult,
1542          l_docErrorRec);
1543 
1544      IF (l_valResult = FALSE) THEN
1545         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
1546         l_valid := 1;
1547      END IF;
1548 
1549      -- Validate bank account number
1550 /*
1551      Bug 6269371: Corrected delivery channel codes as seeded in
1552                   IBY_DELIVERY_CHANNELS_B table.
1553 */
1554      if l_document_rec.delivery_channel_code in ('CH_BANK', 'CH_DTACHECK') then
1555         IBY_VALIDATIONSETS_PUB.evaluateCondition(
1556             'EXT_BANK_ACC_NUM',
1557             l_document_rec.ext_bank_acc_num,
1558             'NOTNULL',
1559             null,
1560             null,
1561             l_valResult,
1562             l_docErrorRec);
1563 
1564         IF (l_valResult = FALSE) THEN
1565            IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
1566            l_valid := 1;
1567         END IF;
1568      end if;
1569 
1570      -- Validate supplier name and address
1571      -- Note coded. This will be handled in a separate validation set for char set.
1572 
1573      -- Insert errors into IBY_TRANSACTION_ERRORS
1574      IF (l_valid = 1) THEN
1575         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
1576      END IF;
1577 
1578      -- Return the validation result
1579      x_result := l_valid;
1580 
1581  END CH_EFT_GEN_PAYEE;
1582 
1583 /*--------------------------------------------------------------------
1584  | NAME:
1585  |     CH_EFT_GEN_DOC
1586  |
1587  | PURPOSE:
1588  |     Swiss EFT general document validation.
1589  |
1590  | PARAMETERS:
1591  |     IN
1592  |
1593  |
1594  |     OUT
1595  |
1596  |
1597  | RETURNS:
1598  |
1599  | NOTES:
1600  |
1601  *---------------------------------------------------------------------*/
1602  PROCEDURE CH_EFT_GEN_DOC (
1603      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
1604      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
1605      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
1606      p_is_online_val      IN VARCHAR2,
1607      x_result             OUT NOCOPY NUMBER)
1608  IS
1609 
1610  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
1611  l_valResult BOOLEAN;
1612  l_valid NUMBER := 0;
1613  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
1614  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
1615 
1616  BEGIN
1617 
1618      -- Initializing the payment record
1619      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
1620 
1621      l_docErrorRec.validation_set_code := p_validation_set_code;
1622      l_docErrorRec.transaction_id := p_document_id;
1623      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
1624      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
1625      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
1626      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
1627 
1628      if l_document_rec.delivery_channel_code = 'CH_ESR' then  -- Bug 6269371
1629 
1630         -- Validate ESR exclusive payment flag
1631         IBY_VALIDATIONSETS_PUB.evaluateCondition(
1632             'EXCLUSIVE_PAYMENT_FLAG',
1633             l_document_rec.exclusive_payment_flag,
1634             'STRIS',
1635             'Y',
1636             null,
1637             l_valResult,
1638             l_docErrorRec);
1639 
1640         IF (l_valResult = FALSE) THEN
1641            IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
1642            l_valid := 1;
1643         END IF;
1644 
1645         -- Validate ESR number: case 1 ESR number is null
1646         IBY_VALIDATIONSETS_PUB.evaluateCondition(
1647             'UNIQUE_REMIT_ID_CODE',
1648             l_document_rec.unique_remit_id_code,
1649             'NOTNULL',
1650             null,
1651             null,
1652             l_valResult,
1653             l_docErrorRec);
1654 
1655         IF (l_valResult = FALSE) THEN
1656            IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
1657            l_valid := 1;
1658         END IF;
1659 
1660         -- Validate ESR number: case 2 ESR number length is 15, 16 or 27
1661         IBY_VALIDATIONSETS_PUB.evaluateCondition(
1662             'UNIQUE_REMIT_ID_CODE',
1663             '+'||length(l_document_rec.unique_remit_id_code)||'+',
1664             'INSET',
1665             '+15+16+27+',
1666             null,
1667             l_valResult,
1668             l_docErrorRec);
1669 
1670         IF (l_valResult = FALSE) THEN
1671            IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
1672            l_valid := 1;
1673         END IF;
1674 
1675         -- Validate ESR number: case 3
1676         IBY_VALIDATIONSETS_PUB.evaluateCondition(
1677             'UNIQUE_REMIT_ID_CODE',
1678             l_document_rec.unique_remit_id_code,
1679             'DIGITSONLY',
1680             null,
1681             null,
1682             l_valResult,
1683             l_docErrorRec);
1684 
1685         IF (l_valResult = FALSE) THEN
1686            IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
1687            l_valid := 1;
1688         ELSE
1689            if length(l_document_rec.unique_remit_id_code) <> 15 then
1690               IBY_VALIDATIONSETS_PUB.evaluateCondition(
1691                   'UNIQUE_REMIT_ID_CODE',
1692                   l_document_rec.unique_remit_id_code,
1693                   'VALID_CH_ESR',
1694                   null,
1695                   null,
1696                   l_valResult,
1697                   l_docErrorRec);
1698 
1699               IF (l_valResult = FALSE) THEN
1700                  IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
1701                  l_valid := 1;
1702               END IF;
1703 
1704            end if;
1705         END IF;
1706 
1707         -- Validate invoice amount
1708         IBY_VALIDATIONSETS_PUB.evaluateCondition(
1709             'DOCUMENT_AMOUNT',
1710             l_document_rec.document_amount,
1711             'GRTEQUAL',
1712             null,
1713             0,
1714             l_valResult,
1715             l_docErrorRec);
1716 
1717         IF (l_valResult = FALSE) THEN
1718            IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
1719            l_valid := 1;
1720         END IF;
1721 
1722      elsif l_document_rec.delivery_channel_code = 'CH_BANK' then -- Bug 6269371
1723 
1724         -- Validate payment currency
1725         IBY_VALIDATIONSETS_PUB.evaluateCondition(
1726             'DOCUMENT_PAY_CURRENCY',
1727             l_document_rec.document_pay_currency,
1728             'STRIS',
1729             'CHF',
1730             null,
1731             l_valResult,
1732             l_docErrorRec);
1733 
1734         IF (l_valResult = FALSE) THEN
1735            IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
1736            l_valid := 1;
1737         END IF;
1738 
1739      else
1740         null;
1741      end if;
1742 
1743      -- Validate ESR number for non-ESR payments
1744      if l_document_rec.delivery_channel_code <> 'CH_ESR' then -- Bug 6269371
1745         IBY_VALIDATIONSETS_PUB.evaluateCondition(
1746             'UNIQUE_REMIT_ID_CODE',
1747             trim(l_document_rec.unique_remit_id_code),
1748             'ISNULL',
1749             null,
1750             null,
1751             l_valResult,
1752             l_docErrorRec);
1753 
1754         IF (l_valResult = FALSE) THEN
1755            IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
1756            l_valid := 1;
1757         END IF;
1758      end if;
1759 
1760      -- Validate invoice number
1761      -- Not coded. To be handled in a separate validation set for char set.
1762 
1763      -- Validate bank account type for SAD payments
1764      -- Ignore: SAD format is obsolete.
1765 
1766      -- Insert errors into IBY_TRANSACTION_ERRORS
1767      IF (l_valid = 1) THEN
1768         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
1769      END IF;
1770 
1771      -- Return the validation result
1772      x_result := l_valid;
1773 
1774  END CH_EFT_GEN_DOC;
1775 
1776   /*--------------------------------------------------------------------
1777   | NAME:
1778   |     CITI_DE_EFT_DOM_PAYEE
1779   |
1780   | PURPOSE:
1781   |     Citibank German domestic EFT payee validation
1782   |
1783   | PARAMETERS:
1784   |     IN
1785   |
1786   |
1787   |     OUT
1788   |
1789   |
1790   | RETURNS:
1791   |
1792   | NOTES:
1793   |
1794   *---------------------------------------------------------------------*/
1795   PROCEDURE CITI_DE_EFT_DOM_PAYEE (
1796       p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
1797       p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
1798       p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
1799       p_is_online_val      IN VARCHAR2,
1800       x_result             OUT NOCOPY NUMBER)
1801   IS
1802 
1803   l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
1804   l_valResult BOOLEAN;
1805   l_valid NUMBER := 0;
1806   l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
1807   l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
1808 
1809   BEGIN
1810 
1811       -- Initializing the document record
1812       IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
1813 
1814       l_docErrorRec.validation_set_code := p_validation_set_code;
1815       l_docErrorRec.transaction_id := p_document_id;
1816       l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
1817       l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
1818       l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
1819       l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
1820 
1821       -- Validate target name
1822      IBY_VALIDATIONSETS_PUB.evaluateCondition(
1823          'PAYEE_PARTY_NAME',
1824          l_document_rec.payee_party_name,
1825          'MAXLENGTH',
1826          null,
1827          27,
1828          l_valResult,
1829          l_docErrorRec);
1830 
1831      IF (l_valResult = FALSE) THEN
1832         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
1833         l_valid := 1;
1834      END IF;
1835 
1836       -- Validate target bank account number
1837       -- by CE
1838 
1839       -- Validate target bank country code
1840       IBY_VALIDATIONSETS_PUB.evaluateCondition(
1841           'EXT_BANK_BRANCH_COUNTRY',
1842           l_document_rec.ext_bank_branch_country,
1843           'STRIS',
1844           'DE',
1845           null,
1846           l_valResult,
1847           l_docErrorRec);
1848 
1849       IF (l_valResult = FALSE) THEN
1850          IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
1851          l_valid := 1;
1852       END IF;
1853 
1854       -- Validate target bank code
1855       IBY_VALIDATIONSETS_PUB.evaluateCondition(
1856           'EXT_BANK_BRANCH_NUM',
1857           l_document_rec.ext_bank_branch_num,
1858           'MAXLENGTH',
1859           null,
1860           8,
1861           l_valResult,
1862           l_docErrorRec);
1863 
1864       IF (l_valResult = FALSE) THEN
1865          IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
1866          l_valid := 1;
1867       END IF;
1868 
1869       -- Inserting errors into IBY_TRANSACTION_ERRORS
1870       IF (l_valid = 1) THEN
1871          IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
1872       END IF;
1873 
1874       -- Return the Validation Result
1875       x_result := l_valid;
1876 
1877   END CITI_DE_EFT_DOM_PAYEE;
1878 
1879  /*--------------------------------------------------------------------
1880  | NAME:
1881  |     CITI_DE_EFT_DOM_DOC
1882  |
1883  | PURPOSE:
1884  |     Citibank German domestic EFT document validation
1885  |
1886  | PARAMETERS:
1887  |     IN
1888  |
1889  |
1890  |     OUT
1891  |
1892  |
1893  | RETURNS:
1894  |
1895  | NOTES:
1896  |
1897  *---------------------------------------------------------------------*/
1898  PROCEDURE CITI_DE_EFT_DOM_DOC (
1899      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
1900      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
1901      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
1902      p_is_online_val      IN VARCHAR2,
1903      x_result             OUT NOCOPY NUMBER)
1904  IS
1905 
1906  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
1907  l_valResult BOOLEAN;
1908  l_valid NUMBER := 0;
1909  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
1910  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
1911 
1912  BEGIN
1913 
1914      -- Initializing the document record
1915      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
1916 
1917      l_docErrorRec.validation_set_code := p_validation_set_code;
1918      l_docErrorRec.transaction_id := p_document_id;
1919      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
1920      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
1921      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
1922      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
1923 
1924      -- Validate transaction code
1925      IBY_VALIDATIONSETS_PUB.evaluateCondition(
1926          'DELIVERY_CHANNEL_CODE',
1927          l_document_rec.delivery_channel_code,
1928          'INDELIV',
1929          'DE',
1930          null,
1931          l_valResult,
1932          l_docErrorRec);
1933 
1934      IF (l_valResult = FALSE) THEN
1935         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
1936         l_valid := 1;
1937      END IF;
1938 
1939      -- Inserting errors into IBY_TRANSACTION_ERRORS
1940      IF (l_valid = 1) THEN
1941         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
1942      END IF;
1943 
1944      -- Return the Validation Result
1945      x_result := l_valid;
1946 
1947  END CITI_DE_EFT_DOM_DOC;
1948 
1949  /*--------------------------------------------------------------------
1950  | NAME:
1951  |     DE_EFT_DOM_INTERNAL_BANK
1952  |
1953  | PURPOSE:
1954  |     German domestic EFT internal bank validation
1955  |
1956  | PARAMETERS:
1957  |     IN
1958  |
1959  |
1960  |     OUT
1961  |
1962  |
1963  | RETURNS:
1964  |
1965  | NOTES:
1966  |
1967  *---------------------------------------------------------------------*/
1968  PROCEDURE DE_EFT_DOM_INTERNAL_BANK (
1969      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
1970      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
1971      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
1972      p_is_online_val      IN VARCHAR2,
1973      x_result             OUT NOCOPY NUMBER)
1974  IS
1975 
1976  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
1977  l_valResult BOOLEAN;
1978  l_valid NUMBER := 0;
1979  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
1980  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
1981 
1982  BEGIN
1983 
1984      -- Initializing the document record
1985      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
1986 
1987      l_docErrorRec.validation_set_code := p_validation_set_code;
1988      l_docErrorRec.transaction_id := p_document_id;
1989      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
1990      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
1991      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
1992      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
1993 
1994      -- Validate user EFT number
1995      IBY_VALIDATIONSETS_PUB.evaluateCondition(
1996          'INT_EFT_USER_NUMBER',
1997          l_document_rec.int_eft_user_number,
1998          'EXACTLENGTH',
1999          10,
2000          null,
2001          l_valResult,
2002          l_docErrorRec);
2003 
2004      IF (l_valResult = FALSE) THEN
2005         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
2006         l_valid := 1;
2007      END IF;
2008 
2009      -- Validate user bank account number
2010      -- by CE
2011 
2012      -- Validate user bank BLZ
2013      IBY_VALIDATIONSETS_PUB.evaluateCondition(
2014          'INT_BANK_BRANCH_NUM',
2015          l_document_rec.int_bank_branch_num,
2016          'EXACTLENGTH',
2017          8,
2018          null,
2019          l_valResult,
2020          l_docErrorRec);
2021 
2022      IF (l_valResult = FALSE) THEN
2023         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
2024         l_valid := 1;
2025      END IF;
2026 
2027      IBY_VALIDATIONSETS_PUB.evaluateCondition(
2028          'INT_BANK_BRANCH_NUM',
2029          '+'||substr(l_document_rec.int_bank_branch_num, 1, 1)||'+',
2030          'NOTINSET',
2031          '+0+9+',
2032          null,
2033          l_valResult,
2034          l_docErrorRec);
2035 
2036      IF (l_valResult = FALSE) THEN
2037         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
2038         l_valid := 1;
2039      END IF;
2040 
2041      -- Inserting errors into IBY_TRANSACTION_ERRORS
2042      IF (l_valid = 1) THEN
2043         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
2044      END IF;
2045 
2046      -- Return the Validation Result
2047      x_result := l_valid;
2048 
2049  END DE_EFT_DOM_INTERNAL_BANK;
2050 
2051  /*--------------------------------------------------------------------
2052  | NAME:
2053  |     DE_EFT_DOM_PAYER
2054  |
2055  | PURPOSE:
2056  |     German domestic EFT payer validation
2057  |
2058  | PARAMETERS:
2059  |     IN
2060  |
2061  |
2062  |     OUT
2063  |
2064  |
2065  | RETURNS:
2066  |
2067  | NOTES:
2068  |
2069  *---------------------------------------------------------------------*/
2070  PROCEDURE DE_EFT_DOM_PAYER (
2071      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
2072      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
2073      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
2074      p_is_online_val      IN VARCHAR2,
2075      x_result             OUT NOCOPY NUMBER)
2076  IS
2077 
2078  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
2079  l_valResult BOOLEAN;
2080  l_valid NUMBER := 0;
2081  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
2082  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
2083 
2084  BEGIN
2085 
2086      -- Initializing the document record
2087      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
2088 
2089      l_docErrorRec.validation_set_code := p_validation_set_code;
2090      l_docErrorRec.transaction_id := p_document_id;
2091      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
2092      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
2093      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
2094      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
2095 
2096      -- Validate location description for organization ID
2097      IBY_VALIDATIONSETS_PUB.evaluateCondition(
2098          'PAYER_LE_NANE',
2099          l_document_rec.payer_le_name,
2100          'NOTNULL',
2101          null,
2102          null,
2103          l_valResult,
2104          l_docErrorRec);
2105 
2106      IF (l_valResult = FALSE) THEN
2107         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
2108         l_valid := 1;
2109      END IF;
2110 
2111      -- Inserting errors into IBY_TRANSACTION_ERRORS
2112      IF (l_valid = 1) THEN
2113         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
2114      END IF;
2115 
2116      -- Return the Validation Result
2117      x_result := l_valid;
2118 
2119  END DE_EFT_DOM_PAYER;
2120 
2121 /*--------------------------------------------------------------------
2122  | NAME:
2123  |     DE_EFT_DOM_PAYEE
2124  |
2125  | PURPOSE:
2126  |     German domestic EFT payee validation
2127  |
2128  | PARAMETERS:
2129  |     IN
2130  |
2131  |
2132  |     OUT
2133  |
2134  |
2135  | RETURNS:
2136  |
2137  | NOTES:
2138  |
2139  *---------------------------------------------------------------------*/
2140  PROCEDURE DE_EFT_DOM_PAYEE (
2141      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
2142      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
2143      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
2144      p_is_online_val      IN VARCHAR2,
2145      x_result             OUT NOCOPY NUMBER)
2146  IS
2147 
2148  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
2149  l_valResult BOOLEAN;
2150  l_valid NUMBER := 0;
2151  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
2152  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
2153 
2154  BEGIN
2155 
2156      -- Initializing the document record
2157      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
2158 
2159      l_docErrorRec.validation_set_code := p_validation_set_code;
2160      l_docErrorRec.transaction_id := p_document_id;
2161      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
2162      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
2163      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
2164      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
2165 
2166      -- Validate customer/supplier bank name
2167      IBY_VALIDATIONSETS_PUB.evaluateCondition(
2168          'EXT_BANK_ACC_NAME',
2169          l_document_rec.ext_bank_acc_name,
2170          'NOTNULL',
2171          null,
2172          null,
2173          l_valResult,
2174          l_docErrorRec);
2175 
2176      IF (l_valResult = FALSE) THEN
2177         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
2178         l_valid := 1;
2179      END IF;
2180 
2181      -- Validate customer/supplier bank account number
2182      -- by CE
2183 
2184      -- Validate customer/supplier bank BLZ
2185      IBY_VALIDATIONSETS_PUB.evaluateCondition(
2186          'EXT_BANK_BRANCH_NUM',
2187          l_document_rec.ext_bank_branch_num,
2188          'EXACTLENGTH',
2189          8,
2190          null,
2191          l_valResult,
2192          l_docErrorRec);
2193 
2194      IF (l_valResult = FALSE) THEN
2195         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
2196         l_valid := 1;
2197      END IF;
2198 
2199      IBY_VALIDATIONSETS_PUB.evaluateCondition(
2200          'EXT_BANK_BRANCH_NUM',
2201          '+'||substr(l_document_rec.ext_bank_branch_num, 1, 1)||'+',
2202          'NOTINSET',
2203          '+0+9+',
2204          null,
2205          l_valResult,
2206          l_docErrorRec);
2207 
2208      IF (l_valResult = FALSE) THEN
2209         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
2210         l_valid := 1;
2211      END IF;
2212 
2213      -- Inserting errors into IBY_TRANSACTION_ERRORS
2214      IF (l_valid = 1) THEN
2215         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
2216      END IF;
2217 
2218      -- Return the Validation Result
2219      x_result := l_valid;
2220 
2221  END DE_EFT_DOM_PAYEE;
2222 
2223 /*--------------------------------------------------------------------
2224  | NAME:
2225  |     P_DE_EFT_DOM_PMT
2226  |
2227  | PURPOSE:
2228  |    German domestic EFT payment validation
2229  |
2230  | PARAMETERS:
2231  |     IN
2232  |
2233  |
2234  |     OUT
2235  |
2236  |
2237  | RETURNS:
2238  |
2239  | NOTES:
2240  |
2241  *---------------------------------------------------------------------*/
2242  PROCEDURE P_DE_EFT_DOM_PMT (
2243      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
2244      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
2245      p_payment_id         IN IBY_PAYMENTS_ALL.payment_id%type,
2246      p_is_online_val      IN VARCHAR2,
2247      x_result             OUT NOCOPY NUMBER)
2248  IS
2249 
2250  l_payment_rec IBY_VALIDATIONSETS_PUB.paymentRecType;
2251  l_valResult BOOLEAN;
2252  l_valid NUMBER := 0;
2253  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
2254  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
2255 
2256  BEGIN
2257 
2258      -- Initializing the payment record
2259      IBY_VALIDATIONSETS_PUB.initPaymentData(p_payment_id,l_payment_rec);
2260 
2261      l_docErrorRec.validation_set_code := p_validation_set_code;
2262      l_docErrorRec.transaction_id := p_payment_id;
2263      l_docErrorRec.transaction_type := 'PAYMENT';
2264      l_docErrorRec.calling_app_doc_unique_ref1 := p_payment_id;
2265 
2266      -- Validate payment amount
2267      IBY_VALIDATIONSETS_PUB.evaluateCondition(
2268          'PMT_AMOUNT',
2269          l_payment_rec.pmt_amount,
2270          'NOTEQUALTO',
2271          null,
2272          0,
2273          l_valResult,
2274          l_docErrorRec);
2275 
2276      IF (l_valResult = FALSE) THEN
2277         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
2278         l_valid := 1;
2279      END IF;
2280 
2281      -- Inserting errors into IBY_TRANSACTION_ERRORS
2282      IF (l_valid = 1) THEN
2283         IBY_VALIDATIONSETS_PUB.insert_transaction_errors('N',l_docErrorTab);
2284      END IF;
2285 
2286      -- Return the Validation Result
2287      x_result := l_valid;
2288 
2289  END P_DE_EFT_DOM_PMT;
2290 
2291 /*--------------------------------------------------------------------
2292  | NAME:
2293  |     DE_EFT_INT_INTERNAL_BANK
2294  |
2295  | PURPOSE:
2296  |     German international EFT internal bank validation
2297  |
2298  | PARAMETERS:
2299  |     IN
2300  |
2301  |
2302  |     OUT
2303  |
2304  |
2305  | RETURNS:
2306  |
2307  | NOTES:
2308  |
2309  *---------------------------------------------------------------------*/
2310  PROCEDURE DE_EFT_INT_INTERNAL_BANK (
2311      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
2312      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
2313      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
2314      p_is_online_val      IN VARCHAR2,
2315      x_result             OUT NOCOPY NUMBER)
2316  IS
2317 
2318  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
2319  l_valResult BOOLEAN;
2320  l_valid NUMBER := 0;
2321  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
2322  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
2323 
2324  BEGIN
2325 
2326      -- Initializing the document record
2327      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
2328 
2329      l_docErrorRec.validation_set_code := p_validation_set_code;
2330      l_docErrorRec.transaction_id := p_document_id;
2331      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
2332      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
2333      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
2334      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
2335 
2336      -- Validate user EFT number
2337      IBY_VALIDATIONSETS_PUB.evaluateCondition(
2338          'INT_EFT_USER_NUMBER',
2339          l_document_rec.int_eft_user_number,
2340          'EXACTLENGTH',
2341          null,
2342          10,
2343          l_valResult,
2344          l_docErrorRec);
2345 
2346      IF (l_valResult = FALSE) THEN
2347         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
2348         l_valid := 1;
2349      END IF;
2350 
2351      -- Validate user bank account number
2352      -- by CE
2353 
2354      -- Validate user bank BLZ
2355      IBY_VALIDATIONSETS_PUB.evaluateCondition(
2356          'INT_BANK_BRANCH_NUM',
2357          l_document_rec.int_bank_branch_num,
2358          'NOTNULL',
2359          null,
2360          null,
2361          l_valResult,
2362          l_docErrorRec);
2363 
2364      IF (l_valResult = FALSE) THEN
2365         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
2366         l_valid := 1;
2367      END IF;
2368 
2369      IBY_VALIDATIONSETS_PUB.evaluateCondition(
2370          'INT_BANK_BRANCH_NUM',
2371          '+'||substr(l_document_rec.int_bank_branch_num, 1, 1)||'+',
2372          'NOTINSET',
2373          '+0+9+',
2374          null,
2375          l_valResult,
2376          l_docErrorRec);
2377 
2378      IF (l_valResult = FALSE) THEN
2379         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
2380         l_valid := 1;
2381      END IF;
2382 
2383      -- Inserting errors into IBY_TRANSACTION_ERRORS
2384      IF (l_valid = 1) THEN
2385         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
2386      END IF;
2387 
2388      -- Return the Validation Result
2389      x_result := l_valid;
2390 
2391  END DE_EFT_INT_INTERNAL_BANK;
2392 
2393 /*--------------------------------------------------------------------
2394  | NAME:
2395  |     DE_EFT_INT_PAYEE
2396  |
2397  | PURPOSE:
2398  |    German international EFT payee validation
2399  |
2400  | PARAMETERS:
2401  |     IN
2402  |
2403  |
2404  |     OUT
2405  |
2406  |
2407  | RETURNS:
2408  |
2409  | NOTES:
2410  |
2411  *---------------------------------------------------------------------*/
2412  PROCEDURE DE_EFT_INT_PAYEE (
2413      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
2414      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
2415      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
2416      p_is_online_val      IN VARCHAR2,
2417      x_result             OUT NOCOPY NUMBER)
2418  IS
2419 
2420  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
2421  l_valResult BOOLEAN;
2422  l_valid NUMBER := 0;
2423  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
2424  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
2425 
2426  BEGIN
2427 
2428      -- Initializing the document record
2429      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
2430 
2431      l_docErrorRec.validation_set_code := p_validation_set_code;
2432      l_docErrorRec.transaction_id := p_document_id;
2433      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
2434      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
2435      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
2436      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
2437 
2438      -- Validate customer/supplier bank name
2439      IBY_VALIDATIONSETS_PUB.evaluateCondition(
2440          'EXT_BANK_ACC_NAME',
2441          l_document_rec.ext_bank_acc_name,
2442          'NOTNULL',
2443          null,
2444          null,
2445          l_valResult,
2446          l_docErrorRec);
2447 
2448      IF (l_valResult = FALSE) THEN
2449         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
2450         l_valid := 1;
2451      END IF;
2452 
2453      -- Validate customer/supplier bank account number
2454      -- by CE
2455 
2456      -- Validate document country
2457      IBY_VALIDATIONSETS_PUB.evaluateCondition(
2458          'PAYEE_PARTY_SITE_COUNTRY',
2459          l_document_rec.payee_party_country,
2460          'STRISNOT',
2461          l_document_rec.payer_le_country,
2462          null,
2463          l_valResult,
2464          l_docErrorRec);
2465 
2466      IF (l_valResult = FALSE) THEN
2467         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
2468         l_valid := 1;
2469      END IF;
2470 
2471      -- Inserting errors into IBY_TRANSACTION_ERRORS
2472      IF (l_valid = 1) THEN
2473         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
2474      END IF;
2475 
2476      -- Return the Validation Result
2477      x_result := l_valid;
2478 
2479  END DE_EFT_INT_PAYEE;
2480 
2481 /*--------------------------------------------------------------------
2482  | NAME:
2483  |     DE_EFT_INT_PAYER
2484  |
2485  | PURPOSE:
2486  |     German international EFT payer validation
2487  |
2488  | PARAMETERS:
2489  |     IN
2490  |
2491  |
2492  |     OUT
2493  |
2494  |
2495  | RETURNS:
2496  |
2497  | NOTES:
2498  |
2499  *---------------------------------------------------------------------*/
2500  PROCEDURE DE_EFT_INT_PAYER (
2501      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
2502      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
2503      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
2504      p_is_online_val      IN VARCHAR2,
2505      x_result             OUT NOCOPY NUMBER)
2506  IS
2507 
2508  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
2509  l_valResult BOOLEAN;
2510  l_valid NUMBER := 0;
2511  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
2512  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
2513 
2514  BEGIN
2515 
2516      -- Initializing the document record
2517      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
2518 
2519      l_docErrorRec.validation_set_code := p_validation_set_code;
2520      l_docErrorRec.transaction_id := p_document_id;
2521      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
2522      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
2523      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
2524      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
2525 
2526     /*-------------------------------------------------------------*/
2527 
2528     /*
2529      * Fix for bug 5439146:
2530      *
2531      * Germany EFT company number and LZB area validations
2532      * fall under the category of payment system specific
2533      * validations.
2534      *
2535      * Currently, the area of payment system specific
2536      * validations is under re-design. This is because
2537      * each payment system can be linked to a variable number
2538      * of validations, so a general approachs needs to
2539      * be defined on how these validations should be
2540      * implemented and how a meaningful error message
2541      * can be returned to the user.
2542      *
2543      * Until then comment out these validations.
2544      */
2545 
2546     /*
2547      -- Validate EFT company number
2548      IBY_VALIDATIONSETS_PUB.evaluateCondition(
2549          'INT_BANK_ASSIGNED_ID2',
2550          l_document_rec.int_bank_assigned_id2,
2551          'NOTNULL',
2552          null,
2553          null,
2554          l_valResult,
2555          l_docErrorRec);
2556 
2557          IF (l_valResult = FALSE) THEN
2558             IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
2559             l_valid := 1;
2560          END IF;
2561 
2562      IBY_VALIDATIONSETS_PUB.evaluateCondition(
2563          'INT_BANK_ASSIGNED_ID2',
2564          l_document_rec.int_bank_assigned_id2,
2565          'MAXLENGTH',
2566          null,
2567          8,
2568          l_valResult,
2569          l_docErrorRec);
2570 
2571          IF (l_valResult = FALSE) THEN
2572             IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
2573             l_valid := 1;
2574          END IF;
2575 
2576      -- Validate EFT LZB area
2577      IBY_VALIDATIONSETS_PUB.evaluateCondition(
2578          'INT_BANK_ASSIGNED_ID1',
2579          l_document_rec.int_bank_assigned_id1,
2580          'NOTNULL',
2581          null,
2582          null,
2583          l_valResult,
2584          l_docErrorRec);
2585 
2586          IF (l_valResult = FALSE) THEN
2587             IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
2588             l_valid := 1;
2589          END IF;
2590 
2591      IBY_VALIDATIONSETS_PUB.evaluateCondition(
2592          'INT_BANK_ASSIGNED_ID1',
2593          l_document_rec.int_bank_assigned_id1,
2594          'MAXLENGTH',
2595          null,
2596          2,
2597          l_valResult,
2598          l_docErrorRec);
2599 
2600          IF (l_valResult = FALSE) THEN
2601             IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
2602             l_valid := 1;
2603          END IF;
2604 
2605      -- Inserting errors into IBY_TRANSACTION_ERRORS
2606      IF (l_valid = 1) THEN
2607         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
2608      END IF;
2609     */
2610     /*-------------------------------------------------------------*/
2611 
2612      -- Return the Validation Result
2613      x_result := l_valid;
2614 
2615  END DE_EFT_INT_PAYER;
2616 
2617 /*--------------------------------------------------------------------
2618  | NAME:
2619  |     P_DE_EFT_INT_PMT
2620  |
2621  | PURPOSE:
2622  |     German international EFT payment validation
2623  |
2624  | PARAMETERS:
2625  |     IN
2626  |
2627  |
2628  |     OUT
2629  |
2630  |
2631  | RETURNS:
2632  |
2633  | NOTES:
2634  |
2635  *---------------------------------------------------------------------*/
2636  PROCEDURE P_DE_EFT_INT_PMT (
2637      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
2638      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
2639      p_payment_id         IN IBY_PAYMENTS_ALL.payment_id%type,
2640      p_is_online_val      IN VARCHAR2,
2641      x_result             OUT NOCOPY NUMBER)
2642  IS
2643 
2644  l_payment_rec IBY_VALIDATIONSETS_PUB.paymentRecType;
2645  l_valResult BOOLEAN;
2646  l_valid NUMBER := 0;
2647  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
2648  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
2649 
2650  BEGIN
2651 
2652      -- Initializing the payment record
2653      IBY_VALIDATIONSETS_PUB.initPaymentData(p_payment_id,l_payment_rec);
2654 
2655      l_docErrorRec.validation_set_code := p_validation_set_code;
2656      l_docErrorRec.transaction_id := p_payment_id;
2657      l_docErrorRec.transaction_type := 'PAYMENT';
2658      l_docErrorRec.calling_app_doc_unique_ref1 := p_payment_id;
2659 
2660      -- Validate payment amount
2661      IBY_VALIDATIONSETS_PUB.evaluateCondition(
2662          'PMT_AMOUNT',
2663          l_payment_rec.pmt_amount,
2664          'NOTEQUALTO',
2665          null,
2666          0,
2667          l_valResult,
2668          l_docErrorRec);
2669 
2670      IF (l_valResult = FALSE) THEN
2671         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
2672         l_valid := 1;
2673      END IF;
2674 
2675      -- Validate document country
2676      -- Not coded. The validation has been moved to the document level at payee validation.
2677 
2678      -- Inserting errors into IBY_TRANSACTION_ERRORS
2679      -- The first parameter p_is_online_val takes hardcoded value 'N'.
2680      IF (l_valid = 1) THEN
2681         IBY_VALIDATIONSETS_PUB.insert_transaction_errors('N',l_docErrorTab);
2682      END IF;
2683 
2684      -- Return the Validation Result
2685      x_result := l_valid;
2686 
2687  END P_DE_EFT_INT_PMT;
2688 
2689 /*--------------------------------------------------------------------
2690  | NAME:
2691  |     DK_EFT_DOM_DOC
2692  |
2693  | PURPOSE:
2694  |     Danish domestic EFT document validation
2695  |
2696  | PARAMETERS:
2697  |     IN
2698  |
2699  |
2700  |     OUT
2701  |
2702  |
2703  | RETURNS:
2704  |
2705  | NOTES:
2706  |    Bug 5569624: Added new document level validation set for Denmark
2707  |
2708  *---------------------------------------------------------------------*/
2709  PROCEDURE DK_EFT_DOM_DOC (
2710      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
2711      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
2712      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
2713      p_is_online_val      IN VARCHAR2,
2714      x_result             OUT NOCOPY NUMBER)
2715  IS
2716 
2717  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
2718  l_valResult BOOLEAN;
2719  l_valid NUMBER := 0;
2720  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
2721  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
2722 
2723  BEGIN
2724 
2725      -- Initializing the payment record
2726      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
2727 
2728      l_docErrorRec.validation_set_code := p_validation_set_code;
2729      l_docErrorRec.transaction_id := p_document_id;
2730      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
2731      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
2732      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
2733      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
2734 
2735      -- Validate transaction code
2736      validate_uri_using_modulus10(
2737          l_document_rec.unique_remit_id_code,
2738          l_valResult,
2739          l_docErrorRec);
2740 
2741      IF (l_valResult = FALSE) THEN
2742         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
2743         l_valid := 1;
2744      END IF;
2745 
2746      -- Inserting errors into IBY_TRANSACTION_ERRORS
2747      IF (l_valid = 1) THEN
2748         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
2749      END IF;
2750 
2751      -- Return the Validation Result
2752      x_result := l_valid;
2753 
2754  END DK_EFT_DOM_DOC;
2755 
2756 /*--------------------------------------------------------------------
2757  | NAME:
2758  |     CITI_DK_EFT_DOM_PAYEE
2759  |
2760  | PURPOSE:
2761  |     Citibank Danish domestic EFT payee validation
2762  |
2763  | PARAMETERS:
2764  |     IN
2765  |
2766  |
2767  |     OUT
2768  |
2769  |
2770  | RETURNS:
2771  |
2772  | NOTES:
2773  |
2774  *---------------------------------------------------------------------*/
2775  PROCEDURE CITI_DK_EFT_DOM_PAYEE (
2776      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
2777      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
2778      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
2779      p_is_online_val      IN VARCHAR2,
2780      x_result             OUT NOCOPY NUMBER)
2781  IS
2782 
2783  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
2784  l_valResult BOOLEAN;
2785  l_valid NUMBER := 0;
2786  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
2787  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
2788 
2789  BEGIN
2790 
2791      -- Initializing the payment record
2792      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
2793 
2794      l_docErrorRec.validation_set_code := p_validation_set_code;
2795      l_docErrorRec.transaction_id := p_document_id;
2796      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
2797      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
2798      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
2799      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
2800 
2801      -- Validate target bank account number
2802      IBY_VALIDATIONSETS_PUB.evaluateCondition(
2803          'EXT_BANK_NUM',
2804          l_document_rec.ext_bank_num,
2805          'EXACTLENGTH',
2806          null,
2807          4,
2808          l_valResult,
2809          l_docErrorRec);
2810 
2811      IF (l_valResult = FALSE) THEN
2812         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
2813         l_valid := 1;
2814      END IF;
2815 
2816      IBY_VALIDATIONSETS_PUB.evaluateCondition(
2817          'EXT_BANK_ACC_NUM',
2818          l_document_rec.ext_bank_acc_num,
2819          'MAXLENGTH',
2820          null,
2821          10,
2822          l_valResult,
2823          l_docErrorRec);
2824 
2825      IF (l_valResult = FALSE) THEN
2826         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
2827         l_valid := 1;
2828      END IF;
2829 
2830      -- Inserting errors into IBY_TRANSACTION_ERRORS
2831      IF (l_valid = 1) THEN
2832         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
2833      END IF;
2834 
2835      -- Return the Validation Result
2836      x_result := l_valid;
2837 
2838  END CITI_DK_EFT_DOM_PAYEE;
2839 
2840 /*--------------------------------------------------------------------
2841  | NAME:
2842  |     CITI_DK_EFT_DOM_DOC
2843  |
2844  | PURPOSE:
2845  |     Citibank Danish domestic EFT document validation
2846  |
2847  | PARAMETERS:
2848  |     IN
2849  |
2850  |
2851  |     OUT
2852  |
2853  |
2854  | RETURNS:
2855  |
2856  | NOTES:
2857  |
2858  *---------------------------------------------------------------------*/
2859  PROCEDURE CITI_DK_EFT_DOM_DOC (
2860      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
2861      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
2862      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
2863      p_is_online_val      IN VARCHAR2,
2864      x_result             OUT NOCOPY NUMBER)
2865  IS
2866 
2867  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
2868  l_valResult BOOLEAN;
2869  l_valid NUMBER := 0;
2870  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
2871  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
2872 
2873  BEGIN
2874 
2875      -- Initializing the payment record
2876      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
2877 
2878      l_docErrorRec.validation_set_code := p_validation_set_code;
2879      l_docErrorRec.transaction_id := p_document_id;
2880      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
2881      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
2882      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
2883      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
2884 
2885      -- Validate transaction code
2886      IBY_VALIDATIONSETS_PUB.evaluateCondition(
2887          'DELIVERY_CHANNEL_CODE',
2888          l_document_rec.delivery_channel_code,
2889          'INDELIV',
2890          'DK',
2891          null,
2892          l_valResult,
2893          l_docErrorRec);
2894 
2895      IF (l_valResult = FALSE) THEN
2896         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
2897         l_valid := 1;
2898      END IF;
2899 
2900      -- Inserting errors into IBY_TRANSACTION_ERRORS
2901      IF (l_valid = 1) THEN
2902         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
2903      END IF;
2904 
2905      -- Return the Validation Result
2906      x_result := l_valid;
2907 
2908  END CITI_DK_EFT_DOM_DOC;
2909 
2910 /*--------------------------------------------------------------------
2911  | NAME:
2912  |     P_CITI_DK_EFT_DOM_PMT
2913  |
2914  | PURPOSE:
2915  |     Citibank Danish domestic EFT payment validation
2916  |
2917  | PARAMETERS:
2918  |     IN
2919  |
2920  |
2921  |     OUT
2922  |
2923  |
2924  | RETURNS:
2925  |
2926  | NOTES:
2927  |
2928  *---------------------------------------------------------------------*/
2929  PROCEDURE P_CITI_DK_EFT_DOM_PMT (
2930      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
2931      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
2932      p_payment_id         IN IBY_PAYMENTS_ALL.payment_id%type,
2933      p_is_online_val      IN VARCHAR2,
2934      x_result             OUT NOCOPY NUMBER)
2935  IS
2936 
2937  l_payment_rec IBY_VALIDATIONSETS_PUB.paymentRecType;
2938  l_valResult BOOLEAN;
2939  l_valid NUMBER := 0;
2940  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
2941  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
2942 
2943  BEGIN
2944 
2945      -- Initializing the payment record
2946      IBY_VALIDATIONSETS_PUB.initPaymentData(p_payment_id,l_payment_rec);
2947 
2948      l_docErrorRec.validation_set_code := p_validation_set_code;
2949      l_docErrorRec.transaction_id := p_payment_id;
2950      l_docErrorRec.transaction_type := 'PAYMENT';
2951      l_docErrorRec.calling_app_doc_unique_ref1 := p_payment_id;
2952 
2953      -- Validate transaction reference
2954      IBY_VALIDATIONSETS_PUB.evaluateCondition(
2955          'PMT_ID',
2956          l_payment_rec.pmt_id,
2957          'MAXLENGTH',
2958          null,
2959          8,
2960          l_valResult,
2961          l_docErrorRec);
2962 
2963      IF (l_valResult = FALSE) THEN
2964         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
2965         l_valid := 1;
2966      END IF;
2967 
2968      -- Validate transaction amount
2969      IBY_VALIDATIONSETS_PUB.evaluateCondition(
2970          'PMT_AMOUNT',
2971          l_payment_rec.pmt_amount,
2972          'MAXLENGTH',
2973          null,
2974          12,
2975          l_valResult,
2976          l_docErrorRec);
2977 
2978      IF (l_valResult = FALSE) THEN
2979         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
2980         l_valid := 1;
2981      END IF;
2982 
2983      -- Validate transaction currency
2984      IBY_VALIDATIONSETS_PUB.evaluateCondition(
2985          'PMT_CURRENCY',
2986          nvl(l_payment_rec.pmt_currency, 'DKK'),
2987          'STRIS',
2988          'DKK',
2989          null,
2990          l_valResult,
2991          l_docErrorRec);
2992 
2993      IF (l_valResult = FALSE) THEN
2994         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
2995         l_valid := 1;
2996      END IF;
2997 
2998      -- Inserting errors into IBY_TRANSACTION_ERROR
2999      -- The first parameter p_is_online_val takes hardcoded value 'N'.
3000      IF (l_valid = 1) THEN
3001         IBY_VALIDATIONSETS_PUB.insert_transaction_errors('N',l_docErrorTab);
3002      END IF;
3003 
3004      -- Return the Validation Result
3005      x_result := l_valid;
3006 
3007  END P_CITI_DK_EFT_DOM_PMT;
3008 
3009 /*--------------------------------------------------------------------
3010  | NAME:
3011  |     CITI_ES_CHECK_DOM_PAYEE
3012  |
3013  | PURPOSE:
3014  |     Citibank Spanish domestic check payee validation
3015  |
3016  | PARAMETERS:
3017  |     IN
3018  |
3019  |
3020  |     OUT
3021  |
3022  |
3023  | RETURNS:
3024  |
3025  | NOTES:
3026  |
3027  *---------------------------------------------------------------------*/
3028  PROCEDURE CITI_ES_CHECK_DOM_PAYEE (
3029      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
3030      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
3031      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
3032      p_is_online_val      IN VARCHAR2,
3033      x_result             OUT NOCOPY NUMBER)
3034  IS
3035 
3036  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
3037  l_valResult BOOLEAN;
3038  l_valid NUMBER := 0;
3039  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
3040  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
3041 
3042  BEGIN
3043 
3044      -- Initializing the document record
3045      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
3046 
3047      l_docErrorRec.validation_set_code := p_validation_set_code;
3048      l_docErrorRec.transaction_id := p_document_id;
3049      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
3050      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
3051      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
3052      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
3053 
3054      -- Validate target name
3055      IBY_VALIDATIONSETS_PUB.evaluateCondition(
3056          'PAYEE_PARTY_NAME',
3057          l_document_rec.payee_party_name,
3058          'MAXLENGTH',
3059          null,
3060          35,
3061          l_valResult,
3062          l_docErrorRec);
3063 
3064      IF (l_valResult = FALSE) THEN
3065         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
3066         l_valid := 1;
3067      END IF;
3068 
3069      -- Validate target address line 1
3070      IBY_VALIDATIONSETS_PUB.evaluateCondition(
3071          'PAYEE_PARTY_SITE_ADDR1',
3072          l_document_rec.payee_party_addr1,
3073          'MAXLENGTH',
3074          null,
3075          35,
3076          l_valResult,
3077          l_docErrorRec);
3078 
3079      IF (l_valResult = FALSE) THEN
3080         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
3081         l_valid := 1;
3082      END IF;
3083 
3084      -- Validate target address line 2
3085      IBY_VALIDATIONSETS_PUB.evaluateCondition(
3086          'PAYEE_PARTY_SITE_CITY',
3087          l_document_rec.payee_party_city||l_document_rec.payee_party_postal,
3088          'MAXLENGTH',
3089          null,
3090          35,
3091          l_valResult,
3092          l_docErrorRec);
3093 
3094      IF (l_valResult = FALSE) THEN
3095         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
3096         l_valid := 1;
3097      END IF;
3098 
3099      -- Inserting errors into IBY_TRANSACTION_ERRORS
3100      IF (l_valid = 1) THEN
3101         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
3102      END IF;
3103 
3104      -- Return the Validation Result
3105      x_result := l_valid;
3106 
3107  END CITI_ES_CHECK_DOM_PAYEE;
3108 
3109 /*--------------------------------------------------------------------
3110  | NAME:
3111  |     P_CITI_ES_CHECK_DOM_PMT
3112  |
3113  | PURPOSE:
3114  |     Citibank Spanish domestic check payment validation
3115  |
3116  | PARAMETERS:
3117  |     IN
3118  |
3119  |
3120  |     OUT
3121  |
3122  |
3123  | RETURNS:
3124  |
3125  | NOTES:
3126  |
3127  *---------------------------------------------------------------------*/
3128  PROCEDURE P_CITI_ES_CHECK_DOM_PMT (
3129      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
3130      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
3131      p_payment_id         IN IBY_PAYMENTS_ALL.payment_id%type,
3132      p_is_online_val      IN VARCHAR2,
3133      x_result             OUT NOCOPY NUMBER)
3134  IS
3135 
3136  l_payment_rec IBY_VALIDATIONSETS_PUB.paymentRecType;
3137  l_valResult BOOLEAN;
3138  l_valid NUMBER := 0;
3139  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
3140  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
3141 
3142  BEGIN
3143 
3144      -- Initializing the payment record
3145      IBY_VALIDATIONSETS_PUB.initPaymentData(p_payment_id,l_payment_rec);
3146 
3147      l_docErrorRec.validation_set_code := p_validation_set_code;
3148      l_docErrorRec.transaction_id := p_payment_id;
3149      l_docErrorRec.transaction_type := 'PAYMENT';
3150      l_docErrorRec.calling_app_doc_unique_ref1 := p_payment_id;
3151 
3152      -- Validate transaction reference
3153      IBY_VALIDATIONSETS_PUB.evaluateCondition(
3154          'PMT_ID',
3155          l_payment_rec.pmt_id,
3156          'MAXLENGTH',
3157          null,
3158          12,
3159          l_valResult,
3160          l_docErrorRec);
3161 
3162      IF (l_valResult = FALSE) THEN
3163         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
3164         l_valid := 1;
3165      END IF;
3166 
3167      -- Inserting errors into IBY_TRANSACTION_ERRORS
3168      -- The first parameter p_is_online_val takes hardcoded value 'N'.
3169      IF (l_valid = 1) THEN
3170         IBY_VALIDATIONSETS_PUB.insert_transaction_errors('N',l_docErrorTab);
3171      END IF;
3172 
3173      -- Return the Validation Result
3174      x_result := l_valid;
3175 
3176  END P_CITI_ES_CHECK_DOM_PMT;
3177 
3178 /*--------------------------------------------------------------------
3179  | NAME:
3180  |     CITI_ES_EFT_DOM_PAYEE
3181  |
3182  | PURPOSE:
3183  |     Citibank Spanish domestic EFT payee validation
3184  |
3185  | PARAMETERS:
3186  |     IN
3187  |
3188  |
3189  |     OUT
3190  |
3191  |
3192  | RETURNS:
3193  |
3194  | NOTES:
3195  |
3196  *---------------------------------------------------------------------*/
3197  PROCEDURE CITI_ES_EFT_DOM_PAYEE (
3198      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
3199      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
3200      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
3201      p_is_online_val      IN VARCHAR2,
3202      x_result             OUT NOCOPY NUMBER)
3203  IS
3204 
3205  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
3206  l_valResult BOOLEAN;
3207  l_valid NUMBER := 0;
3208  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
3209  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
3210 
3211  BEGIN
3212 
3213      -- Initializing the document record
3214      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
3215 
3216      l_docErrorRec.validation_set_code := p_validation_set_code;
3217      l_docErrorRec.transaction_id := p_document_id;
3218      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
3219      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
3220      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
3221      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
3222 
3223      -- Validate target name
3224      IBY_VALIDATIONSETS_PUB.evaluateCondition(
3225          'PAYEE_PARTY_NAME',
3226          l_document_rec.payee_party_name,
3227          'MAXLENGTH',
3228          null,
3229          35,
3230          l_valResult,
3231          l_docErrorRec);
3232 
3233      IF (l_valResult = FALSE) THEN
3234         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
3235         l_valid := 1;
3236      END IF;
3237 
3238      -- Validate target address line 1
3239      IBY_VALIDATIONSETS_PUB.evaluateCondition(
3240          'PAYEE_PARTY_SITE_ADDR1',
3241          l_document_rec.payee_party_addr1,
3242          'MAXLENGTH',
3243          null,
3244          35,
3245          l_valResult,
3246          l_docErrorRec);
3247 
3248      IF (l_valResult = FALSE) THEN
3249         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
3250         l_valid := 1;
3251      END IF;
3252 
3253      -- Validate target address line 2
3254      IBY_VALIDATIONSETS_PUB.evaluateCondition(
3255          'PAYEE_PARTY_SITE_CITY',
3256          l_document_rec.payee_party_city||l_document_rec.payee_party_postal,
3257          'MAXLENGTH',
3258          null,
3259          35,
3260          l_valResult,
3261          l_docErrorRec);
3262 
3263      IF (l_valResult = FALSE) THEN
3264         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
3265         l_valid := 1;
3266      END IF;
3267 
3268      -- Validate target bank code
3269      -- by CE
3270 
3271      -- Validate target bank account number
3272      -- by CE
3273 
3274      -- Validate target bank branch code
3275      -- by CE
3276 
3277      -- Validate target bank country code
3278      IBY_VALIDATIONSETS_PUB.evaluateCondition(
3279          'EXT_BANK_BRANCH_COUNTRY',
3280          l_document_rec.ext_bank_branch_country,
3281          'STRIS',
3282          'ES',
3283          null,
3284          l_valResult,
3285          l_docErrorRec);
3286 
3287      IF (l_valResult = FALSE) THEN
3288         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
3289         l_valid := 1;
3290      END IF;
3291 
3292      -- Insert errors into IBY_TRANSACTION_ERRORS
3293      IF (l_valid = 1) THEN
3294         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
3295      END IF;
3296 
3297      -- Return the Validation Result
3298      x_result := l_valid;
3299 
3300  END CITI_ES_EFT_DOM_PAYEE;
3301 
3302 /*--------------------------------------------------------------------
3303  | NAME:
3304  |     CITI_ES_EFT_DOM_DOC
3305  |
3306  | PURPOSE:
3307  |     Citibank Spanish domestic EFT document validation
3308  |
3309  | PARAMETERS:
3310  |     IN
3311  |
3312  |
3313  |     OUT
3314  |
3315  |
3316  | RETURNS:
3317  |
3318  | NOTES:
3319  |
3320  *---------------------------------------------------------------------*/
3321  PROCEDURE CITI_ES_EFT_DOM_DOC (
3322      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
3323      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
3324      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
3325      p_is_online_val      IN VARCHAR2,
3326      x_result             OUT NOCOPY NUMBER)
3327  IS
3328 
3329  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
3330  l_valResult BOOLEAN;
3331  l_valid NUMBER := 0;
3332  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
3333  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
3334 
3335  BEGIN
3336 
3337      -- Initializing the document record
3338      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
3339 
3340      l_docErrorRec.validation_set_code := p_validation_set_code;
3341      l_docErrorRec.transaction_id := p_document_id;
3342      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
3343      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
3344      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
3345      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
3346 
3347      -- Validate transaction code
3348      IBY_VALIDATIONSETS_PUB.evaluateCondition(
3349          'DELIVERY_CHANNEL_CODE',
3350          l_document_rec.delivery_channel_code,
3351          'INDELIV',
3352          'ES',
3353          null,
3354          l_valResult,
3355          l_docErrorRec);
3356 
3357      IF (l_valResult = FALSE) THEN
3358         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
3359         l_valid := 1;
3360      END IF;
3361 
3362      -- Inserting errors into IBY_TRANSACTION_ERRORS
3363      IF (l_valid = 1) THEN
3364         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
3365      END IF;
3366 
3367      -- Return the Validation Result
3368      x_result := l_valid;
3369 
3370  END CITI_ES_EFT_DOM_DOC;
3371 
3372  /*--------------------------------------------------------------------
3373   | NAME:
3374   |     P_CITI_ES_EFT_DOM_PMT
3375   |
3376   | PURPOSE:
3377   |     Citibank Spanish domestic EFT payment validation
3378   |
3379   | PARAMETERS:
3380   |     IN
3381   |
3382   |
3383   |     OUT
3384   |
3385   |
3386   | RETURNS:
3387   |
3388   | NOTES:
3389   |
3390   *---------------------------------------------------------------------*/
3391   PROCEDURE P_CITI_ES_EFT_DOM_PMT (
3392       p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
3393       p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
3394       p_payment_id         IN IBY_PAYMENTS_ALL.payment_id%type,
3395       p_is_online_val      IN VARCHAR2,
3396       x_result             OUT NOCOPY NUMBER)
3397   IS
3398 
3399   l_payment_rec IBY_VALIDATIONSETS_PUB.paymentRecType;
3400   l_valResult BOOLEAN;
3401   l_valid NUMBER := 0;
3402   l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
3403   l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
3404 
3405   BEGIN
3406 
3407       -- Initializing the payment record
3408       IBY_VALIDATIONSETS_PUB.initPaymentData(p_payment_id,l_payment_rec);
3409 
3410       l_docErrorRec.validation_set_code := p_validation_set_code;
3411       l_docErrorRec.transaction_id := p_payment_id;
3412       l_docErrorRec.transaction_type := 'PAYMENT';
3413       l_docErrorRec.calling_app_doc_unique_ref1 := p_payment_id;
3414 
3415       -- Validate transaction reference
3416       IBY_VALIDATIONSETS_PUB.evaluateCondition(
3417           'PMT_ID',
3418           l_payment_rec.pmt_id,
3419           'MAXLENGTH',
3420           null,
3421           12,
3422           l_valResult,
3423           l_docErrorRec);
3424 
3425       IF (l_valResult = FALSE) THEN
3426          IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
3427          l_valid := 1;
3428       END IF;
3429 
3430       -- Inserting errors into IBY_TRANSACTION_ERRORS
3431       -- The first parameter p_is_online_val takes hardcoded value 'N'.
3432       IF (l_valid = 1) THEN
3433          IBY_VALIDATIONSETS_PUB.insert_transaction_errors('N',l_docErrorTab);
3434       END IF;
3435 
3436       -- Return the Validation Result
3437       x_result := l_valid;
3438 
3439  END P_CITI_ES_EFT_DOM_PMT;
3440 
3441 /*--------------------------------------------------------------------
3442  | NAME:
3443  |     CITI_FI_EFT_DOM_PAYEE
3444  |
3445  | PURPOSE:
3446  |     Citibank Finnish domestic EFT payee validation
3447  |
3448  | PARAMETERS:
3449  |     IN
3450  |
3451  |
3452  |     OUT
3453  |
3454  |
3455  | RETURNS:
3456  |
3457  | NOTES:
3458  |
3459  *---------------------------------------------------------------------*/
3460  PROCEDURE CITI_FI_EFT_DOM_PAYEE (
3461      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
3462      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
3463      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
3464      p_is_online_val      IN VARCHAR2,
3465      x_result             OUT NOCOPY NUMBER)
3466  IS
3467 
3468  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
3469  l_valResult BOOLEAN;
3470  l_valid NUMBER := 0;
3471  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
3472  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
3473 
3474  BEGIN
3475 
3476      -- Initializing the document record
3477      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
3478 
3479      l_docErrorRec.validation_set_code := p_validation_set_code;
3480      l_docErrorRec.transaction_id := p_document_id;
3481      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
3482      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
3483      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
3484      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
3485 
3486      -- Validate target name
3487      IBY_VALIDATIONSETS_PUB.evaluateCondition(
3488          'PAYEE_PARTY_NAME',
3489          l_document_rec.payee_party_name,
3490          'MAXLENGTH',
3491          null,
3492          30,
3493          l_valResult,
3494          l_docErrorRec);
3495 
3496      IF (l_valResult = FALSE) THEN
3497         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
3498         l_valid := 1;
3499      END IF;
3500 
3501      -- Validate target bank account number
3502      -- by CE
3503 
3504      -- Validate target bank country code
3505      IBY_VALIDATIONSETS_PUB.evaluateCondition(
3506          'EXT_BANK_BRANCH_COUNTRY',
3507          l_document_rec.ext_bank_branch_country,
3508          'STRIS',
3509          'FI',
3510          null,
3511          l_valResult,
3512          l_docErrorRec);
3513 
3514      IF (l_valResult = FALSE) THEN
3515         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
3516         l_valid := 1;
3517      END IF;
3518 
3519      -- Insert errors into IBY_TRANSACTION_ERRORS
3520      IF (l_valid = 1) THEN
3521         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
3522      END IF;
3523 
3524      -- Return the validation result
3525      x_result := l_valid;
3526 
3527  END CITI_FI_EFT_DOM_PAYEE;
3528 
3529 /*--------------------------------------------------------------------
3530  | NAME:
3531  |     CITI_FI_EFT_DOM_DOC
3532  |
3533  | PURPOSE:
3534  |     Citibank Finnish domestic EFT document validation
3535  |
3536  | PARAMETERS:
3537  |     IN
3538  |
3539  |
3540  |     OUT
3541  |
3542  |
3543  | RETURNS:
3544  |
3545  | NOTES:
3546  |
3547  *---------------------------------------------------------------------*/
3548  PROCEDURE CITI_FI_EFT_DOM_DOC (
3549      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
3550      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
3551      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
3552      p_is_online_val      IN VARCHAR2,
3553      x_result             OUT NOCOPY NUMBER)
3554  IS
3555 
3556  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
3557  l_valResult BOOLEAN;
3558  l_valid NUMBER := 0;
3559  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
3560  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
3561 
3562  BEGIN
3563 
3564      -- Initializing the document record
3565      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
3566 
3567      l_docErrorRec.validation_set_code := p_validation_set_code;
3568      l_docErrorRec.transaction_id := p_document_id;
3569      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
3570      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
3571      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
3572      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
3573 
3574      -- Validate transaction code
3575      IBY_VALIDATIONSETS_PUB.evaluateCondition(
3576          'DELIVERY_CHANNEL_CODE',
3577          l_document_rec.delivery_channel_code,
3578          'INDELIV',
3579          'FI',
3580          null,
3581          l_valResult,
3582          l_docErrorRec);
3583 
3584      IF (l_valResult = FALSE) THEN
3585         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
3586         l_valid := 1;
3587      END IF;
3588 
3589      -- Insert errors into IBY_TRANSACTION_ERRORS
3590      IF (l_valid = 1) THEN
3591         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
3592      END IF;
3593 
3594      -- Return the validation result
3595      x_result := l_valid;
3596 
3597  END CITI_FI_EFT_DOM_DOC;
3598 
3599 /*--------------------------------------------------------------------
3600  | NAME:
3601  |     P_CITI_FI_EFT_DOM_PMT
3602  |
3603  | PURPOSE:
3604  |     Citibank Finnish domestic EFT payment validation
3605  |
3606  | PARAMETERS:
3607  |     IN
3608  |
3609  |
3610  |     OUT
3611  |
3612  |
3613  | RETURNS:
3614  |
3615  | NOTES:
3616  |
3617  *---------------------------------------------------------------------*/
3618  PROCEDURE P_CITI_FI_EFT_DOM_PMT (
3619      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
3620      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
3621      p_payment_id         IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
3622      p_is_online_val      IN VARCHAR2,
3623      x_result             OUT NOCOPY NUMBER)
3624  IS
3625 
3626  l_payment_rec IBY_VALIDATIONSETS_PUB.paymentRecType;
3627  l_valResult BOOLEAN;
3628  l_valid NUMBER := 0;
3629  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
3630  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
3631 
3632  BEGIN
3633 
3634      -- Initializing the payment record
3635      IBY_VALIDATIONSETS_PUB.initPaymentData(p_payment_id,l_payment_rec);
3636 
3637      l_docErrorRec.validation_set_code := p_validation_set_code;
3638      l_docErrorRec.transaction_id := p_payment_id;
3639      l_docErrorRec.transaction_type := 'PAYMENT';
3640      l_docErrorRec.calling_app_doc_unique_ref1 := p_payment_id;
3641 
3642      -- Validate transaction amount
3643      IBY_VALIDATIONSETS_PUB.evaluateCondition(
3644          'PMT_AMOUNT',
3645          l_payment_rec.pmt_amount,
3646          'MAXLENGTH',
3647          null,
3648          12,
3649          l_valResult,
3650          l_docErrorRec);
3651 
3652      IF (l_valResult = FALSE) THEN
3653         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
3654         l_valid := 1;
3655      END IF;
3656 
3657      -- Inserting errors into IBY_TRANSACTION_ERRORS
3658      -- The first parameter p_is_online_val takes hardcoded value 'N'.
3659      IF (l_valid = 1) THEN
3660         IBY_VALIDATIONSETS_PUB.insert_transaction_errors('N',l_docErrorTab);
3661      END IF;
3662 
3663      -- Return the Validation Result
3664      x_result := l_valid;
3665 
3666  END P_CITI_FI_EFT_DOM_PMT;
3667 
3668 /*--------------------------------------------------------------------
3669  | NAME:
3670  |     CITI_FR_EFT_DOM_PAYEE
3671  |
3672  | PURPOSE:
3673  |     Citibank French domestic EFT payee validation
3674  |
3675  | PARAMETERS:
3676  |     IN
3677  |
3678  |
3679  |     OUT
3680  |
3681  |
3682  | RETURNS:
3683  |
3684  | NOTES:
3685  |
3686  *---------------------------------------------------------------------*/
3687  PROCEDURE CITI_FR_EFT_DOM_PAYEE (
3688      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
3689      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
3690      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
3691      p_is_online_val      IN VARCHAR2,
3692      x_result             OUT NOCOPY NUMBER)
3693  IS
3694 
3695  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
3696  l_valResult BOOLEAN;
3697  l_valid NUMBER := 0;
3698  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
3699  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
3700 
3701  BEGIN
3702 
3703      -- Initializing the document record
3704      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id, l_document_rec, p_is_online_val);
3705 
3706      l_docErrorRec.validation_set_code := p_validation_set_code;
3707      l_docErrorRec.transaction_id := p_document_id;
3708      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
3709      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
3710      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
3711      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
3712 
3713      -- Validate target name
3714      IBY_VALIDATIONSETS_PUB.evaluateCondition(
3715          'PAYEE_PARTY_NAME',
3716          l_document_rec.payee_party_name,
3717          'MAXLENGTH',
3718          null,
3719          24,
3720          l_valResult,
3721          l_docErrorRec);
3722 
3723      IF (l_valResult = FALSE) THEN
3724         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
3725         l_valid := 1;
3726      END IF;
3727 
3728      -- Validate target bank code
3729      -- by CE
3730 
3731      -- Validate target bank branch code
3732      -- by CE
3733 
3734      -- Validate target bank account number
3735      -- by CE
3736 
3737      -- Validate target bank account check digits
3738      -- by CE
3739 
3740      -- Validate target bank country code
3741      IBY_VALIDATIONSETS_PUB.evaluateCondition(
3742          'EXT_BANK_BRANCH_COUNTRY',
3743          l_document_rec.ext_bank_branch_country,
3744          'STRIS',
3745          'FR',
3746          null,
3747          l_valResult,
3748          l_docErrorRec);
3749 
3750      IF (l_valResult = FALSE) THEN
3751         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
3752         l_valid := 1;
3753      END IF;
3754 
3755      -- Inserting errors into IBY_TRANSACTION_ERRORS
3756      IF (l_valid = 1) THEN
3757         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
3758      END IF;
3759 
3760      -- Return the Validation Result
3761      x_result := l_valid;
3762 
3763  END CITI_FR_EFT_DOM_PAYEE;
3764 
3765 /*--------------------------------------------------------------------
3766  | NAME:
3767  |     CITI_FR_EFT_DOM_DOC
3768  |
3769  | PURPOSE:
3770  |     Citibank French domestic EFT document validation
3771  |
3772  | PARAMETERS:
3773  |     IN
3774  |
3775  |
3776  |     OUT
3777  |
3778  |
3779  | RETURNS:
3780  |
3781  | NOTES:
3782  |
3783  *---------------------------------------------------------------------*/
3784  PROCEDURE CITI_FR_EFT_DOM_DOC (
3785      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
3786      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
3787      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
3788      p_is_online_val      IN VARCHAR2,
3789      x_result             OUT NOCOPY NUMBER)
3790  IS
3791 
3792  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
3793  l_valResult BOOLEAN;
3794  l_valid NUMBER := 0;
3795  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
3796  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
3797 
3798  BEGIN
3799 
3800      -- Initializing the document record
3801      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
3802 
3803      l_docErrorRec.validation_set_code := p_validation_set_code;
3804      l_docErrorRec.transaction_id := p_document_id;
3805      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
3806      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
3807      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
3808      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
3809 
3810      -- Validate transaction code
3811      IBY_VALIDATIONSETS_PUB.evaluateCondition(
3812          'DELIVERY_CHANNEL_CODE',
3813          l_document_rec.delivery_channel_code,
3814          'INDELIV',
3815          'FR',
3816          null,
3817          l_valResult,
3818          l_docErrorRec);
3819 
3820      IF (l_valResult = FALSE) THEN
3821         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
3822         l_valid := 1;
3823      END IF;
3824 
3825      -- Inserting errors into IBY_TRANSACTION_ERRORS
3826      IF (l_valid = 1) THEN
3827         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
3828      END IF;
3829 
3830      -- Return the Validation Result
3831      x_result := l_valid;
3832 
3833  END CITI_FR_EFT_DOM_DOC;
3834 
3835 /*--------------------------------------------------------------------
3836  | NAME:
3837  |     P_CITI_FR_EFT_DOM_PMT
3838  |
3839  | PURPOSE:
3840  |     Citibank French domestic EFT payment validation
3841  |
3842  | PARAMETERS:
3843  |     IN
3844  |
3845  |
3846  |     OUT
3847  |
3848  |
3849  | RETURNS:
3850  |
3851  | NOTES:
3852  |
3853  *---------------------------------------------------------------------*/
3854  PROCEDURE P_CITI_FR_EFT_DOM_PMT (
3855      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
3856      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
3857      p_payment_id         IN IBY_PAYMENTS_ALL.payment_id%type,
3858      p_is_online_val      IN VARCHAR2,
3859      x_result             OUT NOCOPY NUMBER)
3860  IS
3861 
3862  l_payment_rec IBY_VALIDATIONSETS_PUB.paymentRecType;
3863  l_valResult BOOLEAN;
3864  l_valid NUMBER := 0;
3865  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
3866  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
3867 
3868  l_max_ach_amt NUMBER;
3869 
3870  BEGIN
3871 
3872      -- Initializing the payment record
3873      IBY_VALIDATIONSETS_PUB.initPaymentData(p_payment_id,l_payment_rec);
3874 
3875      l_docErrorRec.validation_set_code := p_validation_set_code;
3876      l_docErrorRec.transaction_id := p_payment_id;
3877      l_docErrorRec.transaction_type := 'PAYMENT';
3878      l_docErrorRec.calling_app_doc_unique_ref1 := p_payment_id;
3879 
3880      -- Validate transaction amount
3881      IBY_VALIDATIONSETS_PUB.getParamValue(
3882                             p_validation_assign_id,
3883                             p_validation_set_code,
3884                             'MAX_PAYMENT_AMOUNT',
3885                             l_max_ach_amt );
3886 
3887      IBY_VALIDATIONSETS_PUB.evaluateCondition(
3888          'PMT_AMOUNT',
3889          l_payment_rec.pmt_amount,
3890          'LESSEQUAL',
3891          null,
3892          l_max_ach_amt,
3893          l_valResult,
3894          l_docErrorRec);
3895 
3896      IF (l_valResult = FALSE) THEN
3897         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
3898         l_valid := 1;
3899      END IF;
3900 
3901      -- Inserting errors into IBY_TRANSACTION_ERRORS
3902      -- The first parameter p_is_online_val takes hardcoded value 'N'.
3903      IF (l_valid = 1) THEN
3904         IBY_VALIDATIONSETS_PUB.insert_transaction_errors('N',l_docErrorTab);
3905      END IF;
3906 
3907      -- Return the Validation Result
3908      x_result := l_valid;
3909 
3910  END P_CITI_FR_EFT_DOM_PMT;
3911 
3912 /*--------------------------------------------------------------------
3913  | NAME:
3914  |     CITI_GR_CHECK_DOMESTIC_PAYEE
3915  |
3916  | PURPOSE:
3917  |     Citibank Greek domestic check payee validation
3918  |
3919  | PARAMETERS:
3920  |     IN
3921  |
3922  |
3923  |     OUT
3924  |
3925  |
3926  | RETURNS:
3927  |
3928  | NOTES:
3929  |
3930  *---------------------------------------------------------------------*/
3931  PROCEDURE CITI_GR_CHECK_DOM_PAYEE (
3932      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
3933      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
3934      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
3935      p_is_online_val      IN VARCHAR2,
3936      x_result             OUT NOCOPY NUMBER)
3937  IS
3938 
3939  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
3940  l_valResult BOOLEAN;
3941  l_valid NUMBER := 0;
3942  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
3943  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
3944 
3945  BEGIN
3946 
3947      -- Initializing the document record
3948      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
3949 
3950      l_docErrorRec.validation_set_code := p_validation_set_code;
3951      l_docErrorRec.transaction_id := p_document_id;
3952      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
3953      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
3954      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
3955      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
3956 
3957      -- Validate target name
3958      IBY_VALIDATIONSETS_PUB.evaluateCondition(
3959          'PAYEE_PARTY_NAME',
3960          l_document_rec.payee_party_name,
3961          'MAXLENGTH',
3962          null,
3963          33,
3964          l_valResult,
3965          l_docErrorRec);
3966 
3967      IF (l_valResult = FALSE) THEN
3968         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
3969         l_valid := 1;
3970      END IF;
3971 
3972      -- Validate target bank name
3973      IBY_VALIDATIONSETS_PUB.evaluateCondition(
3974          'EXT_BANK_NAME',
3975          l_document_rec.ext_bank_name,
3976          'MAXLENGTH',
3977          null,
3978          33,
3979          l_valResult,
3980          l_docErrorRec);
3981 
3982      IF (l_valResult = FALSE) THEN
3983         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
3984         l_valid := 1;
3985      END IF;
3986 
3987      -- Validate target bank code
3988      -- by CE
3989 
3990      -- Validate target bank branch code
3991      -- by CE
3992 
3993      -- Validate target bank account number
3994      -- by CE
3995 
3996      -- Insert errors into IBY_TRANSACTION_ERRORS
3997      IF (l_valid = 1) THEN
3998         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
3999      END IF;
4000 
4001      -- Return the validation result
4002      x_result := l_valid;
4003 
4004  END CITI_GR_CHECK_DOM_PAYEE;
4005 
4006 /*--------------------------------------------------------------------
4007  | NAME:
4008  |     CITI_GR_CHECK_DOM_DOC
4009  |
4010  | PURPOSE:
4011  |     Citibank Greek domestic check document validation
4012  |
4013  | PARAMETERS:
4014  |     IN
4015  |
4016  |
4017  |     OUT
4018  |
4019  |
4020  | RETURNS:
4021  |
4022  | NOTES:
4023  |
4024  *---------------------------------------------------------------------*/
4025  PROCEDURE CITI_GR_CHECK_DOM_DOC (
4026      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
4027      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
4028      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
4029      p_is_online_val      IN VARCHAR2,
4030      x_result             OUT NOCOPY NUMBER)
4031  IS
4032 
4033  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
4034  l_valResult BOOLEAN;
4035  l_valid NUMBER := 0;
4036  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
4037  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
4038 
4039  BEGIN
4040 
4041      -- Initializing the document record
4042      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
4043 
4044      l_docErrorRec.validation_set_code := p_validation_set_code;
4045      l_docErrorRec.transaction_id := p_document_id;
4046      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
4047      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
4048      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
4049      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
4050 
4051      -- Validate transaction code
4052      IBY_VALIDATIONSETS_PUB.evaluateCondition(
4053          'DELIVERY_CHANNEL_CODE',
4054          l_document_rec.delivery_channel_code,
4055          'INDELIV',
4056          'GR',
4057          null,
4058          l_valResult,
4059          l_docErrorRec);
4060 
4061      IF (l_valResult = FALSE) THEN
4062         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
4063         l_valid := 1;
4064      END IF;
4065 
4066      -- Insert errors into IBY_TRANSACTION_ERRORS
4067      IF (l_valid = 1) THEN
4068         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
4069      END IF;
4070 
4071      -- Return the validation result
4072      x_result := l_valid;
4073 
4074  END CITI_GR_CHECK_DOM_DOC;
4075 
4076  /*--------------------------------------------------------------------
4077   | NAME:
4078   |     P_CITI_GR_CHECK_DOM_PMT
4079   |
4080   | PURPOSE:
4081   |    Citibank Greek domestic check payment validation
4082   |
4083   | PARAMETERS:
4084   |     IN
4085   |
4086   |
4087   |     OUT
4088   |
4089   |
4090   | RETURNS:
4091   |
4092   | NOTES:
4093   |
4094   *---------------------------------------------------------------------*/
4095   PROCEDURE P_CITI_GR_CHECK_DOM_PMT (
4096       p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
4097       p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
4098       p_payment_id         IN IBY_PAYMENTS_ALL.payment_id%type,
4099       p_is_online_val      IN VARCHAR2,
4100       x_result             OUT NOCOPY NUMBER)
4101   IS
4102 
4103   l_payment_rec IBY_VALIDATIONSETS_PUB.paymentRecType;
4104   l_valResult BOOLEAN;
4105   l_valid NUMBER := 0;
4106   l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
4107   l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
4108 
4109   BEGIN
4110 
4111       -- Initializing the payment record
4112       IBY_VALIDATIONSETS_PUB.initPaymentData(p_payment_id,l_payment_rec);
4113 
4114       l_docErrorRec.validation_set_code := p_validation_set_code;
4115       l_docErrorRec.transaction_id := p_payment_id;
4116       l_docErrorRec.transaction_type := 'PAYMENT';
4117       l_docErrorRec.calling_app_doc_unique_ref1 := p_payment_id;
4118 
4119       -- Validate transaction reference
4120       IBY_VALIDATIONSETS_PUB.evaluateCondition(
4121           'PMT_ID',
4122           l_payment_rec.pmt_id,
4123           'MAXLENGTH',
4124           null,
4125           16,
4126           l_valResult,
4127           l_docErrorRec);
4128 
4129       IF (l_valResult = FALSE) THEN
4130          IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
4131          l_valid := 1;
4132       END IF;
4133 
4134       -- Inserting errors into IBY_TRANSACTION_ERRORS
4135       -- The first parameter p_is_online_val takes hardcoded value 'N'.
4136       IF (l_valid = 1) THEN
4137          IBY_VALIDATIONSETS_PUB.insert_transaction_errors('N',l_docErrorTab);
4138       END IF;
4139 
4140       -- Return the Validation Result
4141       x_result := l_valid;
4142 
4143   END P_CITI_GR_CHECK_DOM_PMT;
4144 
4145 /*--------------------------------------------------------------------
4146  | NAME:
4147  |     CITI_GR_EFT_DOM_PAYEE
4148  |
4149  | PURPOSE:
4150  |     Citibank Greek domestic EFT payee validation
4151  |
4152  | PARAMETERS:
4153  |     IN
4154  |
4155  |
4156  |     OUT
4157  |
4158  |
4159  | RETURNS:
4160  |
4161  | NOTES:
4162  |
4163  *---------------------------------------------------------------------*/
4164  PROCEDURE CITI_GR_EFT_DOM_PAYEE (
4165      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
4166      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
4167      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
4168      p_is_online_val      IN VARCHAR2,
4169      x_result             OUT NOCOPY NUMBER)
4170  IS
4171 
4172  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
4173  l_valResult BOOLEAN;
4174  l_valid NUMBER := 0;
4175  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
4176  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
4177 
4178  BEGIN
4179 
4180      -- Initializing the document record
4181      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
4182 
4183      l_docErrorRec.validation_set_code := p_validation_set_code;
4184      l_docErrorRec.transaction_id := p_document_id;
4185      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
4186      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
4187      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
4188      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
4189 
4190      -- Validate target name
4191      IBY_VALIDATIONSETS_PUB.evaluateCondition(
4192          'PAYEE_PARTY_NAME',
4193          l_document_rec.payee_party_name,
4194          'MAXLENGTH',
4195          null,
4196          33,
4197          l_valResult,
4198          l_docErrorRec);
4199 
4200      IF (l_valResult = FALSE) THEN
4201         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
4202         l_valid := 1;
4203      END IF;
4204 
4205      -- Validate target bank code
4206      -- by CE
4207 
4208      -- Validate target bank branch code
4209      -- by CE
4210 
4211      -- Validate target bank account number
4212      -- by CE
4213 
4214      -- Insert errors into IBY_TRANSACTION_ERRORS
4215      IF (l_valid = 1) THEN
4216         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
4217      END IF;
4218 
4219      -- Return the validation result
4220      x_result := l_valid;
4221 
4222  END CITI_GR_EFT_DOM_PAYEE;
4223 
4224 /*--------------------------------------------------------------------
4225  | NAME:
4226  |     CITI_GR_EFT_DOM_DOC
4227  |
4228  | PURPOSE:
4229  |     Citibank Greek domestic EFT document validation
4230  |
4231  | PARAMETERS:
4232  |     IN
4233  |
4234  |
4235  |     OUT
4236  |
4237  |
4238  | RETURNS:
4239  |
4240  | NOTES:
4241  |
4242  *---------------------------------------------------------------------*/
4243  PROCEDURE CITI_GR_EFT_DOM_DOC (
4244      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
4245      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
4246      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
4247      p_is_online_val      IN VARCHAR2,
4248      x_result             OUT NOCOPY NUMBER)
4249  IS
4250 
4251  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
4252  l_valResult BOOLEAN;
4253  l_valid NUMBER := 0;
4254  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
4255  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
4256  l_validTrxnCodes VARCHAR2(100) := '0001, 0003, 0004';
4257 
4258  BEGIN
4259 
4260      -- Initializing the document record
4261      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
4262 
4263      l_docErrorRec.validation_set_code := p_validation_set_code;
4264      l_docErrorRec.transaction_id := p_document_id;
4265      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
4266      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
4267      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
4268      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
4269 
4270      -- Validate transaction code
4271      IBY_VALIDATIONSETS_PUB.evaluateCondition(
4272          'DELIVERY_CHANNEL_CODE',
4273          l_document_rec.delivery_channel_code,
4274          'INDELIV',
4275          'GR',
4276          null,
4277          l_valResult,
4278          l_docErrorRec);
4279 
4280      IF (l_valResult = FALSE) THEN
4281         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
4282         l_valid := 1;
4283      END IF;
4284 
4285      -- Insert errors into IBY_TRANSACTION_ERRORS
4286      IF (l_valid = 1) THEN
4287         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
4288      END IF;
4289 
4290      -- Return the validation result
4291      x_result := l_valid;
4292 
4293  END CITI_GR_EFT_DOM_DOC;
4294 
4295  /*--------------------------------------------------------------------
4296   | NAME:
4297   |     P_CITI_GR_EFT_DOM_PMT
4298   |
4299   | PURPOSE:
4300   |    Citibank Greek domestic EFT payment validation
4301   |
4302   | PARAMETERS:
4303   |     IN
4304   |
4305   |
4306   |     OUT
4307   |
4308   |
4309   | RETURNS:
4310   |
4311   | NOTES:
4312   |
4313   *---------------------------------------------------------------------*/
4314   PROCEDURE P_CITI_GR_EFT_DOM_PMT (
4315       p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
4316       p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
4317       p_payment_id         IN IBY_PAYMENTS_ALL.payment_id%type,
4318       p_is_online_val      IN VARCHAR2,
4319       x_result             OUT NOCOPY NUMBER)
4320   IS
4321 
4322   l_payment_rec IBY_VALIDATIONSETS_PUB.paymentRecType;
4323   l_valResult BOOLEAN;
4324   l_valid NUMBER := 0;
4325   l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
4326   l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
4327 
4328   BEGIN
4329 
4330       -- Initializing the payment record
4331       IBY_VALIDATIONSETS_PUB.initPaymentData(p_payment_id,l_payment_rec);
4332 
4333       l_docErrorRec.validation_set_code := p_validation_set_code;
4334       l_docErrorRec.transaction_id := p_payment_id;
4335       l_docErrorRec.transaction_type := 'PAYMENT';
4336       l_docErrorRec.calling_app_doc_unique_ref1 := p_payment_id;
4337 
4338       -- Validate transaction reference
4339       IBY_VALIDATIONSETS_PUB.evaluateCondition(
4340           'PMT_ID',
4341           l_payment_rec.pmt_id,
4342           'MAXLENGTH',
4343           null,
4344           16,
4345           l_valResult,
4346           l_docErrorRec);
4347 
4348       IF (l_valResult = FALSE) THEN
4349          IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
4350          l_valid := 1;
4351       END IF;
4352 
4353       -- Inserting errors into IBY_TRANSACTION_ERRORS
4354       -- The first parameter p_is_online_val takes hardcoded value 'N'.
4355       IF (l_valid = 1) THEN
4356          IBY_VALIDATIONSETS_PUB.insert_transaction_errors('N',l_docErrorTab);
4357       END IF;
4358 
4359       -- Return the Validation Result
4360       x_result := l_valid;
4361 
4362   END P_CITI_GR_EFT_DOM_PMT;
4363 
4364 /*--------------------------------------------------------------------
4365  | NAME:
4366  |     CITI_IE_EFT_DOM_PAYEE
4367  |
4368  | PURPOSE:
4369  |     Citibank Irish domestic EFT payee validation
4370  |
4371  | PARAMETERS:
4372  |     IN
4373  |
4374  |
4375  |     OUT
4376  |
4377  |
4378  | RETURNS:
4379  |
4380  | NOTES:
4381  |
4382  *---------------------------------------------------------------------*/
4383  PROCEDURE CITI_IE_EFT_DOM_PAYEE (
4384      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
4385      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
4386      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
4387      p_is_online_val      IN VARCHAR2,
4388      x_result             OUT NOCOPY NUMBER)
4389  IS
4390 
4391  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
4392  l_valResult BOOLEAN;
4393  l_valid NUMBER := 0;
4394  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
4395  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
4396 
4397  BEGIN
4398 
4399      -- Initializing the document record
4400      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
4401 
4402      l_docErrorRec.validation_set_code := p_validation_set_code;
4403      l_docErrorRec.transaction_id := p_document_id;
4404      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
4405      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
4406      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
4407      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
4408 
4409      -- Validate beneficiary name
4410      IBY_VALIDATIONSETS_PUB.evaluateCondition(
4411          'PAYEE_PARTY_NAME',
4412          l_document_rec.payee_party_name,
4413          'MAXLENGTH',
4414          null,
4415          18,
4416          l_valResult,
4417          l_docErrorRec);
4418 
4419      IF (l_valResult = FALSE) THEN
4420         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
4421         l_valid := 1;
4422      END IF;
4423 
4424      -- Validate target name
4425      IBY_VALIDATIONSETS_PUB.evaluateCondition(
4426          'PAYEE_PARTY_NAME',
4427          l_document_rec.payee_party_name,
4428          'MAXLENGTH',
4429          null,
4430          18,
4431          l_valResult,
4432          l_docErrorRec);
4433 
4434      IF (l_valResult = FALSE) THEN
4435         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
4436         l_valid := 1;
4437      END IF;
4438 
4439      -- Validate target bank account number
4440      -- by CE
4441 
4442      -- Validate target bank country code
4443      IBY_VALIDATIONSETS_PUB.evaluateCondition(
4444          'EXT_BANK_BRANCH_COUNTRY',
4445          l_document_rec.ext_bank_branch_country,
4446          'STRIS',
4447          'IE',
4448          null,
4449          l_valResult,
4450          l_docErrorRec);
4451 
4452      IF (l_valResult = FALSE) THEN
4453         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
4454         l_valid := 1;
4455      END IF;
4456 
4457      -- Validate target bank branch code
4458      IBY_VALIDATIONSETS_PUB.evaluateCondition(
4459          'EXT_BANK_BRANCH_NUM',
4460          l_document_rec.ext_bank_branch_num,
4461          'EXACTLENGTH',
4462          null,
4463          6,
4464          l_valResult,
4465          l_docErrorRec);
4466 
4467      IF (l_valResult = FALSE) THEN
4468         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
4469         l_valid := 1;
4470      END IF;
4471 
4472      -- by CE, validation on digits only.
4473 
4474      -- Inserting errors into IBY_TRANSACTION_ERRORS
4475      IF (l_valid = 1) THEN
4476         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
4477      END IF;
4478 
4479      -- Return the Validation Result
4480      x_result := l_valid;
4481 
4482  END CITI_IE_EFT_DOM_PAYEE;
4483 
4484 /*--------------------------------------------------------------------
4485  | NAME:
4486  |     P_CITI_IE_EFT_DOM_PMT
4487  |
4488  | PURPOSE:
4489  |     Citibank Irish domestic EFT payment validation
4490  |
4491  | PARAMETERS:
4492  |     IN
4493  |
4494  |
4495  |     OUT
4496  |
4497  |
4498  | RETURNS:
4499  |
4500  | NOTES:
4501  |
4502  *---------------------------------------------------------------------*/
4503  PROCEDURE P_CITI_IE_EFT_DOM_PMT (
4504      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
4505      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
4506      p_payment_id         IN IBY_PAYMENTS_ALL.payment_id%type,
4507      p_is_online_val      IN VARCHAR2,
4508      x_result             OUT NOCOPY NUMBER)
4509  IS
4510 
4511  l_payment_rec IBY_VALIDATIONSETS_PUB.paymentRecType;
4512  l_valResult BOOLEAN;
4513  l_valid NUMBER := 0;
4514  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
4515  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
4516 
4517  BEGIN
4518 
4519      -- Initializing the payment record
4520      IBY_VALIDATIONSETS_PUB.initPaymentData(p_payment_id,l_payment_rec);
4521 
4522      l_docErrorRec.validation_set_code := p_validation_set_code;
4523      l_docErrorRec.transaction_id := p_payment_id;
4524      l_docErrorRec.transaction_type := 'PAYMENT';
4525      l_docErrorRec.calling_app_doc_unique_ref1 := p_payment_id;
4526 
4527      -- Validate transactional reference
4528      IBY_VALIDATIONSETS_PUB.evaluateCondition(
4529          'PMT_ID',
4530          l_payment_rec.pmt_id,
4531          'MAXLENGTH',
4532          null,
4533          15,
4534          l_valResult,
4535          l_docErrorRec);
4536 
4537      IF (l_valResult = FALSE) THEN
4538         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
4539         l_valid := 1;
4540      END IF;
4541 
4542      -- Validate instruction currency code
4543      IBY_VALIDATIONSETS_PUB.evaluateCondition(
4544          'PMT_CURRENCY',
4545          l_payment_rec.pmt_currency,
4546          'MAXLENGTH',
4547          null,
4548          3,
4549          l_valResult,
4550          l_docErrorRec);
4551 
4552      IF (l_valResult = FALSE) THEN
4553         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
4554         l_valid := 1;
4555      END IF;
4556 
4557      -- Validate transaction amount
4558      IBY_VALIDATIONSETS_PUB.evaluateCondition(
4559          'PMT_AMOUNT',
4560          l_payment_rec.pmt_amount,
4561          'MAXLENGTH',
4562          null,
4563          12,
4564          l_valResult,
4565          l_docErrorRec);
4566 
4567      IF (l_valResult = FALSE) THEN
4568         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
4569         l_valid := 1;
4570      END IF;
4571 
4572      -- Inserting errors into IBY_TRANSACTION_ERRORS
4573      -- The first parameter p_is_online_val takes hardcoded value 'N'.
4574      IF (l_valid = 1) THEN
4575         IBY_VALIDATIONSETS_PUB.insert_transaction_errors('N',l_docErrorTab);
4576      END IF;
4577 
4578      -- Return the Validation Result
4579      x_result := l_valid;
4580 
4581  END P_CITI_IE_EFT_DOM_PMT;
4582 
4583  /*--------------------------------------------------------------------
4584  | NAME:
4585  |     CITI_IE_EFT_DOM_DOC
4586  |
4587  | PURPOSE:
4588  |     Citibank Irish domestic EFT document validation
4589  |
4590  | PARAMETERS:
4591  |     IN
4592  |
4593  |
4594  |     OUT
4595  |
4596  |
4597  | RETURNS:
4598  |
4599  | NOTES:
4600  |
4601  *---------------------------------------------------------------------*/
4602  PROCEDURE CITI_IE_EFT_DOM_DOC (
4603      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
4604      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
4605      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
4606      p_is_online_val      IN VARCHAR2,
4607      x_result             OUT NOCOPY NUMBER)
4608  IS
4609 
4610  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
4611  l_valResult BOOLEAN;
4612  l_valid NUMBER := 0;
4613  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
4614  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
4615 
4616  BEGIN
4617 
4618      -- Initializing the document record
4619      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
4620 
4621      l_docErrorRec.validation_set_code := p_validation_set_code;
4622      l_docErrorRec.transaction_id := p_document_id;
4623      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
4624      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
4625      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
4626      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
4627 
4628      -- Validate transaction code
4629      IBY_VALIDATIONSETS_PUB.evaluateCondition(
4630          'DELIVERY_CHANNEL_CODE',
4631          l_document_rec.delivery_channel_code,
4632          'INDELIV',
4633          'IE',
4634          null,
4635          l_valResult,
4636          l_docErrorRec);
4637 
4638      IF (l_valResult = FALSE) THEN
4639         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
4640         l_valid := 1;
4641      END IF;
4642 
4643      -- Inserting errors into IBY_TRANSACTION_ERRORS
4644      IF (l_valid = 1) THEN
4645         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
4646      END IF;
4647 
4648      -- Return the Validation Result
4649      x_result := l_valid;
4650 
4651  END CITI_IE_EFT_DOM_DOC;
4652 
4653 /*--------------------------------------------------------------------
4654  | NAME:
4655  |     CITI_IT_EFT_DOM_PAYEE
4656  |
4657  | PURPOSE:
4658  |     Citibank Italian domestic EFT payee validation
4659  |
4660  | PARAMETERS:
4661  |     IN
4662  |
4663  |
4664  |     OUT
4665  |
4666  |
4667  | RETURNS:
4668  |
4669  | NOTES:
4670  |
4671  *---------------------------------------------------------------------*/
4672  PROCEDURE CITI_IT_EFT_DOM_PAYEE (
4673      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
4674      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
4675      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
4676      p_is_online_val      IN VARCHAR2,
4677      x_result             OUT NOCOPY NUMBER)
4678  IS
4679 
4680  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
4681  l_valResult BOOLEAN;
4682  l_valid NUMBER := 0;
4683  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
4684  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
4685 
4686  BEGIN
4687 
4688      -- Initializing the document record
4689      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
4690 
4691      l_docErrorRec.validation_set_code := p_validation_set_code;
4692      l_docErrorRec.transaction_id := p_document_id;
4693      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
4694      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
4695      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
4696      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
4697 
4698      -- Validate target name
4699      IBY_VALIDATIONSETS_PUB.evaluateCondition(
4700          'PAYEE_PARTY_NAME',
4701          l_document_rec.payee_party_name,
4702          'MAXLENGTH',
4703          null,
4704          30,
4705          l_valResult,
4706          l_docErrorRec);
4707 
4708      IF (l_valResult = FALSE) THEN
4709         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
4710         l_valid := 1;
4711      END IF;
4712 
4713      -- Validate target postal code
4714      IBY_VALIDATIONSETS_PUB.evaluateCondition(
4715          'PAYEE_PARTY_SITE_POSTAL',
4716          l_document_rec.payee_party_postal,
4717          'MAXLENGTH',
4718          null,
4719          5,
4720          l_valResult,
4721          l_docErrorRec);
4722 
4723      IF (l_valResult = FALSE) THEN
4724         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
4725         l_valid := 1;
4726      END IF;
4727 
4728      -- Validate target bank code
4729      -- by CE
4730 
4731      -- Validate target branch code
4732      -- by CE
4733 
4734      -- Validate target bank account number
4735      -- by CE
4736 
4737      -- Validate target bank account check digit
4738      -- by CE
4739 
4740      -- Validate target bank name
4741      IBY_VALIDATIONSETS_PUB.evaluateCondition(
4742          'EXT_BANK_NAME',
4743          l_document_rec.ext_bank_name,
4744          'MAXLENGTH',
4745          null,
4746          30,
4747          l_valResult,
4748          l_docErrorRec);
4749 
4750      IF (l_valResult = FALSE) THEN
4751         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
4752         l_valid := 1;
4753      END IF;
4754 
4755      -- Validate target bank country code
4756      IBY_VALIDATIONSETS_PUB.evaluateCondition(
4757          'EXT_BANK_BRANCH_COUNTRY',
4758          l_document_rec.ext_bank_branch_country,
4759          'STRIS',
4760          'IT',
4761          null,
4762          l_valResult,
4763          l_docErrorRec);
4764 
4765      IF (l_valResult = FALSE) THEN
4766         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
4767         l_valid := 1;
4768      END IF;
4769 
4770      -- Insert errors into IBY_TRANSACTION_ERRORS
4771      IF (l_valid = 1) THEN
4772         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
4773      END IF;
4774 
4775      -- Return the validation result
4776      x_result := l_valid;
4777 
4778  END CITI_IT_EFT_DOM_PAYEE;
4779 
4780 /*--------------------------------------------------------------------
4781  | NAME:
4782  |     P_CITI_IT_EFT_DOM_PMT
4783  |
4784  | PURPOSE:
4785  |     Citibank Italian domestic EFT payment validation
4786  |
4787  | PARAMETERS:
4788  |     IN
4789  |
4790  |
4791  |     OUT
4792  |
4793  |
4794  | RETURNS:
4795  |
4796  | NOTES:
4797  |
4798  *---------------------------------------------------------------------*/
4799  PROCEDURE P_CITI_IT_EFT_DOM_PMT (
4800      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
4801      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
4802      p_payment_id         IN IBY_PAYMENTS_ALL.payment_id%type,
4803      p_is_online_val      IN VARCHAR2,
4804      x_result             OUT NOCOPY NUMBER)
4805  IS
4806 
4807  l_payment_rec IBY_VALIDATIONSETS_PUB.paymentRecType;
4808  l_valResult BOOLEAN;
4809  l_valid NUMBER := 0;
4810  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
4811  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
4812 
4813  BEGIN
4814 
4815      -- Initializing the payment record
4816      IBY_VALIDATIONSETS_PUB.initPaymentData(p_payment_id,l_payment_rec);
4817 
4818      l_docErrorRec.validation_set_code := p_validation_set_code;
4819      l_docErrorRec.transaction_id := p_payment_id;
4820      l_docErrorRec.transaction_type := 'PAYMENT';
4821      l_docErrorRec.calling_app_doc_unique_ref1 := p_payment_id;
4822 
4823      -- Validate transaction reference
4824      IBY_VALIDATIONSETS_PUB.evaluateCondition(
4825          'PMT_ID',
4826          l_payment_rec.pmt_id,
4827          'MAXLENGTH',
4828          null,
4829          16,
4830          l_valResult,
4831          l_docErrorRec);
4832 
4833      IF (l_valResult = FALSE) THEN
4834         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
4835         l_valid := 1;
4836      END IF;
4837 
4838      -- Validate transaction amount
4839      IBY_VALIDATIONSETS_PUB.evaluateCondition(
4840          'PMT_AMOUNT',
4841          l_payment_rec.pmt_amount,
4842          'MAXLENGTH',
4843          null,
4844          13,
4845          l_valResult,
4846          l_docErrorRec);
4847 
4848      IF (l_valResult = FALSE) THEN
4849         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
4850         l_valid := 1;
4851      END IF;
4852 
4853      -- Insert errors into IBY_TRANSACTION_ERRORS
4854      -- The first parameter p_is_online_val takes hardcoded value 'N'.
4855      IF (l_valid = 1) THEN
4856         IBY_VALIDATIONSETS_PUB.insert_transaction_errors('N',l_docErrorTab);
4857      END IF;
4858 
4859      -- Return the validation result
4860      x_result := l_valid;
4861 
4862  END P_CITI_IT_EFT_DOM_PMT;
4863 
4864 /*--------------------------------------------------------------------
4865  | NAME:
4866  |     JP_EFT_ZENGIN_INTERNAL_BANK
4867  |
4868  | PURPOSE:
4869  |     Japanese Zengin EFT internal bank validation
4870  |
4871  | PARAMETERS:
4872  |     IN
4873  |
4874  |
4875  |     OUT
4876  |
4877  |
4878  | RETURNS:
4879  |
4880  | NOTES:
4881  |
4882  *---------------------------------------------------------------------*/
4883  PROCEDURE JP_EFT_ZENGIN_INTERNAL_BANK (
4884      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
4885      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
4886      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
4887      p_is_online_val      IN VARCHAR2,
4888      x_result             OUT NOCOPY NUMBER)
4889  IS
4890 
4891  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
4892  l_valResult BOOLEAN;
4893  l_valid NUMBER := 0;
4894  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
4895  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
4896 
4897  BEGIN
4898 
4899      -- Initializing the document record
4900      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id, l_document_rec, p_is_online_val);
4901 
4902      l_docErrorRec.validation_set_code := p_validation_set_code;
4903      l_docErrorRec.transaction_id := p_document_id;
4904      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
4905      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
4906      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
4907      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
4908 
4909      -- Validate internal bank code
4910      -- by CE
4911 
4912      -- Validate internal branch code
4913      -- by CE
4914 
4915      -- Validate internal bank kana name
4916      -- by CE
4917 
4918      -- Validate internal bank branch kana name
4919      -- by CE
4920 
4921      -- Validate internal bank account number
4922      -- by CE
4923 
4924      -- Validate internal bank account type
4925      IBY_VALIDATIONSETS_PUB.evaluateCondition(
4926          'INT_BANK_ACC_TYPE',
4927          '+'||substr(l_document_rec.int_bank_acc_type, 1, 1)||'+',
4928          'INSET',
4929          '+1+2+4+9+',
4930          null,
4931          l_valResult,
4932          l_docErrorRec);
4933 
4934      IF (l_valResult = FALSE) THEN
4935         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
4936         l_valid := 1;
4937      END IF;
4938 
4939      -- Validate internal bank account holder name alternate
4940      -- by CE
4941 
4942      -- Validate EFT requester id
4943      IBY_VALIDATIONSETS_PUB.evaluateCondition(
4944          'INT_EFT_USER_NUMBER',
4945          l_document_rec.int_eft_user_number,
4946          'DIGITSONLY',
4947          null,
4948          null,
4949          l_valResult,
4950          l_docErrorRec);
4951 
4952      IF (l_valResult = FALSE) THEN
4953         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
4954         l_valid := 1;
4955      END IF;
4956 
4957      -- Insert errors into IBY_TRANSACTION_ERRORS
4958      IF (l_valid = 1) THEN
4959         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
4960      END IF;
4961 
4962      -- Return the validation result
4963      x_result := l_valid;
4964 
4965  END JP_EFT_ZENGIN_INTERNAL_BANK;
4966 
4967 /*--------------------------------------------------------------------
4968  | NAME:
4969  |     JP_EFT_ZENGIN_PAYEE
4970  |
4971  | PURPOSE:
4972  |     Japanese Zengin EFT payee validation
4973  |
4974  | PARAMETERS:
4975  |     IN
4976  |
4977  |
4978  |     OUT
4979  |
4980  |
4981  | RETURNS:
4982  |
4983  | NOTES:
4984  |
4985  *---------------------------------------------------------------------*/
4986  PROCEDURE JP_EFT_ZENGIN_PAYEE (
4987      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
4988      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
4989      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
4990      p_is_online_val      IN VARCHAR2,
4991      x_result             OUT NOCOPY NUMBER)
4992  IS
4993 
4994  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
4995  l_valResult BOOLEAN;
4996  l_valid NUMBER := 0;
4997  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
4998  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
4999 
5000  BEGIN
5001 
5002      -- Initializing the document record
5003      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id, l_document_rec, p_is_online_val);
5004 
5005      l_docErrorRec.validation_set_code := p_validation_set_code;
5006      l_docErrorRec.transaction_id := p_document_id;
5007      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
5008      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
5009      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
5010      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
5011 
5012      -- Validate supplier bank account id
5013      -- not coded.
5014 
5015      -- Validate supplier bank code
5016      -- by CE
5017 
5018      -- Validate supplier bank branch code
5019      -- by CE
5020 
5021      -- Validate supplier bank kana name
5022      -- by CE
5023 
5024      -- Validate supplier bank branch kana name
5025      -- by CE
5026 
5027      -- Validate supplier bank account type
5028      IBY_VALIDATIONSETS_PUB.evaluateCondition(
5029          'EXT_BANK_ACC_TYPE',
5030          '+'||substr(l_document_rec.ext_bank_acc_type, 1, 1)||'+',
5031          'INSET',
5032          '+1+2+4+9+',
5033          null,
5034          l_valResult,
5035          l_docErrorRec);
5036 
5037      IF (l_valResult = FALSE) THEN
5038         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
5039         l_valid := 1;
5040      END IF;
5041 
5042      -- Validate supplier bank account number
5043      -- by CE
5044 
5045      -- Validate supplier bank account name alternate
5046      -- by CE
5047 
5048      -- Insert errors into IBY_TRANSACTION_ERRORS
5049      IF (l_valid = 1) THEN
5050         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
5051      END IF;
5052 
5053      -- Return the validation result
5054      x_result := l_valid;
5055 
5056  END JP_EFT_ZENGIN_PAYEE;
5057 
5058  /*--------------------------------------------------------------------
5059   | NAME:
5060   |     NO_EFT_DOM_DOC
5061   |
5062   | PURPOSE:
5063   |     Norwegian domestic EFT document validation
5064   |
5065   | PARAMETERS:
5066   |     IN
5067   |
5068   |
5069   |     OUT
5070   |
5071   |
5072   | RETURNS:
5073   |
5074   | NOTES:
5075   |     Bug 5571714: Unique Remittance Identifier (KID code) validation
5076   |                  for Norway.
5077   |
5078   *---------------------------------------------------------------------*/
5079   PROCEDURE NO_EFT_DOM_DOC (
5080       p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
5081       p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
5082       p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
5083       p_is_online_val      IN VARCHAR2,
5084       x_result             OUT NOCOPY NUMBER)
5085   IS
5086 
5087   l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
5088   l_valResult BOOLEAN;
5089   l_valid NUMBER := 0;
5090   l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
5091   l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
5092 
5093   BEGIN
5094 
5095       -- Initializing the document record
5096       IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
5097 
5098       l_docErrorRec.validation_set_code := p_validation_set_code;
5099       l_docErrorRec.transaction_id := p_document_id;
5100       l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
5101       l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
5102       l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
5103       l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
5104 
5105       -- Validate unique remittance identifier (KID Code)
5106       -- Bug 5571714: This function returns validity of the KID code. This
5107       -- code is picked up from /jedev/xxno/11.5/admin/sql/XXNOEC04.sql
5108 
5109       xxno_chk_mod_10_11( l_document_rec.unique_remit_id_code
5110                         , l_valResult
5111                         , l_docErrorRec);
5112 
5113       IF (l_valResult = FALSE) THEN
5114          IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec,l_docErrorTab);
5115          l_valid := 1;
5116       END IF;
5117 
5118       -- Inserting errors into IBY_TRANSACTION_ERRORS
5119       IF (l_valid = 1) THEN
5120          IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
5121       END IF;
5122 
5123       -- Return the Validation Result
5124       x_result := l_valid;
5125 
5126   END NO_EFT_DOM_DOC;
5127 
5128 /*--------------------------------------------------------------------
5129  | NAME:
5130  |     CITI_NO_EFT_DOM_PAYEE
5131  |
5132  | PURPOSE:
5133  |     Citibank Norwegian domestic EFT payee validation
5134  |
5135  | PARAMETERS:
5136  |     IN
5137  |
5138  |
5139  |     OUT
5140  |
5141  |
5142  | RETURNS:
5143  |
5144  | NOTES:
5145  |
5146  *---------------------------------------------------------------------*/
5147  PROCEDURE CITI_NO_EFT_DOM_PAYEE (
5148      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
5149      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
5150      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
5151      p_is_online_val      IN VARCHAR2,
5152      x_result             OUT NOCOPY NUMBER)
5153  IS
5154 
5155  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
5156  l_valResult BOOLEAN;
5157  l_valid NUMBER := 0;
5158  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
5159  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
5160 
5161  BEGIN
5162 
5163      -- Initializing the document record
5164      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
5165 
5166      l_docErrorRec.validation_set_code := p_validation_set_code;
5167      l_docErrorRec.transaction_id := p_document_id;
5168      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
5169      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
5170      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
5171      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
5172 
5173      -- Validate target name
5174      IBY_VALIDATIONSETS_PUB.evaluateCondition(
5175          'PAYEE_PARTY_NAME',
5176          l_document_rec.payee_party_name,
5177          'MAXLENGTH',
5178          null,
5179          35,
5180          l_valResult,
5181          l_docErrorRec);
5182 
5183      IF (l_valResult = FALSE) THEN
5184         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
5185         l_valid := 1;
5186      END IF;
5187 
5188      -- Validate address line 3
5189      IBY_VALIDATIONSETS_PUB.evaluateCondition(
5190          'PAYEE_PARTY_SITE_POSTAL',
5191          l_document_rec.payee_party_postal,
5192          'NOTNULL',
5193          null,
5194          null,
5195          l_valResult,
5196          l_docErrorRec);
5197 
5198      IF (l_valResult = FALSE) THEN
5199         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
5200         l_valid := 1;
5201      END IF;
5202 
5203      -- Inserting errors into IBY_TRANSACTION_ERRORS
5204      IF (l_valid = 1) THEN
5205         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
5206      END IF;
5207 
5208      -- Return the Validation Result
5209      x_result := l_valid;
5210 
5211  END CITI_NO_EFT_DOM_PAYEE;
5212 
5213  /*--------------------------------------------------------------------
5214   | NAME:
5215   |     CITI_NO_EFT_DOM_DOC
5216   |
5217   | PURPOSE:
5218   |     Citibank Norwegian domestic EFT document validation
5219   |
5220   | PARAMETERS:
5221   |     IN
5222   |
5223   |
5224   |     OUT
5225   |
5226   |
5227   | RETURNS:
5228   |
5229   | NOTES:
5230   |
5231   *---------------------------------------------------------------------*/
5232   PROCEDURE CITI_NO_EFT_DOM_DOC (
5233       p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
5234       p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
5235       p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
5236       p_is_online_val      IN VARCHAR2,
5237       x_result             OUT NOCOPY NUMBER)
5238   IS
5239 
5240   l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
5241   l_valResult BOOLEAN;
5242   l_valid NUMBER := 0;
5243   l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
5244   l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
5245 
5246   BEGIN
5247 
5248       -- Initializing the document record
5249       IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
5250 
5251       l_docErrorRec.validation_set_code := p_validation_set_code;
5252       l_docErrorRec.transaction_id := p_document_id;
5253       l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
5254       l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
5255       l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
5256       l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
5257 
5258       -- Validate transaction code
5259       IBY_VALIDATIONSETS_PUB.evaluateCondition(
5260           'DELIVERY_CHANNEL_CODE',
5261           l_document_rec.delivery_channel_code,
5262           'INDELIV',
5263           'NO',
5264           null,
5265           l_valResult,
5266           l_docErrorRec);
5267 
5268       IF (l_valResult = FALSE) THEN
5269          IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec,l_docErrorTab);
5270          l_valid := 1;
5271       END IF;
5272 
5273 /*
5274       -- Validate unique remittance identifier (KID Code)
5275       -- Bug 5571714: This function returns validity of the KID code. This
5276       -- code is picked up from /jedev/xxno/11.5/admin/sql/XXNOEC04.sql
5277 
5278       xxno_chk_mod_10_11( l_document_rec.unique_remit_id_code
5279                         , l_valResult
5280                         , l_docErrorRec);
5281 
5282       IF (l_valResult = FALSE) THEN
5283          IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec,l_docErrorTab);
5284          l_valid := 1;
5285       END IF;
5286 */
5287 
5288       -- Inserting errors into IBY_TRANSACTION_ERRORS
5289       IF (l_valid = 1) THEN
5290          IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
5291       END IF;
5292 
5293       -- Return the Validation Result
5294       x_result := l_valid;
5295 
5296   END CITI_NO_EFT_DOM_DOC;
5297 
5298 /*--------------------------------------------------------------------
5299  | NAME:
5300  |     P_CITI_NO_EFT_DOM_PMT
5301  |
5302  | PURPOSE:
5303  |     Citibank Norwegian domestic EFT payment validation
5304  |
5305  | PARAMETERS:
5306  |     IN
5307  |
5308  |
5309  |     OUT
5310  |
5311  |
5312  | RETURNS:
5313  |
5314  | NOTES:
5315  |
5316  *---------------------------------------------------------------------*/
5317  PROCEDURE P_CITI_NO_EFT_DOM_PMT (
5318      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
5319      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
5320      p_payment_id         IN IBY_PAYMENTS_ALL.payment_id%type,
5321      p_is_online_val      IN VARCHAR2,
5322      x_result             OUT NOCOPY NUMBER)
5323  IS
5324 
5325  l_payment_rec IBY_VALIDATIONSETS_PUB.paymentRecType;
5326  l_valResult BOOLEAN;
5327  l_valid NUMBER := 0;
5328  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
5329  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
5330 
5331  BEGIN
5332 
5333      -- Initializing the payment record
5334      IBY_VALIDATIONSETS_PUB.initPaymentData(p_payment_id,l_payment_rec);
5335 
5336      l_docErrorRec.validation_set_code := p_validation_set_code;
5337      l_docErrorRec.transaction_id := p_payment_id;
5338      l_docErrorRec.transaction_type := 'PAYMENT';
5339      l_docErrorRec.calling_app_doc_unique_ref1 := p_payment_id;
5340 
5341      -- Validate transaction reference
5342      IBY_VALIDATIONSETS_PUB.evaluateCondition(
5343          'PMT_ID',
5344          l_payment_rec.pmt_id,
5345          'MAXLENGTH',
5346          null,
5347          16,
5348          l_valResult,
5349          l_docErrorRec);
5350 
5351      IF (l_valResult = FALSE) THEN
5352         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
5353         l_valid := 1;
5354      END IF;
5355 
5356      -- Inserting errors into IBY_TRANSACTION_ERRORS
5357      -- The first parameter p_is_online_val takes hardcoded value 'N'.
5358      IF (l_valid = 1) THEN
5359         IBY_VALIDATIONSETS_PUB.insert_transaction_errors('N',l_docErrorTab);
5360      END IF;
5361 
5362      -- Return the Validation Result
5363      x_result := l_valid;
5364 
5365  END P_CITI_NO_EFT_DOM_PMT;
5366 
5367 /*--------------------------------------------------------------------
5368  | NAME:
5369  |     CITI_PL_EFT_MTMS_INTERNAL_BANK
5370  |
5371  | PURPOSE:
5372  |     Citibank Polish MTMS EFT internal bank validation
5373  |
5374  | PARAMETERS:
5375  |     IN
5376  |
5377  |
5378  |     OUT
5379  |
5380  |
5381  | RETURNS:
5382  |
5383  | NOTES:
5384  |
5385  *---------------------------------------------------------------------*/
5386  PROCEDURE CITI_PL_EFT_MTMS_INTERNAL_BANK (
5387      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
5388      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
5389      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
5390      p_is_online_val      IN VARCHAR2,
5391      x_result             OUT NOCOPY NUMBER)
5392  IS
5393 
5394  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
5395  l_valResult BOOLEAN;
5396  l_valid NUMBER := 0;
5397  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
5398  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
5399 
5400  BEGIN
5401 
5402      -- Initializing the document record with the Document Payables information
5403      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
5404 
5405      l_docErrorRec.validation_set_code := p_validation_set_code;
5406      l_docErrorRec.transaction_id := p_document_id;
5407      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
5408      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
5409      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
5410      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
5411 
5412      -- Validate payer bank account number
5413      IBY_VALIDATIONSETS_PUB.evaluateCondition(
5414          'INT_BANK_ACC_IBAN',
5415          l_document_rec.int_bank_acc_iban,
5416          'NOTNULL',
5417          null,
5418          null,
5419          l_valResult,
5420          l_docErrorRec);
5421 
5422      IF (l_valResult = FALSE) THEN
5423         IBY_VALIDATIONSETS_PUB.evaluateCondition(
5424             'INT_BANK_ACC_NUM',
5425             l_document_rec.int_bank_acc_num,
5426             'EXACTLENGTH',
5427             null,
5428             10,
5429             l_valResult,
5430             l_docErrorRec);
5431 
5432         IF (l_valResult = FALSE) THEN
5433            IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
5434            l_valid := 1;
5435         END IF;
5436      END IF;
5437 
5438      -- Inserting errors into IBY_TRANSACTION_ERRORS
5439      IF (l_valid = 1) THEN
5440         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
5441      END IF;
5442 
5443      -- Return the Validation Result
5444      x_result := l_valid;
5445 
5446  END CITI_PL_EFT_MTMS_INTERNAL_BANK;
5447 
5448 /*--------------------------------------------------------------------
5449  | NAME:
5450  |     CITI_POLAND_EFT_MTMS_PAYEE
5451  |
5452  | PURPOSE:
5453  |     Citibank Polish MTMS EFT payee validation
5454  |
5455  | PARAMETERS:
5456  |     IN
5457  |
5458  |
5459  |     OUT
5460  |
5461  |
5462  | RETURNS:
5463  |
5464  | NOTES:
5465  |
5466  *---------------------------------------------------------------------*/
5467  PROCEDURE CITI_PL_EFT_MTMS_PAYEE (
5468      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
5469      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
5470      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
5471      p_is_online_val      IN VARCHAR2,
5472      x_result             OUT NOCOPY NUMBER)
5473  IS
5474 
5475  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
5476  l_valResult BOOLEAN;
5477  l_valid NUMBER := 0;
5478  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
5479  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
5480 
5481  BEGIN
5482 
5483      -- Initializing the document record
5484      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
5485 
5486      l_docErrorRec.validation_set_code := p_validation_set_code;
5487      l_docErrorRec.transaction_id := p_document_id;
5488      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
5489      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
5490      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
5491      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
5492 
5493      -- Validate supplier bank number
5494      IBY_VALIDATIONSETS_PUB.evaluateCondition(
5495          'EXT_BANK_ACC_IBAN',
5496          l_document_rec.ext_bank_acc_iban,
5497          'NOTNULL',
5498          null,
5499          null,
5500          l_valResult,
5501          l_docErrorRec);
5502 
5503      IF (l_valResult = FALSE) THEN
5504         IBY_VALIDATIONSETS_PUB.evaluateCondition(
5505             'EXT_BANK_NUM',
5506             l_document_rec.ext_bank_num,
5507             'NOTNULL',
5508             null,
5509             null,
5510             l_valResult,
5511             l_docErrorRec);
5512 
5513         IF (l_valResult = FALSE) THEN
5514            IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
5515            l_valid := 1;
5516         END IF;
5517      END IF;
5518 
5519      IBY_VALIDATIONSETS_PUB.evaluateCondition(
5520          'EXT_BANK_ACC_IBAN',
5521          l_document_rec.ext_bank_acc_iban,
5522          'MAXLENGTH',
5523          null,
5524          8,
5525          l_valResult,
5526          l_docErrorRec);
5527 
5528      IF (l_valResult = FALSE) THEN
5529         IBY_VALIDATIONSETS_PUB.evaluateCondition(
5530             'EXT_BANK_NUM',
5531             l_document_rec.ext_bank_num,
5532             'MAXLENGTH',
5533             null,
5534             8,
5535             l_valResult,
5536             l_docErrorRec);
5537 
5538         IF (l_valResult = FALSE) THEN
5539            IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
5540            l_valid := 1;
5541         END IF;
5542      END IF;
5543 
5544      -- Validate supplier name
5545      IBY_VALIDATIONSETS_PUB.evaluateCondition(
5546          'PAYEE_PARTY_NAME',
5547          l_document_rec.payee_party_name,
5548          'MAXLENGTH',
5549          null,
5550          35,
5551          l_valResult,
5552          l_docErrorRec);
5553 
5554      IF (l_valResult = FALSE) THEN
5555         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
5556         l_valid := 1;
5557      END IF;
5558 
5559      IF (l_valResult = FALSE) THEN
5560         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
5561         l_valid := 1;
5562      END IF;
5563 
5564      -- Validate supplier site address
5565      IBY_VALIDATIONSETS_PUB.evaluateCondition(
5566          'PAYEE_PARTY_SITE_ADDR1',
5567          l_document_rec.payee_party_addr1 || l_document_rec.payee_party_city ||
5568          		l_document_rec.payee_party_postal,
5569          'MAXLENGTH',
5570          null,
5571          35,
5572          l_valResult,
5573          l_docErrorRec);
5574 
5575      IF (l_valResult = FALSE) THEN
5576         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
5577         l_valid := 1;
5578      END IF;
5579 
5580      -- Inserting errors into IBY_TRANSACTION_ERRORS
5581      IF (l_valid = 1) THEN
5582         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
5583      END IF;
5584 
5585      -- Return the Validation Result
5586      x_result := l_valid;
5587 
5588  END CITI_PL_EFT_MTMS_PAYEE;
5589 
5590 /*--------------------------------------------------------------------
5591  | NAME:
5592  |     P_CITI_PL_EFT_MTMS_PMT
5593  |
5594  | PURPOSE:
5595  |     Citibank Polish MTMS EFT payment validation
5596  |
5597  | PARAMETERS:
5598  |     IN
5599  |
5600  |
5601  |     OUT
5602  |
5603  |
5604  | RETURNS:
5605  |
5606  | NOTES:
5607  |
5608  *---------------------------------------------------------------------*/
5609  PROCEDURE P_CITI_PL_EFT_MTMS_PMT (
5610      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
5611      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
5612      p_payment_id         IN IBY_PAYMENTS_ALL.payment_id%type,
5613      p_is_online_val      IN VARCHAR2,
5614      x_result             OUT NOCOPY NUMBER)
5615  IS
5616 
5617  l_payment_rec IBY_VALIDATIONSETS_PUB.paymentRecType;
5618  l_valResult BOOLEAN;
5619  l_valid NUMBER := 0;
5620  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
5621  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
5622 
5623  l_max_payment_amt number;
5624 
5625  BEGIN
5626 
5627      -- Initializing the payment record
5628      IBY_VALIDATIONSETS_PUB.initPaymentData(p_payment_id,l_payment_rec);
5629 
5630      l_docErrorRec.validation_set_code := p_validation_set_code;
5631      l_docErrorRec.transaction_id := p_payment_id;
5632      l_docErrorRec.transaction_type := 'PAYMENT';
5633      l_docErrorRec.calling_app_doc_unique_ref1 := p_payment_id;
5634 
5635      -- Validate payment amount
5636      IBY_VALIDATIONSETS_PUB.getParamValue(
5637                             p_validation_assign_id,
5638                             p_validation_set_code,
5639                             'MAX_PAYMENT_AMOUNT',
5640                             l_max_payment_amt );
5641 
5642      -- Validate transaction amount
5643      IBY_VALIDATIONSETS_PUB.evaluateCondition(
5644          'PMT_AMOUNT',
5645          l_payment_rec.pmt_amount,
5646          'LESSEQUAL',
5647          null,
5648          l_max_payment_amt,
5649          l_valResult,
5650          l_docErrorRec);
5651 
5652      IF (l_valResult = FALSE) THEN
5653         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
5654         l_valid := 1;
5655      END IF;
5656 
5657      -- Validate concatenated list of invoice numbers
5658      IBY_VALIDATIONSETS_PUB.evaluateCondition(
5659          'PMT_DETAIL',
5660          l_payment_rec.pmt_detail,
5661          'MAXLENGTH',
5662          null,
5663          140,
5664          l_valResult,
5665          l_docErrorRec);
5666 
5667      IF (l_valResult = FALSE) THEN
5668         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
5669         l_valid := 1;
5670      END IF;
5671 
5672      -- Inserting errors into IBY_TRANSACTION_ERRORS
5673      -- The first parameter p_is_online_val takes hardcoded value 'N'.
5674      IF (l_valid = 1) THEN
5675          IBY_VALIDATIONSETS_PUB.insert_transaction_errors('N',l_docErrorTab);
5676      END IF;
5677 
5678      -- Return the Validation Result
5679      x_result := l_valid;
5680 
5681  END P_CITI_PL_EFT_MTMS_PMT;
5682 
5683 /*--------------------------------------------------------------------
5684  | NAME:
5685  |     PEKAO_PL_WIRE_TR_INTERNAL_BANK
5686  |
5687  | PURPOSE:
5688  |     Pekao Polish transfer wire internal bank validation
5689  |
5690  | PARAMETERS:
5691  |     IN
5692  |
5693  |
5694  |     OUT
5695  |
5696  |
5697  | RETURNS:
5698  |
5699  | NOTES:
5700  |
5701  *---------------------------------------------------------------------*/
5702  PROCEDURE PEKAO_PL_WIRE_TR_INTERNAL_BANK (
5703      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
5704      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
5705      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
5706      p_is_online_val      IN VARCHAR2,
5707      x_result             OUT NOCOPY NUMBER)
5708  IS
5709 
5710  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
5711  l_valResult BOOLEAN;
5712  l_valid NUMBER := 0;
5713  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
5714  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
5715 
5716  BEGIN
5717 
5718      -- Initializing the document record with the Document Payables information
5719      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
5720 
5721      l_docErrorRec.validation_set_code := p_validation_set_code;
5722      l_docErrorRec.transaction_id := p_document_id;
5723      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
5724      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
5725      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
5726      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
5727 
5728      -- Validate payer bank account number
5729      IBY_VALIDATIONSETS_PUB.evaluateCondition(
5730          'INT_BANK_ACC_IBAN',
5731          l_document_rec.int_bank_acc_iban,
5732          'NOTNULL',
5733          null,
5734          null,
5735          l_valResult,
5736          l_docErrorRec);
5737 
5738      IF (l_valResult = FALSE) THEN
5739         IBY_VALIDATIONSETS_PUB.evaluateCondition(
5740             'INT_BANK_ACC_NUM',
5741             l_document_rec.int_bank_acc_num,
5742             'MAXLENGTH',
5743             null,
5744             34,
5745             l_valResult,
5746             l_docErrorRec);
5747 
5748         IF (l_valResult = FALSE) THEN
5749            IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
5750            l_valid := 1;
5751         END IF;
5752      END IF;
5753 
5754      -- Inserting errors into IBY_TRANSACTION_ERRORS
5755      IF (l_valid = 1) THEN
5756         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
5757      END IF;
5758 
5759      -- Return the Validation Result
5760      x_result := l_valid;
5761 
5762  END PEKAO_PL_WIRE_TR_INTERNAL_BANK;
5763 
5764 /*--------------------------------------------------------------------
5765  | NAME:
5766  |     PEKAO_PL_WIRE_TR_PAYEE
5767  |
5768  | PURPOSE:
5769  |     PeKao Polish transfer wire payee validation
5770  |
5771  | PARAMETERS:
5772  |     IN
5773  |
5774  |
5775  |     OUT
5776  |
5777  |
5778  | RETURNS:
5779  |
5780  | NOTES:
5781  |
5782  *---------------------------------------------------------------------*/
5783  PROCEDURE PEKAO_PL_WIRE_TR_PAYEE (
5784      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
5785      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
5786      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
5787      p_is_online_val      IN VARCHAR2,
5788      x_result             OUT NOCOPY NUMBER)
5789  IS
5790 
5791  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
5792  l_valResult BOOLEAN;
5793  l_valid NUMBER := 0;
5794  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
5795  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
5796 
5797  BEGIN
5798 
5799      -- Initializing the document record
5800      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
5801 
5802      l_docErrorRec.validation_set_code := p_validation_set_code;
5803      l_docErrorRec.transaction_id := p_document_id;
5804      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
5805      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
5806      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
5807      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
5808 
5809      -- Validate supplier bank number
5810      IBY_VALIDATIONSETS_PUB.evaluateCondition(
5811          'EXT_BANK_ACC_IBAN',
5812          l_document_rec.ext_bank_acc_iban,
5813          'NOTNULL',
5814          null,
5815          null,
5816          l_valResult,
5817          l_docErrorRec);
5818 
5819      IF (l_valResult = FALSE) THEN
5820         IBY_VALIDATIONSETS_PUB.evaluateCondition(
5821             'EXT_BANK_NUM',
5822             l_document_rec.ext_bank_num,
5823             'NOTNULL',
5824             null,
5825             null,
5826             l_valResult,
5827             l_docErrorRec);
5828 
5829         IF (l_valResult = FALSE) THEN
5830            IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
5831            l_valid := 1;
5832         END IF;
5833      END IF;
5834 
5835      IBY_VALIDATIONSETS_PUB.evaluateCondition(
5836          'EXT_BANK_ACC_IBAN',
5837          l_document_rec.ext_bank_acc_iban,
5838          'MAXLENGTH',
5839          null,
5840          35,
5841          l_valResult,
5842          l_docErrorRec);
5843 
5844      IF (l_valResult = FALSE) THEN
5845         IBY_VALIDATIONSETS_PUB.evaluateCondition(
5846             'EXT_BANK_NUM',
5847             l_document_rec.ext_bank_num,
5848             'MAXLENGTH',
5849             null,
5850             35,
5851             l_valResult,
5852             l_docErrorRec);
5853 
5854         IF (l_valResult = FALSE) THEN
5855            IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
5856            l_valid := 1;
5857         END IF;
5858      END IF;
5859 
5860      -- Inserting errors into IBY_TRANSACTION_ERRORS
5861      IF (l_valid = 1) THEN
5862         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
5863      END IF;
5864 
5865      -- Return the Validation Result
5866      x_result := l_valid;
5867 
5868  END PEKAO_PL_WIRE_TR_PAYEE;
5869 
5870 /*--------------------------------------------------------------------
5871  | NAME:
5872  |     PEKAO_PL_WIRE_TR_DOC
5873  |
5874  | PURPOSE:
5875  |     Pekao Polish transfer wire document validation
5876  |
5877  | PARAMETERS:
5878  |     IN
5879  |
5880  |
5881  |     OUT
5882  |
5883  |
5884  | RETURNS:
5885  |
5886  | NOTES:
5887  |
5888  *---------------------------------------------------------------------*/
5889  PROCEDURE PEKAO_PL_WIRE_TR_DOC (
5890      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
5891      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
5892      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
5893      p_is_online_val      IN VARCHAR2,
5894      x_result             OUT NOCOPY NUMBER)
5895  IS
5896 
5897  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
5898  l_valResult BOOLEAN;
5899  l_valid NUMBER := 0;
5900  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
5901  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
5902 
5903  BEGIN
5904 
5905      -- Initializing the document record with the Document Payables information
5906      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
5907 
5908      l_docErrorRec.validation_set_code := p_validation_set_code;
5909      l_docErrorRec.transaction_id := p_document_id;
5910      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
5911      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
5912      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
5913      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
5914 
5915      -- Validate invoice reference ...
5916 
5917      -- Inserting errors into IBY_TRANSACTION_ERRORS
5918      IF (l_valid = 1) THEN
5919         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
5920      END IF;
5921 
5922      -- Return the Validation Result
5923      x_result := l_valid;
5924 
5925  END PEKAO_PL_WIRE_TR_DOC;
5926 
5927 /*--------------------------------------------------------------------
5928  | NAME:
5929  |     P_PEKAO_PL_WIRE_TR_PMT
5930  |
5931  | PURPOSE:
5932  |     PeKao Polish transfer wire payment validation
5933  |
5934  | PARAMETERS:
5935  |     IN
5936  |
5937  |
5938  |     OUT
5939  |
5940  |
5941  | RETURNS:
5942  |
5943  | NOTES:
5944  |
5945  *---------------------------------------------------------------------*/
5946  PROCEDURE P_PEKAO_PL_WIRE_TR_PMT (
5947      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
5948      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
5949      p_payment_id         IN IBY_PAYMENTS_ALL.payment_id%type,
5950      p_is_online_val      IN VARCHAR2,
5951      x_result             OUT NOCOPY NUMBER)
5952  IS
5953 
5954  l_payment_rec IBY_VALIDATIONSETS_PUB.paymentRecType;
5955  l_valResult BOOLEAN;
5956  l_valid NUMBER := 0;
5957  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
5958  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
5959 
5960  l_max_payment_amt number;
5961 
5962  BEGIN
5963 
5964      -- Initializing the payment record
5965      IBY_VALIDATIONSETS_PUB.initPaymentData(p_payment_id,l_payment_rec);
5966 
5967      l_docErrorRec.validation_set_code := p_validation_set_code;
5968      l_docErrorRec.transaction_id := p_payment_id;
5969      l_docErrorRec.transaction_type := 'PAYMENT';
5970      l_docErrorRec.calling_app_doc_unique_ref1 := p_payment_id;
5971 
5972      -- Validate payment amount
5973      IBY_VALIDATIONSETS_PUB.getParamValue(
5974                             p_validation_assign_id,
5975                             p_validation_set_code,
5976                             'MAX_PAYMENT_AMOUNT',
5977                             l_max_payment_amt );
5978 
5979      -- Validate transaction amount
5980      IBY_VALIDATIONSETS_PUB.evaluateCondition(
5981          'PMT_AMOUNT',
5982          l_payment_rec.pmt_amount,
5983          'LESSEQUAL',
5984          null,
5985          l_max_payment_amt,
5986          l_valResult,
5987          l_docErrorRec);
5988 
5989      IF (l_valResult = FALSE) THEN
5990         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
5991         l_valid := 1;
5992      END IF;
5993 
5994      -- Validate concatenated list of invoice numbers
5995      IBY_VALIDATIONSETS_PUB.evaluateCondition(
5996          'PMT_DETAIL',
5997          l_payment_rec.pmt_detail,
5998          'MAXLENGTH',
5999          null,
6000          140,
6001          l_valResult,
6002          l_docErrorRec);
6003 
6004      IF (l_valResult = FALSE) THEN
6005         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
6006         l_valid := 1;
6007      END IF;
6008 
6009      -- Inserting errors into IBY_TRANSACTION_ERRORS
6010      -- The first parameter p_is_online_val takes hardcoded value 'N'.
6011      IF (l_valid = 1) THEN
6012          IBY_VALIDATIONSETS_PUB.insert_transaction_errors('N',l_docErrorTab);
6013      END IF;
6014 
6015      -- Return the Validation Result
6016      x_result := l_valid;
6017 
6018  END P_PEKAO_PL_WIRE_TR_PMT;
6019 
6020 /*--------------------------------------------------------------------
6021  | NAME:
6022  |     PEKAO_PL_WIRE_ST_INTERNAL_BANK
6023  |
6024  | PURPOSE:
6025  |     Pekao Polish standard wire internal bank validation
6026  |
6027  | PARAMETERS:
6028  |     IN
6029  |
6030  |
6031  |     OUT
6032  |
6033  |
6034  | RETURNS:
6035  |
6036  | NOTES:
6037  |
6038  *---------------------------------------------------------------------*/
6039  PROCEDURE PEKAO_PL_WIRE_ST_INTERNAL_BANK (
6040      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
6041      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
6042      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
6043      p_is_online_val      IN VARCHAR2,
6044      x_result             OUT NOCOPY NUMBER)
6045  IS
6046 
6047  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
6048  l_valResult BOOLEAN;
6049  l_valid NUMBER := 0;
6050  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
6051  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
6052 
6053  BEGIN
6054 
6055      -- Initializing the document record with the Document Payables information
6056      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
6057 
6058      l_docErrorRec.validation_set_code := p_validation_set_code;
6059      l_docErrorRec.transaction_id := p_document_id;
6060      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
6061      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
6062      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
6063      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
6064 
6065      -- Validate payer bank account number
6066      IBY_VALIDATIONSETS_PUB.evaluateCondition(
6067          'INT_BANK_ACC_IBAN',
6068          l_document_rec.int_bank_acc_iban,
6069          'NOTNULL',
6070          null,
6071          null,
6072          l_valResult,
6073          l_docErrorRec);
6074 
6075      IF (l_valResult = FALSE) THEN
6076         IBY_VALIDATIONSETS_PUB.evaluateCondition(
6077             'INT_BANK_ACC_NUM',
6078             l_document_rec.int_bank_acc_num,
6079             'MAXLENGTH',
6080             null,
6081             34,
6082             l_valResult,
6083             l_docErrorRec);
6084 
6085         IF (l_valResult = FALSE) THEN
6086            IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
6087            l_valid := 1;
6088         END IF;
6089      END IF;
6090 
6091      -- Inserting errors into IBY_TRANSACTION_ERRORS
6092      IF (l_valid = 1) THEN
6093         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
6094      END IF;
6095 
6096      -- Return the Validation Result
6097      x_result := l_valid;
6098 
6099  END PEKAO_PL_WIRE_ST_INTERNAL_BANK;
6100 
6101 /*--------------------------------------------------------------------
6102  | NAME:
6103  |     PEKAO_PL_WIRE_ST_PAYEE
6104  |
6105  | PURPOSE:
6106  |     PeKao Polish standard wire payee validation
6107  |
6108  | PARAMETERS:
6109  |     IN
6110  |
6111  |
6112  |     OUT
6113  |
6114  |
6115  | RETURNS:
6116  |
6117  | NOTES:
6118  |
6119  *---------------------------------------------------------------------*/
6120  PROCEDURE PEKAO_PL_WIRE_ST_PAYEE (
6121      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
6122      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
6123      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
6124      p_is_online_val      IN VARCHAR2,
6125      x_result             OUT NOCOPY NUMBER)
6126  IS
6127 
6128  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
6129  l_valResult BOOLEAN;
6130  l_valid NUMBER := 0;
6131  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
6132  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
6133 
6134  BEGIN
6135 
6136      -- Initializing the document record
6137      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
6138 
6139      l_docErrorRec.validation_set_code := p_validation_set_code;
6140      l_docErrorRec.transaction_id := p_document_id;
6141      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
6142      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
6143      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
6144      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
6145 
6146      -- Validate supplier bank number
6147      IBY_VALIDATIONSETS_PUB.evaluateCondition(
6148          'EXT_BANK_ACC_IBAN',
6149          l_document_rec.ext_bank_acc_iban,
6150          'NOTNULL',
6151          null,
6152          null,
6153          l_valResult,
6154          l_docErrorRec);
6155 
6156      IF (l_valResult = FALSE) THEN
6157         IBY_VALIDATIONSETS_PUB.evaluateCondition(
6158             'EXT_BANK_NUM',
6159             l_document_rec.ext_bank_num,
6160             'NOTNULL',
6161             null,
6162             null,
6163             l_valResult,
6164             l_docErrorRec);
6165 
6166         IF (l_valResult = FALSE) THEN
6167            IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
6168            l_valid := 1;
6169         END IF;
6170      END IF;
6171 
6172      IBY_VALIDATIONSETS_PUB.evaluateCondition(
6173          'EXT_BANK_ACC_IBAN',
6174          l_document_rec.ext_bank_acc_iban,
6175          'MAXLENGTH',
6176          null,
6177          35,
6178          l_valResult,
6179          l_docErrorRec);
6180 
6181      IF (l_valResult = FALSE) THEN
6182         IBY_VALIDATIONSETS_PUB.evaluateCondition(
6183             'EXT_BANK_NUM',
6184             l_document_rec.ext_bank_num,
6185             'MAXLENGTH',
6186             null,
6187             35,
6188             l_valResult,
6189             l_docErrorRec);
6190 
6191         IF (l_valResult = FALSE) THEN
6192            IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
6193            l_valid := 1;
6194         END IF;
6195      END IF;
6196 
6197      -- Inserting errors into IBY_TRANSACTION_ERRORS
6198      IF (l_valid = 1) THEN
6199         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
6200      END IF;
6201 
6202      -- Return the Validation Result
6203      x_result := l_valid;
6204 
6205  END PEKAO_PL_WIRE_ST_PAYEE;
6206 
6207 /*--------------------------------------------------------------------
6208  | NAME:
6209  |     PEKAO_PL_WIRE_ST_DOC
6210  |
6211  | PURPOSE:
6212  |     Pekao Polish standard wire document validation
6213  |
6214  | PARAMETERS:
6215  |     IN
6216  |
6217  |
6218  |     OUT
6219  |
6220  |
6221  | RETURNS:
6222  |
6223  | NOTES:
6224  |
6225  *---------------------------------------------------------------------*/
6226  PROCEDURE PEKAO_PL_WIRE_ST_DOC (
6227      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
6228      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
6229      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
6230      p_is_online_val      IN VARCHAR2,
6231      x_result             OUT NOCOPY NUMBER)
6232  IS
6233 
6234  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
6235  l_valResult BOOLEAN;
6236  l_valid NUMBER := 0;
6237  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
6238  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
6239 
6240  BEGIN
6241 
6242      -- Initializing the document record with the Document Payables information
6243      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
6244 
6245      l_docErrorRec.validation_set_code := p_validation_set_code;
6246      l_docErrorRec.transaction_id := p_document_id;
6247      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
6248      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
6249      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
6250      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
6251 
6252      -- Validate invoice document sequence numbers
6253 
6254      -- Inserting errors into IBY_TRANSACTION_ERRORS
6255      IF (l_valid = 1) THEN
6256         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
6257      END IF;
6258 
6259      -- Return the Validation Result
6260      x_result := l_valid;
6261 
6262  END PEKAO_PL_WIRE_ST_DOC;
6263 
6264 /*--------------------------------------------------------------------
6265  | NAME:
6266  |     CITI_PT_EFT_DOM_PAYEE
6267  |
6268  | PURPOSE:
6269  |     Citibank Portuguese domestic EFT payee validation
6270  |
6271  | PARAMETERS:
6272  |     IN
6273  |
6274  |
6275  |     OUT
6276  |
6277  |
6278  | RETURNS:
6279  |
6280  | NOTES:
6281  |
6282  *---------------------------------------------------------------------*/
6283  PROCEDURE CITI_PT_EFT_DOM_PAYEE (
6284      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
6285      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
6286      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
6287      p_is_online_val      IN VARCHAR2,
6288      x_result             OUT NOCOPY NUMBER)
6289  IS
6290 
6291  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
6292  l_valResult BOOLEAN;
6293  l_valid NUMBER := 0;
6294  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
6295  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
6296 
6297  BEGIN
6298 
6299      -- Initializing the document record
6300      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
6301 
6302      l_docErrorRec.validation_set_code := p_validation_set_code;
6303      l_docErrorRec.transaction_id := p_document_id;
6304      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
6305      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
6306      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
6307      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
6308 
6309      -- Validate target name
6310      if l_document_rec.delivery_channel_code = '0050' then
6311         IBY_VALIDATIONSETS_PUB.evaluateCondition(
6312             'PAYEE_PARTY_NAME',
6313             l_document_rec.payee_party_name,
6314             'MAXLENGTH',
6315             null,
6316             35,
6317             l_valResult,
6318             l_docErrorRec);
6319 
6320         IF (l_valResult = FALSE) THEN
6321            IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
6322            l_valid := 1;
6323         END IF;
6324      else
6325         IBY_VALIDATIONSETS_PUB.evaluateCondition(
6326             'PAYEE_PARTY_NAME',
6327             l_document_rec.payee_party_name,
6328             'MAXLENGTH',
6329             null,
6330             27,
6331             l_valResult,
6332             l_docErrorRec);
6333 
6334         IF (l_valResult = FALSE) THEN
6335            IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
6336            l_valid := 1;
6337         END IF;
6338      end if;
6339 
6340      -- Validate target bank country code
6341      IBY_VALIDATIONSETS_PUB.evaluateCondition(
6342          'EXT_BANK_BRANCH_COUNTRY',
6343          l_document_rec.ext_bank_branch_country,
6344          'STRIS',
6345          'PT',
6346          null,
6347          l_valResult,
6348          l_docErrorRec);
6349 
6350      IF (l_valResult = FALSE) THEN
6351         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
6352         l_valid := 1;
6353      END IF;
6354 
6355      -- Inserting errors into IBY_TRANSACTION_ERRORS
6356      IF (l_valid = 1) THEN
6357         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
6358      END IF;
6359 
6360      -- Return the Validation Result
6361      x_result := l_valid;
6362 
6363  END CITI_PT_EFT_DOM_PAYEE;
6364 
6365  /*--------------------------------------------------------------------
6366   | NAME:
6367   |     CITI_PT_EFT_DOM_DOC
6368   |
6369   | PURPOSE:
6370   |     Citibank Portuguese domestic EFT document validation
6371   |
6372   | PARAMETERS:
6373   |     IN
6374   |
6375   |
6376   |     OUT
6377   |
6378   |
6379   | RETURNS:
6380   |
6381   | NOTES:
6382   |
6383   *---------------------------------------------------------------------*/
6384   PROCEDURE CITI_PT_EFT_DOM_DOC (
6385       p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
6386       p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
6387       p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
6388       p_is_online_val      IN VARCHAR2,
6389       x_result             OUT NOCOPY NUMBER)
6390   IS
6391 
6392   l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
6393   l_valResult BOOLEAN;
6394   l_valid NUMBER := 0;
6395   l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
6396   l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
6397 
6398   BEGIN
6399 
6400       -- Initializing the document record
6401       IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
6402 
6403       l_docErrorRec.validation_set_code := p_validation_set_code;
6404       l_docErrorRec.transaction_id := p_document_id;
6405       l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
6406       l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
6407       l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
6408       l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
6409 
6410       -- Validate transaction code
6411       IBY_VALIDATIONSETS_PUB.evaluateCondition(
6412           'DELIVERY_CHANNEL_CODE',
6413           l_document_rec.delivery_channel_CODE,
6414           'INDELIV',
6415           'PT',
6416           null,
6417           l_valResult,
6418           l_docErrorRec);
6419 
6420       IF (l_valResult = FALSE) THEN
6421          IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
6422          l_valid := 1;
6423       END IF;
6424 
6425       -- Inserting errors into IBY_TRANSACTION_ERRORS
6426       IF (l_valid = 1) THEN
6427          IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
6428       END IF;
6429 
6430       -- Return the Validation Result
6431       x_result := l_valid;
6432 
6433   END CITI_PT_EFT_DOM_DOC;
6434 
6435 /*--------------------------------------------------------------------
6436  | NAME:
6437  |     P_CITI_PT_EFT_DOM_PMT
6438  |
6439  | PURPOSE:
6440  |     Citibank Portuguese domestic EFT payment validation
6441  |
6442  | PARAMETERS:
6443  |     IN
6444  |
6445  |
6446  |     OUT
6447  |
6448  |
6449  | RETURNS:
6450  |
6451  | NOTES:
6452  |
6453  *---------------------------------------------------------------------*/
6454  PROCEDURE P_CITI_PT_EFT_DOM_PMT (
6455      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
6456      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
6457      p_payment_id         IN IBY_PAYMENTS_ALL.payment_id%type,
6458      p_is_online_val      IN VARCHAR2,
6459      x_result             OUT NOCOPY NUMBER)
6460  IS
6461 
6462  l_payment_rec IBY_VALIDATIONSETS_PUB.paymentRecType;
6463  l_valResult BOOLEAN;
6464  l_valid NUMBER := 0;
6465  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
6466  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
6467 
6468  BEGIN
6469 
6470      -- Initializing the payment record
6471      IBY_VALIDATIONSETS_PUB.initPaymentData(p_payment_id,l_payment_rec);
6472 
6473      l_docErrorRec.validation_set_code := p_validation_set_code;
6474      l_docErrorRec.transaction_id := p_payment_id;
6475      l_docErrorRec.transaction_type := 'PAYMENT';
6476      l_docErrorRec.calling_app_doc_unique_ref1 := p_payment_id;
6477 
6478      -- Validate transaction amount
6479      if l_payment_rec.pmt_delivery_channel_code = '0050' then
6480         IBY_VALIDATIONSETS_PUB.evaluateCondition(
6481             'PMT_AMOUNT',
6482             l_payment_rec.pmt_amount,
6483             'MAXLENGTH',
6484             null,
6485             15,
6486             l_valResult,
6487             l_docErrorRec);
6488 
6489         IF (l_valResult = FALSE) THEN
6490            IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
6491            l_valid := 1;
6492         END IF;
6493       else
6494         IBY_VALIDATIONSETS_PUB.evaluateCondition(
6495             'PMT_AMOUNT',
6496             l_payment_rec.pmt_amount,
6497             'MAXLENGTH',
6498             null,
6499             11,
6500             l_valResult,
6501             l_docErrorRec);
6502 
6503         IF (l_valResult = FALSE) THEN
6504            IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
6505 	   l_valid := 1;
6506         END IF;
6507        end if;
6508 
6509      -- Inserting errors into IBY_TRANSACTION_ERRORS
6510      -- The first parameter p_is_online_val takes hardcoded value 'N'.
6511      IF (l_valid = 1) THEN
6512          IBY_VALIDATIONSETS_PUB.insert_transaction_errors('N',l_docErrorTab);
6513      END IF;
6514 
6515      -- Return the Validation Result
6516      x_result := l_valid;
6517 
6518  END P_CITI_PT_EFT_DOM_PMT;
6519 
6520 /*--------------------------------------------------------------------
6521  | NAME:
6522  |     PT_CHECK_GEN
6523  |
6524  | PURPOSE:
6525  |     Portuguese check generic validation
6526  |
6527  | PARAMETERS:
6528  |     IN
6529  |
6530  |
6531  |     OUT
6532  |
6533  |
6534  | RETURNS:
6535  |
6536  | NOTES:
6537  |
6538  *---------------------------------------------------------------------*/
6539  PROCEDURE PT_CHECK_GEN (
6540      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
6541      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
6542      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
6543      p_is_online_val      IN VARCHAR2,
6544      x_result             OUT NOCOPY NUMBER)
6545  IS
6546 
6547  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
6548  l_valResult BOOLEAN;
6549  l_valid NUMBER := 0;
6550  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
6551  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
6552 
6553  BEGIN
6554 
6555      -- Initializing the document record
6556      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
6557 
6558      l_docErrorRec.validation_set_code := p_validation_set_code;
6559      l_docErrorRec.transaction_id := p_document_id;
6560      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
6561      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
6562      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
6563      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
6564 
6565      -- Validate first party office site
6566      IBY_VALIDATIONSETS_PUB.evaluateCondition(
6567          'PAYER_LE_NAME',
6568          l_document_rec.payer_le_name,
6569          'NOTNULL',
6570          null,
6571          null,
6572          l_valResult,
6573          l_docErrorRec);
6574 
6575      IF (l_valResult = FALSE) THEN
6576         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
6577         l_valid := 1;
6578      END IF;
6579 
6580      -- Insert errors into IBY_TRANSACTION_ERRORS
6581      IF (l_valid = 1) THEN
6582         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
6583      END IF;
6584 
6585      -- Return the Validation Result
6586      x_result := l_valid;
6587 
6588  END PT_CHECK_GEN;
6589 
6590 /*--------------------------------------------------------------------
6591  | NAME:
6592  |     CITI_SE_EFT_DOM_PAYEE
6593  |
6594  | PURPOSE:
6595  |     Citibank Swedish domestic EFT payee
6596  |
6597  | PARAMETERS:
6598  |     IN
6599  |
6600  |
6601  |     OUT
6602  |
6603  |
6604  | RETURNS:
6605  |
6606  | NOTES:
6607  |
6608  *---------------------------------------------------------------------*/
6609  PROCEDURE CITI_SE_EFT_DOM_PAYEE (
6610      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
6611      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
6612      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
6613      p_is_online_val      IN VARCHAR2,
6614      x_result             OUT NOCOPY NUMBER)
6615  IS
6616 
6617  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
6618  l_valResult BOOLEAN;
6619  l_valid NUMBER := 0;
6620  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
6621  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
6622 
6623  BEGIN
6624 
6625      -- Initializing the document record
6626      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
6627 
6628      l_docErrorRec.validation_set_code := p_validation_set_code;
6629      l_docErrorRec.transaction_id := p_document_id;
6630      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
6631      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
6632      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
6633      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
6634 
6635      -- Validate target name
6636      IBY_VALIDATIONSETS_PUB.evaluateCondition(
6637          'PAYEE_PARTY_NAME',
6638          l_document_rec.payee_party_name,
6639          'MAXLENGTH',
6640          null,
6641          35,
6642          l_valResult,
6643          l_docErrorRec);
6644 
6645      IF (l_valResult = FALSE) THEN
6646            IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
6647            l_valid := 1;
6648      END IF;
6649 
6650      -- Validate target address line 1
6651      IBY_VALIDATIONSETS_PUB.evaluateCondition(
6652          'PAYEE_PARTY_SITE_ADDR1',
6653          l_document_rec.payee_party_addr1,
6654          'MAXLENGTH',
6655          null,
6656          35,
6657          l_valResult,
6658          l_docErrorRec);
6659 
6660      IF (l_valResult = FALSE) THEN
6661         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
6662         l_valid := 1;
6663      END IF;
6664 
6665      -- Validate target address line 2
6666      IBY_VALIDATIONSETS_PUB.evaluateCondition(
6667          'PAYEE_PARTY_SITE_POSTAL',
6668          l_document_rec.payee_party_postal,
6669          'MAXLENGTH',
6670          null,
6671          5,
6672          l_valResult,
6673          l_docErrorRec);
6674 
6675      IF (l_valResult = FALSE) THEN
6676         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
6677         l_valid := 1;
6678      END IF;
6679 
6680      IBY_VALIDATIONSETS_PUB.evaluateCondition(
6681          'PAYEE_PARTY_SITE_POSTAL',
6682          l_document_rec.payee_party_postal,
6683          'DIGITSONLY',
6684          null,
6685          null,
6686          l_valResult,
6687          l_docErrorRec);
6688 
6689      IF (l_valResult = FALSE) THEN
6690         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
6691         l_valid := 1;
6692      END IF;
6693 
6694      IBY_VALIDATIONSETS_PUB.evaluateCondition(
6695          'PAYEE_PARTY_SITE_CITY',
6696          l_document_rec.payee_party_city,
6697          'NOTNULL',
6698          null,
6699          null,
6700          l_valResult,
6701          l_docErrorRec);
6702 
6703      IF (l_valResult = FALSE) THEN
6704         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
6705         l_valid := 1;
6706      END IF;
6707 
6708      -- Validate target bank account number
6709      IBY_VALIDATIONSETS_PUB.evaluateCondition(
6710          'EXT_BANK_ACC_NUM',
6711          l_document_rec.ext_bank_acc_num,
6712          'MAXLENGTH',
6713          null,
6714          12,
6715          l_valResult,
6716          l_docErrorRec);
6717 
6718      IF (l_valResult = FALSE) THEN
6719         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
6720         l_valid := 1;
6721      END IF;
6722 
6723      -- Inserting errors into IBY_TRANSACTION_ERRORS
6724      IF (l_valid = 1) THEN
6725         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
6726      END IF;
6727 
6728      -- Return the Validation Result
6729      x_result := l_valid;
6730 
6731  END CITI_SE_EFT_DOM_PAYEE;
6732 
6733  /*--------------------------------------------------------------------
6734   | NAME:
6735   |     CITI_SE_EFT_DOM_DOC
6736   |
6737   | PURPOSE:
6738   |     Citibank Swedish domestic EFT document validation
6739   |
6740   | PARAMETERS:
6741   |     IN
6742   |
6743   |
6744   |     OUT
6745   |
6746   |
6747   | RETURNS:
6748   |
6749   | NOTES:
6750   |
6751   *---------------------------------------------------------------------*/
6752   PROCEDURE CITI_SE_EFT_DOM_DOC (
6753       p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
6754       p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
6755       p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
6756       p_is_online_val      IN VARCHAR2,
6757       x_result             OUT NOCOPY NUMBER)
6758   IS
6759 
6760   l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
6761   l_valResult BOOLEAN;
6762   l_valid NUMBER := 0;
6763   l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
6764   l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
6765 
6766   BEGIN
6767 
6768       -- Initializing the document record
6769       IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
6770 
6771       l_docErrorRec.validation_set_code := p_validation_set_code;
6772       l_docErrorRec.transaction_id := p_document_id;
6773       l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
6774       l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
6775       l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
6776       l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
6777 
6778       -- Validate transaction code
6779       IBY_VALIDATIONSETS_PUB.evaluateCondition(
6780           'DELIVERY_CHANNEL_CODE',
6781           l_document_rec.delivery_channel_CODE,
6782           'INDELIV',
6783           'SE',
6784           null,
6785           l_valResult,
6786           l_docErrorRec);
6787 
6788       IF (l_valResult = FALSE) THEN
6789          IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
6790          l_valid := 1;
6791       END IF;
6792 
6793       -- Inserting errors into IBY_TRANSACTION_ERRORS
6794       IF (l_valid = 1) THEN
6795          IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
6796       END IF;
6797 
6798       -- Return the Validation Result
6799       x_result := l_valid;
6800 
6801   END CITI_SE_EFT_DOM_DOC;
6802 
6803 /*--------------------------------------------------------------------
6804  | NAME:
6805  |     P_CITI_SE_EFT_DOM_PMT
6806  |
6807  | PURPOSE:
6808  |     Citibank Swedish domestic EFT payment validation
6809  |
6810  | PARAMETERS:
6811  |     IN
6812  |
6813  |
6814  |     OUT
6815  |
6816  |
6817  | RETURNS:
6818  |
6819  | NOTES:
6820  |
6821  *---------------------------------------------------------------------*/
6822  PROCEDURE P_CITI_SE_EFT_DOM_PMT (
6823      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
6824      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
6825      p_payment_id         IN IBY_PAYMENTS_ALL.payment_id%type,
6826      p_is_online_val      IN VARCHAR2,
6827      x_result             OUT NOCOPY NUMBER)
6828  IS
6829 
6830  l_payment_rec IBY_VALIDATIONSETS_PUB.paymentRecType;
6831  l_valResult BOOLEAN;
6832  l_valid NUMBER := 0;
6833  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
6834  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
6835 
6836  BEGIN
6837 
6838      -- Initializing the payment record
6839      IBY_VALIDATIONSETS_PUB.initPaymentData(p_payment_id,l_payment_rec);
6840 
6841      l_docErrorRec.validation_set_code := p_validation_set_code;
6842      l_docErrorRec.transaction_id := p_payment_id;
6843      l_docErrorRec.transaction_type := 'PAYMENT';
6844      l_docErrorRec.calling_app_doc_unique_ref1 := p_payment_id;
6845 
6846      -- Validate payment currency
6847      IBY_VALIDATIONSETS_PUB.evaluateCondition(
6848          'PMT_CURRENCY',
6849          l_payment_rec.pmt_currency,
6850          'STRIS',
6851          'SEK',
6852          null,
6853          l_valResult,
6854          l_docErrorRec);
6855 
6856      IF (l_valResult = FALSE) THEN
6857         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
6858         l_valid := 1;
6859      END IF;
6860 
6861      -- Validate transaction reference
6862      IBY_VALIDATIONSETS_PUB.evaluateCondition(
6863          'PMT_ID',
6864          l_payment_rec.pmt_id,
6865          'MAXLENGTH',
6866          null,
6867          16,
6868          l_valResult,
6869          l_docErrorRec);
6870 
6871      IF (l_valResult = FALSE) THEN
6872         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
6873         l_valid := 1;
6874      END IF;
6875 
6876      -- Inserting errors into IBY_TRANSACTION_ERRORS
6877      -- The first parameter p_is_online_val takes hardcoded value 'N'.
6878      IF (l_valid = 1) THEN
6879         IBY_VALIDATIONSETS_PUB.insert_transaction_errors('N',l_docErrorTab);
6880      END IF;
6881 
6882      -- Return the Validation Result
6883      x_result := l_valid;
6884 
6885  END P_CITI_SE_EFT_DOM_PMT;
6886 
6887 /*--------------------------------------------------------------------
6888  | NAME:
6889  |     SE_EFT_BANKGIRO_INLAND_DOC
6890  |
6891  | PURPOSE:
6892  |     Swedish Bankgiro Inland EFT document validation
6893  |
6894  | PARAMETERS:
6895  |     IN
6896  |
6897  |
6898  |     OUT
6899  |
6900  |
6901  | RETURNS:
6902  |
6903  | NOTES:
6904  |
6905  *---------------------------------------------------------------------*/
6906  PROCEDURE SE_EFT_BANKGIRO_INLAND_DOC (
6907      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
6908      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
6909      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
6910      p_is_online_val      IN VARCHAR2,
6911      x_result             OUT NOCOPY NUMBER)
6912  IS
6913 
6914  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
6915  l_valResult BOOLEAN;
6916  l_valid NUMBER := 0;
6917  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
6918  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
6919 
6920  BEGIN
6921 
6922      -- Initializing the document record
6923      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
6924 
6925      l_docErrorRec.validation_set_code := p_validation_set_code;
6926      l_docErrorRec.transaction_id := p_document_id;
6927      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
6928      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
6929      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
6930      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
6931 
6932      -- Validate payment currency
6933      IBY_VALIDATIONSETS_PUB.evaluateCondition(
6934          'DOCUMENT_PAY_CURRENCY',
6935          l_document_rec.document_pay_currency,
6936          'STRIS',
6937          'SEK',
6938          null,
6939          l_valResult,
6940          l_docErrorRec);
6941 
6942      IF (l_valResult = FALSE) THEN
6943         IBY_VALIDATIONSETS_PUB.evaluateCondition(
6944 	    'DOCUMENT_PAY_CURRENCY',
6945 	    l_document_rec.document_pay_currency,
6946 	    'STRIS',
6947 	    'EUR',
6948 	    null,
6949 	    l_valResult,
6950         l_docErrorRec);
6951      END IF;
6952 
6953      IF (l_valResult = FALSE) THEN
6954         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
6955         l_valid := 1;
6956      END IF;
6957 
6958      -- Validate payment type
6959      IBY_VALIDATIONSETS_PUB.evaluateCondition(
6960          'DELIVERY_CHANNEL_CODE',
6961          l_document_rec.delivery_channel_code,
6962          'STRISNOT',
6963          'CHECK',
6964          null,
6965          l_valResult,
6966          l_docErrorRec);
6967 
6968      IF (l_valResult = FALSE) THEN
6969         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
6970         l_valid := 1;
6971      END IF;
6972 
6973      -- Insert errors into IBY_TRANSACTION_ERRORS
6974      IF (l_valid = 1) THEN
6975         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
6976      END IF;
6977 
6978      -- Return the Validation Result
6979      x_result := l_valid;
6980 
6981  END SE_EFT_BANKGIRO_INLAND_DOC;
6982 
6983 /*--------------------------------------------------------------------
6984  | NAME:
6985  |     SE_EFT_BANKGIRO_UTLAND_DOC
6986  |
6987  | PURPOSE:
6988  |     Swedish Bankgiro Utland SISU EFT document validation
6989  |
6990  | PARAMETERS:
6991  |     IN
6992  |
6993  |
6994  |     OUT
6995  |
6996  |
6997  | RETURNS:
6998  |
6999  | NOTES:
7000  |
7001  *---------------------------------------------------------------------*/
7002  PROCEDURE SE_EFT_BANKGIRO_UTLAND_SI_DOC (
7003      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
7004      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
7005      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
7006      p_is_online_val      IN VARCHAR2,
7007      x_result             OUT NOCOPY NUMBER)
7008  IS
7009 
7010  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
7011  l_valResult BOOLEAN;
7012  l_valid NUMBER := 0;
7013  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
7014  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
7015 
7016  BEGIN
7017 
7018      -- Initializing the document record
7019      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
7020 
7021      l_docErrorRec.validation_set_code := p_validation_set_code;
7022      l_docErrorRec.transaction_id := p_document_id;
7023      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
7024      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
7025      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
7026      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
7027 
7028      -- Validate payment type
7029      IBY_VALIDATIONSETS_PUB.evaluateCondition(
7030          'DELIVERY_CHANNEL_CODE',
7031          '+'||l_document_rec.delivery_channel_code||'+',
7032          'NOTINSET',
7033          '+KONTOAVI+AVI+GIRO+',
7034          null,
7035          l_valResult,
7036          l_docErrorRec);
7037 
7038      IF (l_valResult = FALSE) THEN
7039         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
7040         l_valid := 1;
7041      END IF;
7042 
7043      -- Insert errors into IBY_TRANSACTION_ERRORS
7044      IF (l_valid = 1) THEN
7045         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
7046      END IF;
7047 
7048      -- Return the Validation Result
7049      x_result := l_valid;
7050 
7051  END SE_EFT_BANKGIRO_UTLAND_SI_DOC;
7052 
7053 /*--------------------------------------------------------------------
7054  | NAME:
7055  |     SE_EFT_BANKGIRO_UTLAND_UT_DOC
7056  |
7057  | PURPOSE:
7058  |     Swedish Bankgiro Utland UTLI EFT document validation
7059  |
7060  | PARAMETERS:
7061  |     IN
7062  |
7063  |
7064  |     OUT
7065  |
7066  |
7067  | RETURNS:
7068  |
7069  | NOTES:
7070  |
7071  *---------------------------------------------------------------------*/
7072  PROCEDURE SE_EFT_BANKGIRO_UTLAND_UT_DOC (
7073      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
7074      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
7075      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
7076      p_is_online_val      IN VARCHAR2,
7077      x_result             OUT NOCOPY NUMBER)
7078  IS
7079 
7080  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
7081  l_valResult BOOLEAN;
7082  l_valid NUMBER := 0;
7083  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
7084  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
7085 
7086  BEGIN
7087 
7088      -- Initializing the document record
7089      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
7090 
7091      l_docErrorRec.validation_set_code := p_validation_set_code;
7092      l_docErrorRec.transaction_id := p_document_id;
7093      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
7094      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
7095      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
7096      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
7097 
7098      -- Validate payment type
7099      IBY_VALIDATIONSETS_PUB.evaluateCondition(
7100          'DELIVERY_CHANNEL_CODE',
7101          '+'||l_document_rec.delivery_channel_code||'+',
7102          'NOTINSET',
7103          '+KONTOAVI+AVI+GIRO+',
7104          null,
7105          l_valResult,
7106          l_docErrorRec);
7107 
7108      IF (l_valResult = FALSE) THEN
7109         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
7110         l_valid := 1;
7111      END IF;
7112 
7113      -- Insert errors into IBY_TRANSACTION_ERRORS
7114      IF (l_valid = 1) THEN
7115         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
7116      END IF;
7117 
7118      -- Return the Validation Result
7119      x_result := l_valid;
7120 
7121  END SE_EFT_BANKGIRO_UTLAND_UT_DOC;
7122 
7123 /*--------------------------------------------------------------------
7124  | NAME:
7125  |     SE_EFT_POSTGIRO_INLAND_DOC
7126  |
7127  | PURPOSE:
7128  |     Swedish Postgiro Inland EFT document validation
7129  |
7130  | PARAMETERS:
7131  |     IN
7132  |
7133  |
7134  |     OUT
7135  |
7136  |
7137  | RETURNS:
7138  |
7139  | NOTES:
7140  |
7141  *---------------------------------------------------------------------*/
7142  PROCEDURE SE_EFT_POSTGIRO_INLAND_DOC (
7143      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
7144      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
7145      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
7146      p_is_online_val      IN VARCHAR2,
7147      x_result             OUT NOCOPY NUMBER)
7148  IS
7149 
7150  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
7151  l_valResult BOOLEAN;
7152  l_valid NUMBER := 0;
7153  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
7154  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
7155 
7156  BEGIN
7157 
7158      -- Initializing the document record with the Document Payables information
7159      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
7160 
7161      l_docErrorRec.validation_set_code := p_validation_set_code;
7162      l_docErrorRec.transaction_id := p_document_id;
7163      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
7164      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
7165      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
7166      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
7167 
7168      -- Validate payment type
7169      IBY_VALIDATIONSETS_PUB.evaluateCondition(
7170          'DELIVERY_CHANNEL_CODE',
7171          '+'||l_document_rec.delivery_channel_code||'+',
7172          'NOTINSET',
7173          '+KONTOAVI+CHECK+',
7174          null,
7175          l_valResult,
7176          l_docErrorRec);
7177 
7178      IF (l_valResult = FALSE) THEN
7179         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
7180         l_valid := 1;
7181      END IF;
7182 
7183      -- Insert errors into IBY_TRANSACTION_ERRORS
7184      IF (l_valid = 1) THEN
7185         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
7186      END IF;
7187 
7188      -- Return the Validation Result
7189      x_result := l_valid;
7190 
7191  END SE_EFT_POSTGIRO_INLAND_DOC;
7192 
7193 /*--------------------------------------------------------------------
7194  | NAME:
7195  |     SE_EFT_POSTGIRO_UTLAND_DOC
7196  |
7197  | PURPOSE:
7198  |     Swedish Postgiro Utland EFT document validation
7199  |
7200  | PARAMETERS:
7201  |     IN
7202  |
7203  |
7204  |     OUT
7205  |
7206  |
7207  | RETURNS:
7208  |
7209  | NOTES:
7210  |
7211  *---------------------------------------------------------------------*/
7212  PROCEDURE SE_EFT_POSTGIRO_UTLAND_DOC (
7213      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
7214      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
7215      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
7216      p_is_online_val      IN VARCHAR2,
7217      x_result             OUT NOCOPY NUMBER)
7218  IS
7219 
7220  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
7221  l_valResult BOOLEAN;
7222  l_valid NUMBER := 0;
7223  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
7224  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
7225 
7226  BEGIN
7227 
7228      -- Initializing the document record with the Document Payables information
7229      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
7230 
7231      l_docErrorRec.validation_set_code := p_validation_set_code;
7232      l_docErrorRec.transaction_id := p_document_id;
7233      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
7234      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
7235      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
7236      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
7237 
7238      -- Validate payment type
7239      IBY_VALIDATIONSETS_PUB.evaluateCondition(
7240          'DELIVERY_CHANNEL_CODE',
7241          l_document_rec.delivery_channel_code,
7242          'STRISNOT',
7243          'KONTOAVI',
7244          null,
7245          l_valResult,
7246          l_docErrorRec);
7247 
7248      IF (l_valResult = FALSE) THEN
7249         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
7250         l_valid := 1;
7251      END IF;
7252 
7253      -- Insert errors into IBY_TRANSACTION_ERRORS
7254      IF (l_valid = 1) THEN
7255         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
7256      END IF;
7257 
7258      -- Return the Validation Result
7259      x_result := l_valid;
7260 
7261  END SE_EFT_POSTGIRO_UTLAND_DOC;
7262 
7263 /*--------------------------------------------------------------------
7264  | NAME:
7265  |     CITI_GB_EFT_DOM_PAYEE
7266  |
7267  | PURPOSE:
7268  |     Citibank UK domestic EFT payee validation
7269  |
7270  | PARAMETERS:
7271  |     IN
7272  |
7273  |
7274  |     OUT
7275  |
7276  |
7277  | RETURNS:
7278  |
7279  | NOTES:
7280  |
7281  *---------------------------------------------------------------------*/
7282  PROCEDURE CITI_GB_EFT_DOM_PAYEE (
7283      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
7284      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
7285      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
7286      p_is_online_val      IN VARCHAR2,
7287      x_result             OUT NOCOPY NUMBER)
7288  IS
7289 
7290  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
7291  l_valResult BOOLEAN;
7292  l_valid NUMBER := 0;
7293  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
7294  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
7295 
7296  BEGIN
7297 
7298      -- Initializing the document record
7299      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
7300 
7301      l_docErrorRec.validation_set_code := p_validation_set_code;
7302      l_docErrorRec.transaction_id := p_document_id;
7303      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
7304      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
7305      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
7306      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
7307 
7308      -- Validate target name
7309      IBY_VALIDATIONSETS_PUB.evaluateCondition(
7310          'PAYEE_PARTY_NAME',
7311          l_document_rec.payee_party_name,
7312          'MAXLENGTH',
7313          null,
7314          18,
7315          l_valResult,
7316          l_docErrorRec);
7317 
7318      IF (l_valResult = FALSE) THEN
7319         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
7320         l_valid := 1;
7321      END IF;
7322 
7323      -- Validate target bank account number
7324      IBY_VALIDATIONSETS_PUB.evaluateCondition(
7325          'EXT_BANK_ACC_NUM',
7326          l_document_rec.ext_bank_acc_num,
7327          'MAXLENGTH',
7328          null,
7329          10,
7330          l_valResult,
7331          l_docErrorRec);
7332 
7333      IF (l_valResult = FALSE) THEN
7334         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
7335         l_valid := 1;
7336      END IF;
7337 
7338      IBY_VALIDATIONSETS_PUB.evaluateCondition(
7339          'EXT_BANK_ACC_NUM',
7340          l_document_rec.ext_bank_acc_num,
7341          'MINLENGTH',
7342          null,
7343          8,
7344          l_valResult,
7345          l_docErrorRec);
7346 
7347      IF (l_valResult = FALSE) THEN
7348         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
7349         l_valid := 1;
7350      END IF;
7351 
7352      -- Validate target bank branch code
7353      -- by CE
7354 
7355      -- Inserting errors into IBY_TRANSACTION_ERRORS
7356      IF (l_valid = 1) THEN
7357         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
7358      END IF;
7359 
7360      -- Return the Validation Result
7361      x_result := l_valid;
7362 
7363  END CITI_GB_EFT_DOM_PAYEE;
7364 
7365 /*--------------------------------------------------------------------
7366  | NAME:
7367  |     CITI_GB_EFT_DOM_DOC
7368  |
7369  | PURPOSE:
7370  |     Citibank UK domestic EFT document validation
7371  |
7372  | PARAMETERS:
7373  |     IN
7374  |
7375  |
7376  |     OUT
7377  |
7378  |
7379  | RETURNS:
7380  |
7381  | NOTES:
7382  |
7383  *---------------------------------------------------------------------*/
7384  PROCEDURE CITI_GB_EFT_DOM_DOC (
7385      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
7386      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
7387      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
7388      p_is_online_val      IN VARCHAR2,
7389      x_result             OUT NOCOPY NUMBER)
7390  IS
7391 
7392  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
7393  l_valResult BOOLEAN;
7394  l_valid NUMBER := 0;
7395  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
7396  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
7397 
7398  BEGIN
7399 
7400      -- Initializing the document record
7401      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id, l_document_rec, p_is_online_val);
7402 
7403      l_docErrorRec.validation_set_code := p_validation_set_code;
7404      l_docErrorRec.transaction_id := p_document_id;
7405      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
7406      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
7407      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
7408      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
7409 
7410      -- Validate transaction code
7411      IBY_VALIDATIONSETS_PUB.evaluateCondition(
7412          'DELIVERY_CHANNEL_CODE',
7413          l_document_rec.delivery_channel_code,
7414          'INDELIV',
7415          'GB',
7416          null,
7417          l_valResult,
7418          l_docErrorRec);
7419 
7420      IF (l_valResult = FALSE) THEN
7421         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
7422         l_valid := 1;
7423      END IF;
7424 
7425      -- Inserting errors into IBY_TRANSACTION_ERRORS
7426      IF (l_valid = 1) THEN
7427         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
7428      END IF;
7429 
7430      -- Return the Validation Result
7431      x_result := l_valid;
7432 
7433  END CITI_GB_EFT_DOM_DOC;
7434 
7435 /*--------------------------------------------------------------------
7436  | NAME:
7437  |     P_CITI_GB_EFT_DOM_PMT
7438  |
7439  | PURPOSE:
7440  |     Citibank UK domestic EFT payment validation
7441  |
7442  | PARAMETERS:
7443  |     IN
7444  |
7445  |
7446  |     OUT
7447  |
7448  |
7449  | RETURNS:
7450  |
7451  | NOTES:
7452  |
7453  *---------------------------------------------------------------------*/
7454  PROCEDURE P_CITI_GB_EFT_DOM_PMT (
7455      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
7456      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
7457      p_payment_id         IN IBY_PAYMENTS_ALL.payment_id%type,
7458      p_is_online_val      IN VARCHAR2,
7459      x_result             OUT NOCOPY NUMBER)
7460  IS
7461 
7462  l_payment_rec IBY_VALIDATIONSETS_PUB.paymentRecType;
7463  l_valResult BOOLEAN;
7464  l_valid NUMBER := 0;
7465  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
7466  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
7467 
7468  BEGIN
7469 
7470      -- Initializing the payment record
7471      IBY_VALIDATIONSETS_PUB.initPaymentData(p_payment_id,l_payment_rec);
7472 
7473      l_docErrorRec.validation_set_code := p_validation_set_code;
7474      l_docErrorRec.transaction_id := p_payment_id;
7475      l_docErrorRec.transaction_type := 'PAYMENT';
7476      l_docErrorRec.calling_app_doc_unique_ref1 := p_payment_id;
7477 
7478      -- Validate transaction reference
7479      IBY_VALIDATIONSETS_PUB.evaluateCondition(
7480          'PMT_ID',
7481          l_payment_rec.pmt_id,
7482          'MAXLENGTH',
7483          null,
7484          15,
7485          l_valResult,
7486          l_docErrorRec);
7487 
7488      IF (l_valResult = FALSE) THEN
7489         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
7490         l_valid := 1;
7491      END IF;
7492 
7493      -- Validate instruction currency
7494      IBY_VALIDATIONSETS_PUB.evaluateCondition(
7495          'PMT_CURRENCY',
7496          l_payment_rec.pmt_currency,
7497          'EXACTLENGTH',
7498          null,
7499          3,
7500          l_valResult,
7501          l_docErrorRec);
7502 
7503      IF (l_valResult = FALSE) THEN
7504         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
7505         l_valid := 1;
7506      END IF;
7507 
7508      -- Inserting errors into IBY_TRANSACTION_ERRORS
7509      -- The first parameter p_is_online_val takes hardcoded value 'N'.
7510      IF (l_valid = 1) THEN
7511         IBY_VALIDATIONSETS_PUB.insert_transaction_errors('N',l_docErrorTab);
7512      END IF;
7513 
7514      -- Return the Validation Result
7515      x_result := l_valid;
7516 
7517  END P_CITI_GB_EFT_DOM_PMT;
7518 
7519 /*--------------------------------------------------------------------
7520  | NAME:
7521  |     US_NACHA_INTERNAL_BANK
7522  |
7523  | PURPOSE:
7524  |     US Nacha internal bank validation
7525  |
7526  | PARAMETERS:
7527  |     IN
7528  |
7529  |
7530  |     OUT
7531  |
7532  |
7533  | RETURNS:
7534  |
7535  | NOTES:
7536  |
7537  *---------------------------------------------------------------------*/
7538  PROCEDURE US_NACHA_INTERNAL_BANK (
7539      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
7540      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
7541      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
7542      p_is_online_val      IN VARCHAR2,
7543      x_result             OUT NOCOPY NUMBER)
7544  IS
7545 
7546  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
7547  l_valResult BOOLEAN;
7548  l_valid NUMBER := 0;
7549  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
7550  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
7551 
7552  BEGIN
7553 
7554      -- Initializing the document record
7555      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
7556 
7557      l_docErrorRec.validation_set_code := p_validation_set_code;
7558      l_docErrorRec.transaction_id := p_document_id;
7559      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
7560      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
7561      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
7562      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
7563 
7564      -- Validate originating bank routing number
7565      IBY_VALIDATIONSETS_PUB.evaluateCondition(
7566          'INT_BANK_BRANCH_NUM',
7567          l_document_rec.int_bank_branch_num,
7568          'EXACTLENGTH',
7569          null,
7570          9,
7571          l_valResult,
7572          l_docErrorRec);
7573 
7574      IF (l_valResult = FALSE) THEN
7575         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
7576         l_valid := 1;
7577      END IF;
7578 
7579      -- Insert errors into IBY_TRANSACTION_ERRORS
7580      IF (l_valid = 1) THEN
7581         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
7582      END IF;
7583 
7584      -- Return the validation result
7585      x_result := l_valid;
7586 
7587  END US_NACHA_INTERNAL_BANK;
7588 
7589 /*--------------------------------------------------------------------
7590  | NAME:
7591  |     US_NACHA_PAYEE
7592  |
7593  | PURPOSE:
7594  |     US Nacha payee validation
7595  |
7596  | PARAMETERS:
7597  |     IN
7598  |
7599  |
7600  |     OUT
7601  |
7602  |
7603  | RETURNS:
7604  |
7605  | NOTES:
7606  |
7607  *---------------------------------------------------------------------*/
7608  PROCEDURE US_NACHA_PAYEE (
7609      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
7610      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
7611      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
7612      p_is_online_val      IN VARCHAR2,
7613      x_result             OUT NOCOPY NUMBER)
7614  IS
7615 
7616  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
7617  l_valResult BOOLEAN;
7618  l_valid NUMBER := 0;
7619  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
7620  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
7621 
7622  BEGIN
7623 
7624      -- Initializing the document record
7625      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
7626 
7627      l_docErrorRec.validation_set_code := p_validation_set_code;
7628      l_docErrorRec.transaction_id := p_document_id;
7629      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
7630      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
7631      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
7632      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
7633 
7634      -- Validate supplier bank routing number
7635      IBY_VALIDATIONSETS_PUB.evaluateCondition(
7636          'EXT_BANK_BRANCH_NUM',
7637          l_document_rec.ext_bank_branch_num,
7638          'EXACTLENGTH',
7639          null,
7640          9,
7641          l_valResult,
7642          l_docErrorRec);
7643 
7644      IF (l_valResult = FALSE) THEN
7645         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
7646         l_valid := 1;
7647      END IF;
7648 
7649      -- Insert errors into IBY_TRANSACTION_ERRORS
7650      IF (l_valid = 1) THEN
7651         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
7652      END IF;
7653 
7654      -- Return the validation result
7655      x_result := l_valid;
7656 
7657  END US_NACHA_PAYEE;
7658 
7659  /*--------------------------------------------------------------------
7660  | NAME:
7661  |     US_NACHA_PAYEE_ACCOUNT
7662  |
7663  | PURPOSE:
7664  |     US Nacha IAT Payee Bank Account Validation
7665  |
7666  | PARAMETERS:
7667  |     IN
7668  |
7669  |
7670  |     OUT
7671  |
7672  |
7673  | RETURNS:
7674  |
7675  | NOTES:
7676  |
7677  *---------------------------------------------------------------------*/
7678  PROCEDURE US_NACHA_PAYEE_ACCOUNT (
7679      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
7680      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
7681      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
7682      p_is_online_val      IN VARCHAR2,
7683      x_result             OUT NOCOPY NUMBER)
7684  IS
7685 
7686  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
7687  l_valResult BOOLEAN;
7688  l_valid NUMBER := 0;
7689  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
7690  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
7691 
7692  BEGIN
7693 
7694      -- Initializing the document record
7695      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
7696 
7697      l_docErrorRec.validation_set_code := p_validation_set_code;
7698      l_docErrorRec.transaction_id := p_document_id;
7699      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
7700      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
7701      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
7702      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
7703 
7704      -- Validate supplier bank routing number
7705      IBY_VALIDATIONSETS_PUB.evaluateCondition(
7706          'EXT_BANK_ACC_NUM',
7707          l_document_rec.ext_bank_acc_num,
7708          'NOTNULL',
7709          null,
7710          null,
7711          l_valResult,
7712          l_docErrorRec);
7713 
7714      IF (l_valResult = FALSE) THEN
7715         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
7716         l_valid := 1;
7717      END IF;
7718 
7719      -- Insert errors into IBY_TRANSACTION_ERRORS
7720      IF (l_valid = 1) THEN
7721         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
7722      END IF;
7723 
7724      -- Return the validation result
7725      x_result := l_valid;
7726 
7727  END US_NACHA_PAYEE_ACCOUNT;
7728 
7729 /*--------------------------------------------------------------------
7730  | NAME:
7731  |     I_US_NACHA_INSTR
7732  |
7733  | PURPOSE:
7734  |     US Nacha payment instruction validation
7735  |
7736  | PARAMETERS:
7737  |     IN
7738  |
7739  |
7740  |     OUT
7741  |
7742  |
7743  | RETURNS:
7744  |
7745  | NOTES:
7746  |
7747  *---------------------------------------------------------------------*/
7748  PROCEDURE I_US_NACHA_INSTR (
7749      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
7750      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
7751      p_instruction_id     IN IBY_PAY_INSTRUCTIONS_ALL.payment_instruction_id%type,
7752      p_is_online_val      IN VARCHAR2,
7753      x_result             OUT NOCOPY NUMBER)
7754  IS
7755 
7756  l_instruction_rec IBY_VALIDATIONSETS_PUB.instructionRecType;
7757  l_valResult BOOLEAN;
7758  l_valid NUMBER := 0;
7759  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
7760  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
7761 
7762  l_max_nacha_amt NUMBER;
7763 
7764  BEGIN
7765 
7766      -- Initializing the payment record
7767      IBY_VALIDATIONSETS_PUB.initInstructionData(p_instruction_id,l_instruction_rec);
7768 
7769      l_docErrorRec.validation_set_code := p_validation_set_code;
7770      l_docErrorRec.transaction_id := p_instruction_id;
7771      l_docErrorRec.transaction_type := 'PAYMENT_INSTRUCTION';
7772      l_docErrorRec.calling_app_doc_unique_ref1 := p_instruction_id;
7773 
7774      -- Validate number of detail records
7775      IBY_VALIDATIONSETS_PUB.getParamValue(
7776                             p_validation_assign_id,
7777                             p_validation_set_code,
7778                             'MAX_PAYMENT_INSTR_AMOUNT',
7779                             l_max_nacha_amt );
7780 
7781      IBY_VALIDATIONSETS_PUB.evaluateCondition(
7782          'INS_AMOUNT',
7783          l_instruction_rec.ins_amount,
7784          'LESSEQUAL',
7785          null,
7786          l_max_nacha_amt,
7787          l_valResult,
7788          l_docErrorRec);
7789 
7790      IF (l_valResult = FALSE) THEN
7791         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
7792         l_valid := 1;
7793      END IF;
7794 
7795      -- Inserting errors into IBY_TRANSACTION_ERRORS
7796      -- The first parameter p_is_online_val takes hardcoded value 'N'.
7797      IF (l_valid = 1) THEN
7798         IBY_VALIDATIONSETS_PUB.insert_transaction_errors('N',l_docErrorTab);
7799      END IF;
7800 
7801      -- Return the Validation Result
7802      x_result := l_valid;
7803 
7804  END I_US_NACHA_INSTR;
7805 
7806 /*--------------------------------------------------------------------
7807  | NAME:
7808  |     ECE_DOC
7809  |
7810  | PURPOSE:
7811  |     Transactional field validations for E-Commerce gateway format
7812  |     (EDI validations).
7813  |
7814  |     See ER for EDI validations: 5518630
7815  |
7816  |
7817  | PARAMETERS:
7818  |     IN
7819  |
7820  |
7821  |     OUT
7822  |
7823  |
7824  | RETURNS:
7825  |
7826  | NOTES:
7827  |
7828  *---------------------------------------------------------------------*/
7829  PROCEDURE ECE_DOC (
7830      p_validation_assign_id  IN
7831          IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
7832      p_validation_set_code   IN
7833          IBY_VALIDATION_SETS_VL.validation_set_code%TYPE,
7834      p_document_id           IN
7835          IBY_DOCS_PAYABLE_ALL.document_payable_id%TYPE,
7836      p_is_online_val         IN VARCHAR2,
7837      x_result                OUT NOCOPY NUMBER)
7838  IS
7839 
7840  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
7841  l_valResult    BOOLEAN;
7842  l_valid        NUMBER := 0;
7843  l_docErrorTab  IBY_VALIDATIONSETS_PUB.docErrorTabType;
7844  l_docErrorRec  IBY_TRANSACTION_ERRORS%ROWTYPE;
7845 
7846  l_module_name CONSTANT VARCHAR2(200) := G_PKG_NAME || '.ECE_DOC';
7847  BEGIN
7848 
7849      /*
7850       * Initialize the document record
7851       */
7852      IBY_VALIDATIONSETS_PUB.initDocumentData(
7853          p_document_id, l_document_rec, p_is_online_val);
7854 
7855      l_docErrorRec.validation_set_code := p_validation_set_code;
7856      l_docErrorRec.transaction_id      := p_document_id;
7857      l_docErrorRec.transaction_type    := 'DOCUMENT_PAYABLE';
7858      l_docErrorRec.calling_app_id      := l_document_rec.calling_app_id;
7859      l_docErrorRec.pay_proc_trxn_type_code
7860                                        := l_document_rec.pay_proc_trxn_type_cd;
7861      l_docErrorRec.calling_app_doc_unique_ref1
7862                                        := l_document_rec.calling_app_doc_id1;
7863 
7864 
7865      /*
7866       * Validate delivery channel code
7867       */
7868      IBY_VALIDATIONSETS_PUB.evaluateCondition(
7869          'DELIVERY_CHANNEL_CODE',
7870          l_document_rec.delivery_channel_code,
7871          'NOTNULL',
7872          null,
7873          null,
7874          l_valResult,
7875          l_docErrorRec);
7876 
7877 
7878      IF (l_valResult = FALSE) THEN
7879 
7880          IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
7881 	         print_debuginfo(l_module_name, 'Error: Delivery channel code '
7882 	             || 'should not be null for EDI payments [document id: '
7883 	             || p_document_id
7884 	             || ']'
7885 	             );
7886 
7887          END IF;
7888         IBY_VALIDATIONSETS_PUB.
7889             insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
7890 
7891         l_valid := 1;
7892 
7893      END IF;
7894 
7895      /*
7896       * Insert errors into IBY_TRANSACTION_ERRORS
7897       */
7898      IF (l_valid = 1) THEN
7899         IBY_VALIDATIONSETS_PUB.
7900             insert_transaction_errors(p_is_online_val,l_docErrorTab);
7901      END IF;
7902 
7903      /*
7904       * Return the validation result
7905       */
7906      x_result := l_valid;
7907 
7908  END ECE_DOC;
7909 
7910 /*--------------------------------------------------------------------
7911  | NAME:
7912  |     ECE_INTERNAL_BANK
7913  |
7914  | PURPOSE:
7915  |     Internal bank account validations for E-Commerce gateway format.
7916  |     (EDI validations).
7917  |
7918  | PARAMETERS:
7919  |     IN
7920  |
7921  |
7922  |     OUT
7923  |
7924  |
7925  | RETURNS:
7926  |
7927  | NOTES:
7928  |
7929  *---------------------------------------------------------------------*/
7930  PROCEDURE ECE_INTERNAL_BANK (
7931      p_validation_assign_id  IN
7932          IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
7933      p_validation_set_code   IN
7934          IBY_VALIDATION_SETS_VL.validation_set_code%TYPE,
7935      p_document_id           IN
7936          IBY_DOCS_PAYABLE_ALL.document_payable_id%TYPE,
7937      p_is_online_val         IN VARCHAR2,
7938      x_result                OUT NOCOPY NUMBER)
7939  IS
7940 
7941  l_module_name CONSTANT VARCHAR2(200) := G_PKG_NAME || '.ECE_INTERNAL_BANK';
7942 
7943  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
7944  l_valResult    BOOLEAN;
7945  l_valid        NUMBER := 0;
7946  l_docErrorTab  IBY_VALIDATIONSETS_PUB.docErrorTabType;
7947  l_docErrorRec  IBY_TRANSACTION_ERRORS%ROWTYPE;
7948 
7949  l_bank_branch_type   CE_BANK_BRANCHES_V.bank_branch_type%TYPE;
7950  l_bank_edi_id_number HZ_CONTACT_POINTS.edi_id_number%TYPE;
7951  l_bank_name          CE_BANK_BRANCHES_V.bank_name%TYPE;
7952  l_bank_branch_name   CE_BANK_BRANCHES_V.bank_branch_name%TYPE;
7953 
7954  BEGIN
7955 
7956      /*
7957       * Initialize the document record
7958       */
7959      IBY_VALIDATIONSETS_PUB.initDocumentData(
7960          p_document_id, l_document_rec, p_is_online_val);
7961 
7962      l_docErrorRec.validation_set_code := p_validation_set_code;
7963      l_docErrorRec.transaction_id      := p_document_id;
7964      l_docErrorRec.transaction_type    := 'DOCUMENT_PAYABLE';
7965      l_docErrorRec.calling_app_id      := l_document_rec.calling_app_id;
7966      l_docErrorRec.pay_proc_trxn_type_code
7967                                        := l_document_rec.pay_proc_trxn_type_cd;
7968      l_docErrorRec.calling_app_doc_unique_ref1
7969                                        := l_document_rec.calling_app_doc_id1;
7970 
7971      /*
7972       * Pick up the payer bank branch type.
7973       */
7974      BEGIN
7975 
7976          SELECT
7977              abb.BANK_BRANCH_TYPE,
7978              edi.EDI_ID_NUMBER,
7979              abb.BANK_NAME,
7980              abb.BANK_BRANCH_NAME
7981          INTO
7982              l_bank_branch_type,
7983              l_bank_edi_id_number,
7984              l_bank_name,
7985              l_bank_branch_name
7986          FROM
7987              IBY_DOCS_PAYABLE_ALL doc,
7988              CE_BANK_BRANCHES_V   abb,
7989              CE_BANK_ACCOUNTS     cba,
7990              HZ_CONTACT_POINTS    edi
7991          WHERE
7992              doc.document_payable_id      = p_document_id
7993          AND doc.internal_bank_account_id = cba.bank_account_id
7994          AND cba.bank_branch_id           = abb.branch_party_id
7995          AND edi.owner_table_id           = abb.branch_party_id
7996          AND edi.owner_table_name         = 'HZ_PARTIES'
7997          AND edi.contact_point_type       = 'EFT'
7998          ;
7999 
8000      EXCEPTION
8001          WHEN OTHERS THEN
8002 
8003              IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8004 	             print_debuginfo(l_module_name, 'Non-fatal: Exception occured '
8005 	                 || 'when attempting to get payer bank branch type '
8006 	                 || 'for document id: '
8007 	                 || p_document_id
8008 	                 );
8009 
8010 	             print_debuginfo(l_module_name, 'SQL code: '   || SQLCODE);
8011 	             print_debuginfo(l_module_name, 'SQL err msg: '|| SQLERRM);
8012 
8013              END IF;
8014      END;
8015 
8016      /*
8017       *  Validate payer bank branch type
8018       */
8019      IBY_VALIDATIONSETS_PUB.evaluateCondition(
8020          'INT_BANK_BRANCH_TYPE',
8021          l_bank_branch_type,
8022          'NOTNULL',
8023          null,
8024          null,
8025          l_valResult,
8026          l_docErrorRec
8027          );
8028 
8029      IF (l_valResult = FALSE) THEN
8030 
8031          IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8032 	         print_debuginfo(l_module_name, 'Error: Payer bank branch type '
8033 	             || 'should not be null for EDI payments [document id: '
8034 	             || p_document_id
8035 	             || ', bank name: '
8036 	             || l_bank_name
8037 	             || ', branch name: '
8038 	             || l_bank_branch_name
8039 	             || ']'
8040 	             );
8041 
8042          END IF;
8043         IBY_VALIDATIONSETS_PUB.
8044             insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
8045 
8046         l_valid := 1;
8047 
8048      END IF;
8049 
8050      /*
8051       * Insert errors into IBY_TRANSACTION_ERRORS
8052       */
8053      IF (l_valid = 1) THEN
8054         IBY_VALIDATIONSETS_PUB.
8055             insert_transaction_errors(p_is_online_val,l_docErrorTab);
8056      END IF;
8057 
8058      /*
8059       *  Return the validation result
8060       */
8061      x_result := l_valid;
8062 
8063  END ECE_INTERNAL_BANK;
8064 
8065 /*--------------------------------------------------------------------
8066  | NAME:
8067  |     ECE_PAYEE
8068  |
8069  | PURPOSE:
8070  |     Payee validations for E-Commerce gateway format.
8071  |     (EDI validations).
8072  |
8073  | PARAMETERS:
8074  |     IN
8075  |
8076  |
8077  |     OUT
8078  |
8079  |
8080  | RETURNS:
8081  |
8082  | NOTES:
8083  |
8084  *---------------------------------------------------------------------*/
8085  PROCEDURE ECE_PAYEE (
8086      p_validation_assign_id  IN
8087          IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
8088      p_validation_set_code   IN
8089          IBY_VALIDATION_SETS_VL.validation_set_code%TYPE,
8090      p_document_id           IN
8091          IBY_DOCS_PAYABLE_ALL.document_payable_id%TYPE,
8092      p_is_online_val         IN VARCHAR2,
8093      x_result                OUT NOCOPY NUMBER)
8094  IS
8095 
8096  l_module_name CONSTANT VARCHAR2(200) := G_PKG_NAME || '.ECE_PAYEE';
8097 
8098  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
8099  l_valResult    BOOLEAN;
8100  l_valid        NUMBER := 0;
8101  l_docErrorTab  IBY_VALIDATIONSETS_PUB.docErrorTabType;
8102  l_docErrorRec  IBY_TRANSACTION_ERRORS%ROWTYPE;
8103 
8104  l_bank_branch_type CE_BANK_BRANCHES_V.bank_branch_type%TYPE;
8105  l_trxn_handling    IBY_EXTERNAL_PAYEES_ALL.bank_instruction2_code%TYPE;
8106  l_edi_pmt_format   IBY_EXTERNAL_PAYEES_ALL.bank_instruction1_code%TYPE;
8107 
8108  BEGIN
8109 
8110      /*
8111       * Initialize the document record
8112       */
8113      IBY_VALIDATIONSETS_PUB.initDocumentData(
8114          p_document_id, l_document_rec, p_is_online_val);
8115 
8116      l_docErrorRec.validation_set_code := p_validation_set_code;
8117      l_docErrorRec.transaction_id      := p_document_id;
8118      l_docErrorRec.transaction_type    := 'DOCUMENT_PAYABLE';
8119      l_docErrorRec.calling_app_id      := l_document_rec.calling_app_id;
8120      l_docErrorRec.pay_proc_trxn_type_code
8121                                        := l_document_rec.pay_proc_trxn_type_cd;
8122      l_docErrorRec.calling_app_doc_unique_ref1
8123                                        := l_document_rec.calling_app_doc_id1;
8124 
8125      /*
8126       * Retrieve supplier bank branch type.
8127       * Inactivating validation for bug 7192723
8128       *
8129      BEGIN
8130 
8131          SELECT
8132              cbb.bank_branch_type
8133          INTO
8134              l_bank_branch_type
8135          FROM
8136              IBY_DOCS_PAYABLE_ALL    doc,
8137              IBY_EXT_BANK_ACCOUNTS_V eba,
8138              CE_BANK_BRANCHES_V      cbb
8139          WHERE
8140              doc.document_payable_id      = p_document_id
8141          AND doc.external_bank_account_id = eba.ext_bank_account_id(+)
8142          AND eba.bank_party_id            = cbb.bank_party_id(+)
8143          AND eba.branch_party_id          = cbb.branch_party_id(+)
8144          ;
8145 
8146      EXCEPTION
8147          WHEN OTHERS THEN
8148 
8149              IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8150 	             print_debuginfo(l_module_name, 'Non-fatal: Exception occured '
8151 	                 || 'when attempting to get payee bank branch type '
8152 	                 || 'for document id: '
8153 	                 || p_document_id
8154 	                 );
8155 
8156 	             print_debuginfo(l_module_name, 'SQL code: '   || SQLCODE);
8157 	             print_debuginfo(l_module_name, 'SQL err msg: '|| SQLERRM);
8158 
8159              END IF;
8160      END;
8161       */
8162 
8163      /*
8164       * Validate payee bank branch type.
8165       *  Inactivating validation for bug 7192723
8166       *
8167      IBY_VALIDATIONSETS_PUB.evaluateCondition(
8168          'EXT_BANK_BRANCH_TYPE',
8169          l_bank_branch_type,
8170          'NOTNULL',
8171          null,
8172          null,
8173          l_valResult,
8174          l_docErrorRec
8175          );
8176 
8177      IF (l_valResult = FALSE) THEN
8178 
8179          IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8180 	         print_debuginfo(l_module_name, 'Error: Payee bank branch type '
8181 	             || 'should not be null for EDI payments [document id: '
8182 	             || p_document_id
8183 	             || ']'
8184 	             );
8185 
8186          END IF;
8187         IBY_VALIDATIONSETS_PUB.
8188             insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
8189 
8190         l_valid := 1;
8191 
8192      END IF;
8193       */
8194 
8195 
8196      /*
8197       * Retrieve EDI transaction handling.
8198       */
8199      BEGIN
8200 
8201          SELECT
8202              ep.bank_instruction2_code
8203          INTO
8204              l_trxn_handling
8205          FROM
8206              IBY_DOCS_PAYABLE_ALL    doc,
8207              IBY_EXTERNAL_PAYEES_ALL ep
8208          WHERE
8209              doc.document_payable_id  = p_document_id
8210          AND doc.ext_payee_id         = ep.ext_payee_id
8211          ;
8212 
8213      EXCEPTION
8214          WHEN OTHERS THEN
8215 
8216              IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8217 	             print_debuginfo(l_module_name, 'Non-fatal: Exception occured '
8218 	                 || 'when attempting to get payee transaction handling '
8219 	                 || 'for document id: '
8220 	                 || p_document_id
8221 	                 );
8222 
8223 	             print_debuginfo(l_module_name, 'SQL code: '   || SQLCODE);
8224 	             print_debuginfo(l_module_name, 'SQL err msg: '|| SQLERRM);
8225 
8226              END IF;
8227      END;
8228 
8229      /*
8230       * Validate EDI transaction handling.
8231       */
8232      IBY_VALIDATIONSETS_PUB.evaluateCondition(
8233          'EXT_PAYEE_BANK_CD2',
8234          l_trxn_handling,
8235          'NOTNULL',
8236          null,
8237          null,
8238          l_valResult,
8239          l_docErrorRec
8240          );
8241 
8242      IF (l_valResult = FALSE) THEN
8243 
8244          IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8245 	         print_debuginfo(l_module_name, 'Error: Payee bank instruction code 2 '
8246 	             || 'should not be null for EDI payments (this field indicates '
8247 	             || 'transaction handling). [document id: '
8248 	             || p_document_id
8249 	             || ']'
8250 	             );
8251 
8252          END IF;
8253         IBY_VALIDATIONSETS_PUB.
8254             insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
8255 
8256         l_valid := 1;
8257 
8258      END IF;
8259 
8260      /*
8261       * For EDI payments, the EDI payment format should not
8262       * be null if the payment method code is 'ACH'.
8263       */
8264      IF (l_document_rec.payment_method_cd = 'ACH') THEN
8265 
8266          /*
8267           * Retrieve EDI payment format.
8268           */
8269          BEGIN
8270 
8271              SELECT
8272                  ep.bank_instruction1_code
8273              INTO
8274                  l_edi_pmt_format
8275              FROM
8276                  IBY_DOCS_PAYABLE_ALL    doc,
8277                  IBY_EXTERNAL_PAYEES_ALL ep
8278              WHERE
8279                  doc.document_payable_id  = p_document_id
8280              AND doc.ext_payee_id         = ep.ext_payee_id
8281              ;
8282 
8283          EXCEPTION
8284              WHEN OTHERS THEN
8285 
8286                  IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8287 	                 print_debuginfo(l_module_name, 'Non-fatal: Exception occured '
8288 	                     || 'when attempting to get EDI payment format '
8289 	                     || 'for document id: '
8290 	                     || p_document_id
8291 	                     );
8292 
8293 	                 print_debuginfo(l_module_name, 'SQL code: '   || SQLCODE);
8294 	                 print_debuginfo(l_module_name, 'SQL err msg: '|| SQLERRM);
8295 
8296                  END IF;
8297          END;
8298 
8299          /*
8300           * Fix for bug 5557010:
8301           *
8302           * Moved this validation into the if block as
8303           * it is only applicable to ACH payment method.
8304           */
8305 
8306          /*
8307           * Validate EDI payment format.
8308           */
8309          IBY_VALIDATIONSETS_PUB.evaluateCondition(
8310              'EXT_PAYEE_BANK_CD1',
8311              l_edi_pmt_format,
8312              'NOTNULL',
8313              null,
8314              null,
8315              l_valResult,
8316              l_docErrorRec
8317              );
8318 
8319          IF (l_valResult = FALSE) THEN
8320 
8321              IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
8322 	             print_debuginfo(l_module_name, 'Error: Payee bank instruction '
8323 	                 || 'code 1 should not be null for EDI payments (this '
8324 	                 || 'field indicates EDI payment format). [document id: '
8325 	                 || p_document_id
8326 	                 || ']'
8327 	                 );
8328 
8329              END IF;
8330             IBY_VALIDATIONSETS_PUB.
8331                 insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
8332 
8333             l_valid := 1;
8334 
8335          END IF;
8336 
8337      END IF; -- if pmt method = 'ACH'
8338 
8339      /*
8340       * Insert errors into IBY_TRANSACTION_ERRORS
8341       */
8342      IF (l_valid = 1) THEN
8343         IBY_VALIDATIONSETS_PUB.
8344             insert_transaction_errors(p_is_online_val,l_docErrorTab);
8345      END IF;
8346 
8347      /*
8348       * Return the validation result
8349       */
8350      x_result := l_valid;
8351 
8352  END ECE_PAYEE;
8353 
8354  /*-----------------------------------------*/
8355  /*
8356   * Component Validations Section
8357   */
8358  /*-----------------------------------------*/
8359  /*--------------------------------------------------------------------
8360   | NAME:
8361   |     IS_NOT_NULL
8362   |
8363   | PURPOSE:
8364   |     Validate the field named is not null
8365   |
8366   | PARAMETERS:
8367   |     IN
8368   |
8369   |
8370   |     OUT
8371   |
8372   |
8373   | RETURNS:
8374   |
8375   | NOTES:
8376   |
8377   *---------------------------------------------------------------------*/
8378   PROCEDURE IS_NOT_NULL (
8379      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
8380      p_validation_set_code   IN IBY_VALIDATION_SETS_VL.validation_set_code%TYPE,
8381      p_transaction_id        IN NUMBER,
8382      p_is_online_val         IN VARCHAR2,
8383      x_result                OUT NOCOPY NUMBER)
8384  IS
8385 
8386  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
8387  l_payment_rec IBY_VALIDATIONSETS_PUB.paymentRecType;
8388  l_instruction_rec IBY_VALIDATIONSETS_PUB.instructionRecType;
8389  l_valResult BOOLEAN;
8390  l_valid NUMBER := 0;
8391  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
8392  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
8393 
8394  l_field_name VARCHAR2(500);
8395  l_field_value VARCHAR2(500);
8396 
8397  BEGIN
8398 
8399    -- Get the field name
8400    IBY_VALIDATIONSETS_PUB.getParamValue(
8401                 p_validation_assign_id,
8402    	        p_validation_set_code,
8403    	        'P_FIELD_NAME',
8404    	        l_field_name );
8405 
8406    -- if field name is null, the validation is skipped, i.e. nothing is validated
8407    if l_field_name is null then
8408       x_result := l_valid;
8409       return;
8410    end if;
8411 
8412    l_docErrorRec.validation_set_code := p_validation_set_code;
8413    l_docErrorRec.transaction_id := p_transaction_id;
8414 
8415    -- Payment instruction field
8416    if substr(l_field_name,1,3) = 'INS' then
8417       -- Initializing the payment instruction record
8418       IBY_VALIDATIONSETS_PUB.initInstructionData(p_transaction_id,l_instruction_rec);
8419 
8420       l_docErrorRec.transaction_type := 'PAYMENT_INSTRUCTION';
8421       l_docErrorRec.calling_app_doc_unique_ref1 := p_transaction_id;
8422 
8423       -- Get the field value
8424       IBY_VALIDATIONSETS_PUB.getInstructionFieldValue (l_field_name, l_instruction_rec, l_field_value);
8425 
8426    -- Payment field
8427    elsif substr(l_field_name,1,3) = 'PMT' then
8428       -- Initializing the payment record
8429       IBY_VALIDATIONSETS_PUB.initPaymentData(p_transaction_id,l_payment_rec);
8430 
8431       l_docErrorRec.transaction_type := 'PAYMENT';
8432       l_docErrorRec.calling_app_doc_unique_ref1 := p_transaction_id;
8433 
8434       -- Get the field value
8435       IBY_VALIDATIONSETS_PUB.getPaymentFieldValue (l_field_name, l_payment_rec, l_field_value);
8436 
8437    -- Document field
8438    else
8439       -- Intializing the document record
8440       IBY_VALIDATIONSETS_PUB.initDocumentData(p_transaction_id,l_document_rec,p_is_online_val);
8441 
8442       l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
8443       l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
8444       l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
8445       l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
8446 
8447       -- Get the field value
8448       IBY_VALIDATIONSETS_PUB.getDocumentFieldValue (l_field_name, l_document_rec, l_field_value);
8449    end if;
8450 
8451    -- Validate that the field is not null
8452    IBY_VALIDATIONSETS_PUB.evaluateCondition(
8453        l_field_name,
8454        l_field_value,
8455        'NOTNULL',
8456        null,
8457        null,
8458        l_valResult,
8459        l_docErrorRec);
8460 
8461    IF (l_valResult = FALSE) THEN
8462       IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
8463       l_valid := 1;
8464    END IF;
8465 
8466    IF (l_valid = 1) THEN
8467       IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
8468    END IF;
8469 
8470    -- Return the Validation Result
8471    x_result := l_valid;
8472 
8473  END IS_NOT_NULL;
8474 
8475  /*--------------------------------------------------------------------
8476   | NAME:
8477   |     IS_NULL
8478   |
8479   | PURPOSE:
8480   |     Validate the field named is not null
8481   |
8482   | PARAMETERS:
8483   |     IN
8484   |
8485   |
8486   |     OUT
8487   |
8488   |
8489   | RETURNS:
8490   |
8491   | NOTES:
8492   |
8493   *---------------------------------------------------------------------*/
8494   PROCEDURE IS_NULL (
8495      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
8496      p_validation_set_code   IN IBY_VALIDATION_SETS_VL.validation_set_code%TYPE,
8497      p_transaction_id        IN NUMBER,
8498      p_is_online_val         IN VARCHAR2,
8499      x_result                OUT NOCOPY NUMBER)
8500  IS
8501 
8502  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
8503  l_payment_rec  IBY_VALIDATIONSETS_PUB.paymentRecType;
8504  l_instruction_rec IBY_VALIDATIONSETS_PUB.instructionRecType;
8505  l_valResult BOOLEAN;
8506  l_valid NUMBER := 0;
8507  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
8508  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
8509 
8510  l_field_name VARCHAR2(500);
8511  l_field_value VARCHAR2(500);
8512 
8513  BEGIN
8514 
8515    -- Get the field name
8516    IBY_VALIDATIONSETS_PUB.getParamValue(
8517                 p_validation_assign_id,
8518    	        p_validation_set_code,
8519    	        'P_FIELD_NAME',
8520    	        l_field_name );
8521 
8522    -- if field name is null, the validation is skipped, i.e. nothing is validated
8523    if l_field_name is null then
8524       x_result := l_valid;
8525       return;
8526    end if;
8527 
8528    l_docErrorRec.validation_set_code := p_validation_set_code;
8529    l_docErrorRec.transaction_id := p_transaction_id;
8530 
8531    -- Payment instruction field
8532    if substr(l_field_name,1,3) = 'INS' then
8533       -- Initializing the payment instruction record
8534       IBY_VALIDATIONSETS_PUB.initInstructionData(p_transaction_id,l_instruction_rec);
8535 
8536       l_docErrorRec.transaction_type := 'PAYMENT_INSTRUCTION';
8537       l_docErrorRec.calling_app_doc_unique_ref1 := p_transaction_id;
8538 
8539       -- Get the field value
8540       IBY_VALIDATIONSETS_PUB.getInstructionFieldValue (l_field_name, l_instruction_rec, l_field_value);
8541 
8542    -- Payment field
8543    elsif substr(l_field_name,1,3) = 'PMT' then
8544       -- Initializing the payment record
8545       IBY_VALIDATIONSETS_PUB.initPaymentData(p_transaction_id,l_payment_rec);
8546 
8547       l_docErrorRec.transaction_type := 'PAYMENT';
8548       l_docErrorRec.calling_app_doc_unique_ref1 := p_transaction_id;
8549 
8550       -- Get the field value
8551       IBY_VALIDATIONSETS_PUB.getPaymentFieldValue (l_field_name, l_payment_rec, l_field_value);
8552 
8553    -- Document field
8554    else
8555       -- Intializing the document record
8556       IBY_VALIDATIONSETS_PUB.initDocumentData(p_transaction_id,l_document_rec,p_is_online_val);
8557 
8558       l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
8559       l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
8560       l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
8561       l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
8562 
8563       -- Get the field value
8564       IBY_VALIDATIONSETS_PUB.getDocumentFieldValue (l_field_name, l_document_rec, l_field_value);
8565    end if;
8566 
8567    -- Validate that the field is null
8568    IBY_VALIDATIONSETS_PUB.evaluateCondition(
8569        l_field_name,
8570        trim(l_field_value),
8571        'ISNULL',
8572        null,
8573        null,
8574        l_valResult,
8575        l_docErrorRec);
8576 
8577    IF (l_valResult = FALSE) THEN
8578       IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
8579       l_valid := 1;
8580    END IF;
8581 
8582    IF (l_valid = 1) THEN
8583       IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
8584    END IF;
8585 
8586    -- Return the Validation Result
8587    x_result := l_valid;
8588 
8589  END IS_NULL;
8590 
8591  /*--------------------------------------------------------------------
8592   | NAME:
8593   |     VALIDATE_LENGTH
8594   |
8595   | PURPOSE:
8596   |     Validate the length of a field
8597   |
8598   | PARAMETERS:
8599   |     IN
8600   |
8601   |
8602   |     OUT
8603   |
8604   |
8605   | RETURNS:
8606   |
8607   | NOTES:
8608   |
8609   *---------------------------------------------------------------------*/
8610   PROCEDURE VALIDATE_LENGTH (
8611      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
8612      p_validation_set_code   IN IBY_VALIDATION_SETS_VL.validation_set_code%TYPE,
8613      p_transaction_id        IN NUMBER,
8614      p_is_online_val         IN VARCHAR2,
8615      x_result                OUT NOCOPY NUMBER)
8616  IS
8617 
8618  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
8619  l_payment_rec  IBY_VALIDATIONSETS_PUB.paymentRecType;
8620  l_instruction_rec IBY_VALIDATIONSETS_PUB.instructionRecType;
8621  l_valResult BOOLEAN;
8622  l_valid NUMBER := 0;
8623  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
8624  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
8625 
8626  l_field_name VARCHAR2(500);
8627  l_field_value VARCHAR2(500);
8628  l_min_length number;
8629  l_max_length number;
8630 
8631  BEGIN
8632 
8633    -- Get the field name
8634    IBY_VALIDATIONSETS_PUB.getParamValue(
8635                 p_validation_assign_id,
8636    	        p_validation_set_code,
8637    	        'P_FIELD_NAME',
8638    	        l_field_name );
8639 
8640    -- if field name is null, the validation is skipped, i.e. nothing is validated
8641    if l_field_name is null then
8642       x_result := l_valid;
8643       return;
8644    end if;
8645 
8646    l_docErrorRec.validation_set_code := p_validation_set_code;
8647    l_docErrorRec.transaction_id := p_transaction_id;
8648 
8649    -- Payment instruction field
8650    if substr(l_field_name,1,3) = 'INS' then
8651       -- Initializing the payment instruction record
8652       IBY_VALIDATIONSETS_PUB.initInstructionData(p_transaction_id,l_instruction_rec);
8653 
8654       l_docErrorRec.transaction_type := 'PAYMENT_INSTRUCTION';
8655       l_docErrorRec.calling_app_doc_unique_ref1 := p_transaction_id;
8656 
8657       -- Get the field value
8658       IBY_VALIDATIONSETS_PUB.getInstructionFieldValue (l_field_name, l_instruction_rec, l_field_value);
8659 
8660    -- Payment field
8661    elsif substr(l_field_name,1,3) = 'PMT' then
8662       -- Initializing the payment record
8663       IBY_VALIDATIONSETS_PUB.initPaymentData(p_transaction_id,l_payment_rec);
8664 
8665       l_docErrorRec.transaction_type := 'PAYMENT';
8666       l_docErrorRec.calling_app_doc_unique_ref1 := p_transaction_id;
8667 
8668       -- Get the field value
8669       IBY_VALIDATIONSETS_PUB.getPaymentFieldValue (l_field_name, l_payment_rec, l_field_value);
8670 
8671    -- Document field
8672    else
8673       -- Intializing the document record
8674       IBY_VALIDATIONSETS_PUB.initDocumentData(p_transaction_id,l_document_rec,p_is_online_val);
8675 
8676       l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
8677       l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
8678       l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
8679       l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
8680 
8681       -- Get the field value
8682       IBY_VALIDATIONSETS_PUB.getDocumentFieldValue (l_field_name, l_document_rec, l_field_value);
8683    end if;
8684 
8685    IBY_VALIDATIONSETS_PUB.getParamValue(
8686               p_validation_assign_id,
8687    			  p_validation_set_code,
8688    			  'P_MIN_LENGTH',
8689    			  l_min_length );
8690 
8691    IBY_VALIDATIONSETS_PUB.getParamValue(
8692               p_validation_assign_id,
8693    			  p_validation_set_code,
8694    			  'P_MAX_LENGTH',
8695    			  l_max_length );
8696 
8697    -- Validate that the field length is between the min and max
8698    IBY_VALIDATIONSETS_PUB.evaluateCondition(
8699        l_field_name,
8700        l_field_value,
8701        'MINLENGTH',
8702        null,
8703        nvl(l_min_length,0),
8704        l_valResult,
8705        l_docErrorRec);
8706 
8707    IF (l_valResult = FALSE) THEN
8708       IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
8709       l_valid := 1;
8710    END IF;
8711 
8712    IBY_VALIDATIONSETS_PUB.evaluateCondition(
8713        l_field_name,
8714        l_field_value,
8715        'MAXLENGTH',
8716        null,
8717        nvl(l_max_length,1000000000000),
8718        l_valResult,
8719        l_docErrorRec);
8720 
8721    IF (l_valResult = FALSE) THEN
8722       IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
8723       l_valid := 1;
8724    END IF;
8725 
8726    IF (l_valid = 1) THEN
8727       IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
8728    END IF;
8729 
8730    -- Return the Validation Result
8731    x_result := l_valid;
8732 
8733  END VALIDATE_LENGTH;
8734 
8735  /*--------------------------------------------------------------------
8736   | NAME:
8737   |     DIGITS_ONLY
8738   |
8739   | PURPOSE:
8740   |     Validate the field name contains digits only
8741   |
8742   | PARAMETERS:
8743   |     IN
8744   |
8745   |
8746   |     OUT
8747   |
8748   |
8749   | RETURNS:
8750   |
8751   | NOTES:
8752   |
8753   *---------------------------------------------------------------------*/
8754   PROCEDURE DIGITS_ONLY (
8755      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
8756      p_validation_set_code   IN IBY_VALIDATION_SETS_VL.validation_set_code%TYPE,
8757      p_transaction_id        IN NUMBER,
8758      p_is_online_val         IN VARCHAR2,
8759      x_result                OUT NOCOPY NUMBER)
8760  IS
8761 
8762  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
8763  l_payment_rec  IBY_VALIDATIONSETS_PUB.paymentRecType;
8764  l_instruction_rec IBY_VALIDATIONSETS_PUB.instructionRecType;
8765  l_valResult BOOLEAN;
8766  l_valid NUMBER := 0;
8767  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
8768  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
8769 
8770  l_field_name VARCHAR2(500);
8771  l_field_value VARCHAR2(500);
8772 
8773  BEGIN
8774 
8775    -- Get the field name
8776    IBY_VALIDATIONSETS_PUB.getParamValue(
8777                 p_validation_assign_id,
8778    	        p_validation_set_code,
8779    	        'P_FIELD_NAME',
8780    	        l_field_name );
8781 
8782    -- if field name is null, the validation is skipped, i.e. nothing is validated
8783    if l_field_name is null then
8784       x_result := l_valid;
8785       return;
8786    end if;
8787 
8788    l_docErrorRec.validation_set_code := p_validation_set_code;
8789    l_docErrorRec.transaction_id := p_transaction_id;
8790 
8791    -- Payment instruction field
8792    if substr(l_field_name,1,3) = 'INS' then
8793       -- Initializing the payment instruction record
8794       IBY_VALIDATIONSETS_PUB.initInstructionData(p_transaction_id,l_instruction_rec);
8795 
8796       l_docErrorRec.transaction_type := 'PAYMENT_INSTRUCTION';
8797       l_docErrorRec.calling_app_doc_unique_ref1 := p_transaction_id;
8798 
8799       -- Get the field value
8800       IBY_VALIDATIONSETS_PUB.getInstructionFieldValue (l_field_name, l_instruction_rec, l_field_value);
8801 
8802    -- Payment field
8803    elsif substr(l_field_name,1,3) = 'PMT' then
8804       -- Initializing the payment record
8805       IBY_VALIDATIONSETS_PUB.initPaymentData(p_transaction_id,l_payment_rec);
8806 
8807       l_docErrorRec.transaction_type := 'PAYMENT';
8808       l_docErrorRec.calling_app_doc_unique_ref1 := p_transaction_id;
8809 
8810       -- Get the field value
8811       IBY_VALIDATIONSETS_PUB.getPaymentFieldValue (l_field_name, l_payment_rec, l_field_value);
8812 
8813    -- Document field
8814    else
8815       -- Intializing the document record
8816       IBY_VALIDATIONSETS_PUB.initDocumentData(p_transaction_id,l_document_rec,p_is_online_val);
8817 
8818       l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
8819       l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
8820       l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
8821       l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
8822 
8823       -- Get the field value
8824       IBY_VALIDATIONSETS_PUB.getDocumentFieldValue (l_field_name, l_document_rec, l_field_value);
8825    end if;
8826 
8827    -- Validate that the field contains digits only
8828    IBY_VALIDATIONSETS_PUB.evaluateCondition(
8829        l_field_name,
8830        l_field_value,
8831        'DIGITSONLY',
8832        null,
8833        null,
8834        l_valResult,
8835        l_docErrorRec);
8836 
8837    IF (l_valResult = FALSE) THEN
8838       IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
8839       l_valid := 1;
8840    END IF;
8841 
8842    IF (l_valid = 1) THEN
8843       IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
8844    END IF;
8845 
8846    -- Return the Validation Result
8847    x_result := l_valid;
8848 
8849  END DIGITS_ONLY;
8850 
8851  PROCEDURE IS_NUMERIC (
8852      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
8853      p_validation_set_code   IN IBY_VALIDATION_SETS_VL.validation_set_code%TYPE,
8854      p_transaction_id        IN NUMBER,
8855      p_is_online_val         IN VARCHAR2,
8856      x_result                OUT NOCOPY NUMBER)
8857  is
8858  begin
8859    -- To be added
8860    null;
8861  end IS_NUMERIC;
8862 
8863  /*--------------------------------------------------------------------
8864   | NAME:
8865   |     IS_STRING
8866   |
8867   | PURPOSE:
8868   |     Validate the field name
8869   |
8870   | PARAMETERS:
8871   |     IN
8872   |
8873   |
8874   |     OUT
8875   |
8876   |
8877   | RETURNS:
8878   |
8879   | NOTES:
8880   |
8881   *---------------------------------------------------------------------*/
8882   PROCEDURE IS_STRING (
8883      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
8884      p_validation_set_code   IN IBY_VALIDATION_SETS_VL.validation_set_code%TYPE,
8885      p_transaction_id        IN NUMBER,
8886      p_is_online_val         IN VARCHAR2,
8887      x_result                OUT NOCOPY NUMBER)
8888  IS
8889 
8890  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
8891  l_payment_rec  IBY_VALIDATIONSETS_PUB.paymentRecType;
8892  l_instruction_rec IBY_VALIDATIONSETS_PUB.instructionRecType;
8893  l_valResult BOOLEAN;
8894  l_valid NUMBER := 0;
8895  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
8896  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
8897 
8898  l_field_name VARCHAR2(500);
8899  l_field_value VARCHAR2(500);
8900 
8901  l_string VARCHAR2(500);
8902 
8903  BEGIN
8904 
8905    -- Get the field name
8906    IBY_VALIDATIONSETS_PUB.getParamValue(
8907                 p_validation_assign_id,
8908    	        p_validation_set_code,
8909    	        'P_FIELD_NAME',
8910    	        l_field_name );
8911 
8912    -- if field name is null, the validation is skipped, i.e. nothing is validated
8913    if l_field_name is null then
8914       x_result := l_valid;
8915       return;
8916    end if;
8917 
8918    l_docErrorRec.validation_set_code := p_validation_set_code;
8919    l_docErrorRec.transaction_id := p_transaction_id;
8920 
8921    -- Payment instruction field
8922    if substr(l_field_name,1,3) = 'INS' then
8923       -- Initializing the payment instruction record
8924       IBY_VALIDATIONSETS_PUB.initInstructionData(p_transaction_id,l_instruction_rec);
8925 
8926       l_docErrorRec.transaction_type := 'PAYMENT_INSTRUCTION';
8927       l_docErrorRec.calling_app_doc_unique_ref1 := p_transaction_id;
8928 
8929       -- Get the field value
8930       IBY_VALIDATIONSETS_PUB.getInstructionFieldValue (l_field_name, l_instruction_rec, l_field_value);
8931 
8932    -- Payment field
8933    elsif substr(l_field_name,1,3) = 'PMT' then
8934       -- Initializing the payment record
8935       IBY_VALIDATIONSETS_PUB.initPaymentData(p_transaction_id,l_payment_rec);
8936 
8937       l_docErrorRec.transaction_type := 'PAYMENT';
8938       l_docErrorRec.calling_app_doc_unique_ref1 := p_transaction_id;
8939 
8940       -- Get the field value
8941       IBY_VALIDATIONSETS_PUB.getPaymentFieldValue (l_field_name, l_payment_rec, l_field_value);
8942 
8943    -- Document field
8944    else
8945       -- Intializing the document record
8946       IBY_VALIDATIONSETS_PUB.initDocumentData(p_transaction_id,l_document_rec,p_is_online_val);
8947 
8948       l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
8949       l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
8950       l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
8951       l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
8952 
8953       -- Get the field value
8954       IBY_VALIDATIONSETS_PUB.getDocumentFieldValue (l_field_name, l_document_rec, l_field_value);
8955    end if;
8956 
8957    IBY_VALIDATIONSETS_PUB.getParamValue(
8958                   p_validation_assign_id,
8959       			  p_validation_set_code,
8960       			  'P_STRING',
8961    			  l_string );
8962 
8963    -- Validate that the field is same as the string
8964    IBY_VALIDATIONSETS_PUB.evaluateCondition(
8965        l_field_name,
8966        l_field_value,
8967        'STRIS',
8968        l_string,
8969        null,
8970        l_valResult,
8971        l_docErrorRec);
8972 
8973    IF (l_valResult = FALSE) THEN
8974       IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
8975       l_valid := 1;
8976    END IF;
8977 
8978    IF (l_valid = 1) THEN
8979       IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
8980    END IF;
8981 
8982    -- Return the Validation Result
8983    x_result := l_valid;
8984 
8985  END IS_STRING;
8986 
8987  /*--------------------------------------------------------------------
8988   | NAME:
8989   |     IS_NOT_STRING
8990   |
8991   | PURPOSE:
8992   |     Validate the field name
8993   |
8994   | PARAMETERS:
8995   |     IN
8996   |
8997   |
8998   |     OUT
8999   |
9000   |
9001   | RETURNS:
9002   |
9003   | NOTES:
9004   |
9005   *---------------------------------------------------------------------*/
9006   PROCEDURE IS_NOT_STRING (
9007      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
9008      p_validation_set_code   IN IBY_VALIDATION_SETS_VL.validation_set_code%TYPE,
9009      p_transaction_id        IN NUMBER,
9010      p_is_online_val         IN VARCHAR2,
9011      x_result                OUT NOCOPY NUMBER)
9012  IS
9013 
9014  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
9015  l_payment_rec  IBY_VALIDATIONSETS_PUB.paymentRecType;
9016  l_instruction_rec IBY_VALIDATIONSETS_PUB.instructionRecType;
9017  l_valResult BOOLEAN;
9018  l_valid NUMBER := 0;
9019  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
9020  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
9021 
9022  l_field_name VARCHAR2(500);
9023  l_field_value VARCHAR2(500);
9024 
9025  l_string VARCHAR2(500);
9026 
9027  BEGIN
9028 
9029    -- Get the field name
9030    IBY_VALIDATIONSETS_PUB.getParamValue(
9031                 p_validation_assign_id,
9032    	        p_validation_set_code,
9033    	        'P_FIELD_NAME',
9034    	        l_field_name );
9035 
9036    -- if field name is null, the validation is skipped, i.e. nothing is validated
9037    if l_field_name is null then
9038       x_result := l_valid;
9039       return;
9040    end if;
9041 
9042    l_docErrorRec.validation_set_code := p_validation_set_code;
9043    l_docErrorRec.transaction_id := p_transaction_id;
9044 
9045    -- Payment instruction field
9046    if substr(l_field_name,1,3) = 'INS' then
9047       -- Initializing the payment instruction record
9048       IBY_VALIDATIONSETS_PUB.initInstructionData(p_transaction_id,l_instruction_rec);
9049 
9050       l_docErrorRec.transaction_type := 'PAYMENT_INSTRUCTION';
9051       l_docErrorRec.calling_app_doc_unique_ref1 := p_transaction_id;
9052 
9053       -- Get the field value
9054       IBY_VALIDATIONSETS_PUB.getInstructionFieldValue (l_field_name, l_instruction_rec, l_field_value);
9055 
9056    -- Payment field
9057    elsif substr(l_field_name,1,3) = 'PMT' then
9058       -- Initializing the payment record
9059       IBY_VALIDATIONSETS_PUB.initPaymentData(p_transaction_id,l_payment_rec);
9060 
9061       l_docErrorRec.transaction_type := 'PAYMENT';
9062       l_docErrorRec.calling_app_doc_unique_ref1 := p_transaction_id;
9063 
9064       -- Get the field value
9065       IBY_VALIDATIONSETS_PUB.getPaymentFieldValue (l_field_name, l_payment_rec, l_field_value);
9066 
9067    -- Document field
9068    else
9069       -- Intializing the document record
9070       IBY_VALIDATIONSETS_PUB.initDocumentData(p_transaction_id,l_document_rec,p_is_online_val);
9071 
9072       l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
9073       l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
9074       l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
9075       l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
9076 
9077       -- Get the field value
9078       IBY_VALIDATIONSETS_PUB.getDocumentFieldValue (l_field_name, l_document_rec, l_field_value);
9079    end if;
9080 
9081    IBY_VALIDATIONSETS_PUB.getParamValue(
9082                   p_validation_assign_id,
9083       			  p_validation_set_code,
9084       			  'P_STRING',
9085    			      l_string );
9086 
9087    -- Validate that the field is not same as the string
9088    IBY_VALIDATIONSETS_PUB.evaluateCondition(
9089        l_field_name,
9090        l_field_value,
9091        'STRISNOT',
9092        l_string,
9093        null,
9094        l_valResult,
9095        l_docErrorRec);
9096 
9097    IF (l_valResult = FALSE) THEN
9098       IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
9099       l_valid := 1;
9100    END IF;
9101 
9102    IF (l_valid = 1) THEN
9103       IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
9104    END IF;
9105 
9106    -- Return the Validation Result
9107    x_result := l_valid;
9108 
9109  END IS_NOT_STRING;
9110 
9111  /*--------------------------------------------------------------------
9112   | NAME:
9113   |     IN_SET
9114   |
9115   | PURPOSE:
9116   |     Validate the field name
9117   |
9118   | PARAMETERS:
9119   |     IN
9120   |
9121   |
9122   |     OUT
9123   |
9124   |
9125   | RETURNS:
9126   |
9127   | NOTES:
9128   |
9129   *---------------------------------------------------------------------*/
9130   PROCEDURE IN_SET (
9131      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
9132      p_validation_set_code   IN IBY_VALIDATION_SETS_VL.validation_set_code%TYPE,
9133      p_transaction_id        IN NUMBER,
9134      p_is_online_val         IN VARCHAR2,
9135      x_result                OUT NOCOPY NUMBER)
9136  IS
9137 
9138  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
9139  l_payment_rec  IBY_VALIDATIONSETS_PUB.paymentRecType;
9140  l_instruction_rec IBY_VALIDATIONSETS_PUB.instructionRecType;
9141  l_valResult BOOLEAN;
9142  l_valid NUMBER := 0;
9143  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
9144  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
9145 
9146  l_field_name VARCHAR2(500);
9147  l_field_value VARCHAR2(500);
9148 
9149  l_string_set VARCHAR2(500);
9150 
9151  BEGIN
9152 
9153    -- Get the field name
9154    IBY_VALIDATIONSETS_PUB.getParamValue(
9155                 p_validation_assign_id,
9156    	        p_validation_set_code,
9157    	        'P_FIELD_NAME',
9158    	        l_field_name );
9159 
9160    -- if field name is null, the validation is skipped, i.e. nothing is validated
9161    if l_field_name is null then
9162       x_result := l_valid;
9163       return;
9164    end if;
9165 
9166    l_docErrorRec.validation_set_code := p_validation_set_code;
9167    l_docErrorRec.transaction_id := p_transaction_id;
9168 
9169    -- Payment instruction field
9170    if substr(l_field_name,1,3) = 'INS' then
9171       -- Initializing the payment instruction record
9172       IBY_VALIDATIONSETS_PUB.initInstructionData(p_transaction_id,l_instruction_rec);
9173 
9174       l_docErrorRec.transaction_type := 'PAYMENT_INSTRUCTION';
9175       l_docErrorRec.calling_app_doc_unique_ref1 := p_transaction_id;
9176 
9177       -- Get the field value
9178       IBY_VALIDATIONSETS_PUB.getInstructionFieldValue (l_field_name, l_instruction_rec, l_field_value);
9179 
9180    -- Payment field
9181    elsif substr(l_field_name,1,3) = 'PMT' then
9182       -- Initializing the payment record
9183       IBY_VALIDATIONSETS_PUB.initPaymentData(p_transaction_id,l_payment_rec);
9184 
9185       l_docErrorRec.transaction_type := 'PAYMENT';
9186       l_docErrorRec.calling_app_doc_unique_ref1 := p_transaction_id;
9187 
9188       -- Get the field value
9189       IBY_VALIDATIONSETS_PUB.getPaymentFieldValue (l_field_name, l_payment_rec, l_field_value);
9190 
9191    -- Document field
9192    else
9193       -- Intializing the document record
9194       IBY_VALIDATIONSETS_PUB.initDocumentData(p_transaction_id,l_document_rec,p_is_online_val);
9195 
9196       l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
9197       l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
9198       l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
9199       l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
9200 
9201       -- Get the field value
9202       IBY_VALIDATIONSETS_PUB.getDocumentFieldValue (l_field_name, l_document_rec, l_field_value);
9203    end if;
9204 
9205    IBY_VALIDATIONSETS_PUB.getParamValue(
9206               p_validation_assign_id,
9207       		  p_validation_set_code,
9208       		  'P_STRING_SET',
9209    			  l_string_set );
9210 
9211    -- Validate that the field is among the set of strings
9212    IBY_VALIDATIONSETS_PUB.evaluateCondition(
9213        l_field_name,
9214        l_field_value,
9215        'INSET',
9216        l_string_set,
9217        null,
9218        l_valResult,
9219        l_docErrorRec);
9220 
9221    IF (l_valResult = FALSE) THEN
9222       IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
9223       l_valid := 1;
9224    END IF;
9225 
9226    IF (l_valid = 1) THEN
9227       IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
9228    END IF;
9229 
9230    -- Return the Validation Result
9231    x_result := l_valid;
9232 
9233  END IN_SET;
9234 
9235  /*--------------------------------------------------------------------
9236   | NAME:
9237   |     NOT_IN_SET
9238   |
9239   | PURPOSE:
9240   |     Validate the field name
9241   |
9242   | PARAMETERS:
9243   |     IN
9244   |
9245   |
9246   |     OUT
9247   |
9248   |
9249   | RETURNS:
9250   |
9251   | NOTES:
9252   |
9253   *---------------------------------------------------------------------*/
9254   PROCEDURE NOT_IN_SET (
9255      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
9256      p_validation_set_code   IN IBY_VALIDATION_SETS_VL.validation_set_code%TYPE,
9257      p_transaction_id        IN NUMBER,
9258      p_is_online_val         IN VARCHAR2,
9259      x_result                OUT NOCOPY NUMBER)
9260  IS
9261 
9262  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
9263  l_payment_rec  IBY_VALIDATIONSETS_PUB.paymentRecType;
9264  l_instruction_rec IBY_VALIDATIONSETS_PUB.instructionRecType;
9265  l_valResult BOOLEAN;
9266  l_valid NUMBER := 0;
9267  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
9268  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
9269 
9270  l_field_name VARCHAR2(500);
9271  l_field_value VARCHAR2(500);
9272 
9273  l_string_set VARCHAR2(500);
9274 
9275  BEGIN
9276 
9277    -- Get the field name
9278    IBY_VALIDATIONSETS_PUB.getParamValue(
9279                 p_validation_assign_id,
9280    	        p_validation_set_code,
9281    	        'P_FIELD_NAME',
9282    	        l_field_name );
9283 
9284    -- if field name is null, the validation is skipped, i.e. nothing is validated
9285    if l_field_name is null then
9286       x_result := l_valid;
9287       return;
9288    end if;
9289 
9290    l_docErrorRec.validation_set_code := p_validation_set_code;
9291    l_docErrorRec.transaction_id := p_transaction_id;
9292 
9293    -- Payment instruction field
9294    if substr(l_field_name,1,3) = 'INS' then
9295       -- Initializing the payment instruction record
9296       IBY_VALIDATIONSETS_PUB.initInstructionData(p_transaction_id,l_instruction_rec);
9297 
9298       l_docErrorRec.transaction_type := 'PAYMENT_INSTRUCTION';
9299       l_docErrorRec.calling_app_doc_unique_ref1 := p_transaction_id;
9300 
9301       -- Get the field value
9302       IBY_VALIDATIONSETS_PUB.getInstructionFieldValue (l_field_name, l_instruction_rec, l_field_value);
9303 
9304    -- Payment field
9305    elsif substr(l_field_name,1,3) = 'PMT' then
9306       -- Initializing the payment record
9307       IBY_VALIDATIONSETS_PUB.initPaymentData(p_transaction_id,l_payment_rec);
9308 
9309       l_docErrorRec.transaction_type := 'PAYMENT';
9310       l_docErrorRec.calling_app_doc_unique_ref1 := p_transaction_id;
9311 
9312       -- Get the field value
9313       IBY_VALIDATIONSETS_PUB.getPaymentFieldValue (l_field_name, l_payment_rec, l_field_value);
9314 
9315    -- Document field
9316    else
9317       -- Intializing the document record
9318       IBY_VALIDATIONSETS_PUB.initDocumentData(p_transaction_id,l_document_rec,p_is_online_val);
9319 
9320       l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
9321       l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
9322       l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
9323       l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
9324 
9325       -- Get the field value
9326       IBY_VALIDATIONSETS_PUB.getDocumentFieldValue (l_field_name, l_document_rec, l_field_value);
9327    end if;
9328 
9329    IBY_VALIDATIONSETS_PUB.getParamValue(
9330               p_validation_assign_id,
9331       		  p_validation_set_code,
9332       		  'P_STRING_SET',
9333    			  l_string_set );
9334 
9335    -- Validate that the field is not among the set of strings
9336    IBY_VALIDATIONSETS_PUB.evaluateCondition(
9337        l_field_name,
9338        l_field_value,
9339        'NOTINSET',
9340        l_string_set,
9341        null,
9342        l_valResult,
9343        l_docErrorRec);
9344 
9345    IF (l_valResult = FALSE) THEN
9346       IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
9347       l_valid := 1;
9348    END IF;
9349 
9350    IF (l_valid = 1) THEN
9351       IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
9352    END IF;
9353 
9354    -- Return the Validation Result
9355    x_result := l_valid;
9356 
9357  END NOT_IN_SET;
9358 
9359  /*--------------------------------------------------------------------
9360   | NAME:
9361   |     START_WITH
9362   |
9363   | PURPOSE:
9364   |     Validate the field name
9365   |
9366   | PARAMETERS:
9367   |     IN
9368   |
9369   |
9370   |     OUT
9371   |
9372   |
9373   | RETURNS:
9374   |
9375   | NOTES:
9376   |
9377   *---------------------------------------------------------------------*/
9378   PROCEDURE START_WITH (
9379      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
9380      p_validation_set_code   IN IBY_VALIDATION_SETS_VL.validation_set_code%TYPE,
9381      p_transaction_id        IN NUMBER,
9382      p_is_online_val         IN VARCHAR2,
9383      x_result                OUT NOCOPY NUMBER)
9384  IS
9385 
9386  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
9387  l_payment_rec  IBY_VALIDATIONSETS_PUB.paymentRecType;
9388  l_instruction_rec IBY_VALIDATIONSETS_PUB.instructionRecType;
9389  l_valResult BOOLEAN;
9390  l_valid NUMBER := 0;
9391  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
9392  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
9393 
9394  l_field_name VARCHAR2(500);
9395  l_field_value VARCHAR2(500);
9396 
9397  l_string VARCHAR2(500);
9398 
9399  BEGIN
9400 
9401    -- Get the field name
9402    IBY_VALIDATIONSETS_PUB.getParamValue(
9403                 p_validation_assign_id,
9404    	        p_validation_set_code,
9405    	        'P_FIELD_NAME',
9406    	        l_field_name );
9407 
9408    -- if field name is null, the validation is skipped, i.e. nothing is validated
9409    if l_field_name is null then
9410       x_result := l_valid;
9411       return;
9412    end if;
9413 
9414    l_docErrorRec.validation_set_code := p_validation_set_code;
9415    l_docErrorRec.transaction_id := p_transaction_id;
9416 
9417    -- Payment instruction field
9418    if substr(l_field_name,1,3) = 'INS' then
9419       -- Initializing the payment instruction record
9420       IBY_VALIDATIONSETS_PUB.initInstructionData(p_transaction_id,l_instruction_rec);
9421 
9422       l_docErrorRec.transaction_type := 'PAYMENT_INSTRUCTION';
9423       l_docErrorRec.calling_app_doc_unique_ref1 := p_transaction_id;
9424 
9425       -- Get the field value
9426       IBY_VALIDATIONSETS_PUB.getInstructionFieldValue (l_field_name, l_instruction_rec, l_field_value);
9427 
9428    -- Payment field
9429    elsif substr(l_field_name,1,3) = 'PMT' then
9430       -- Initializing the payment record
9431       IBY_VALIDATIONSETS_PUB.initPaymentData(p_transaction_id,l_payment_rec);
9432 
9433       l_docErrorRec.transaction_type := 'PAYMENT';
9434       l_docErrorRec.calling_app_doc_unique_ref1 := p_transaction_id;
9435 
9436       -- Get the field value
9437       IBY_VALIDATIONSETS_PUB.getPaymentFieldValue (l_field_name, l_payment_rec, l_field_value);
9438 
9439    -- Document field
9440    else
9441       -- Intializing the document record
9442       IBY_VALIDATIONSETS_PUB.initDocumentData(p_transaction_id,l_document_rec,p_is_online_val);
9443 
9444       l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
9445       l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
9446       l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
9447       l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
9448 
9449       -- Get the field value
9450       IBY_VALIDATIONSETS_PUB.getDocumentFieldValue (l_field_name, l_document_rec, l_field_value);
9451    end if;
9452 
9453    IBY_VALIDATIONSETS_PUB.getParamValue(
9454               p_validation_assign_id,
9455       		  p_validation_set_code,
9456       		  'P_STRING',
9457    			  l_string );
9458 
9459    -- Validate that the field starts with the string
9460    IBY_VALIDATIONSETS_PUB.evaluateCondition(
9461        l_field_name,
9462        l_field_value,
9463        'STARTWITH',
9464        l_string,
9465        null,
9466        l_valResult,
9467        l_docErrorRec);
9468 
9469    IF (l_valResult = FALSE) THEN
9470       IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
9471       l_valid := 1;
9472    END IF;
9473 
9474    IF (l_valid = 1) THEN
9475       IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
9476    END IF;
9477 
9478    -- Return the Validation Result
9479    x_result := l_valid;
9480 
9481  END START_WITH;
9482 
9483  /*--------------------------------------------------------------------
9484   | NAME:
9485   |     NOT_START_WITH
9486   |
9487   | PURPOSE:
9488   |     Validate the field name
9489   |
9490   | PARAMETERS:
9491   |     IN
9492   |
9493   |
9494   |     OUT
9495   |
9496   |
9497   | RETURNS:
9498   |
9499   | NOTES:
9500   |
9501   *---------------------------------------------------------------------*/
9502   PROCEDURE NOT_START_WITH (
9503      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
9504      p_validation_set_code   IN IBY_VALIDATION_SETS_VL.validation_set_code%TYPE,
9505      p_transaction_id        IN NUMBER,
9506      p_is_online_val         IN VARCHAR2,
9507      x_result                OUT NOCOPY NUMBER)
9508  IS
9509 
9510  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
9511  l_payment_rec  IBY_VALIDATIONSETS_PUB.paymentRecType;
9512  l_instruction_rec IBY_VALIDATIONSETS_PUB.instructionRecType;
9513  l_valResult BOOLEAN;
9514  l_valid NUMBER := 0;
9515  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
9516  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
9517 
9518  l_field_name VARCHAR2(500);
9519  l_field_value VARCHAR2(500);
9520 
9521  l_string VARCHAR2(500);
9522 
9523  BEGIN
9524 
9525    -- Get the field name
9526    IBY_VALIDATIONSETS_PUB.getParamValue(
9527                 p_validation_assign_id,
9528    	        p_validation_set_code,
9529    	        'P_FIELD_NAME',
9530    	        l_field_name );
9531 
9532    -- if field name is null, the validation is skipped, i.e. nothing is validated
9533    if l_field_name is null then
9534       x_result := l_valid;
9535       return;
9536    end if;
9537 
9538    l_docErrorRec.validation_set_code := p_validation_set_code;
9539    l_docErrorRec.transaction_id := p_transaction_id;
9540 
9541    -- Payment instruction field
9542    if substr(l_field_name,1,3) = 'INS' then
9543       -- Initializing the payment instruction record
9544       IBY_VALIDATIONSETS_PUB.initInstructionData(p_transaction_id,l_instruction_rec);
9545 
9546       l_docErrorRec.transaction_type := 'PAYMENT_INSTRUCTION';
9547       l_docErrorRec.calling_app_doc_unique_ref1 := p_transaction_id;
9548 
9549       -- Get the field value
9550       IBY_VALIDATIONSETS_PUB.getInstructionFieldValue (l_field_name, l_instruction_rec, l_field_value);
9551 
9552    -- Payment field
9553    elsif substr(l_field_name,1,3) = 'PMT' then
9554       -- Initializing the payment record
9555       IBY_VALIDATIONSETS_PUB.initPaymentData(p_transaction_id,l_payment_rec);
9556 
9557       l_docErrorRec.transaction_type := 'PAYMENT';
9558       l_docErrorRec.calling_app_doc_unique_ref1 := p_transaction_id;
9559 
9560       -- Get the field value
9561       IBY_VALIDATIONSETS_PUB.getPaymentFieldValue (l_field_name, l_payment_rec, l_field_value);
9562 
9563    -- Document field
9564    else
9565       -- Intializing the document record
9566       IBY_VALIDATIONSETS_PUB.initDocumentData(p_transaction_id,l_document_rec,p_is_online_val);
9567 
9568       l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
9569       l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
9570       l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
9571       l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
9572 
9573       -- Get the field value
9574       IBY_VALIDATIONSETS_PUB.getDocumentFieldValue (l_field_name, l_document_rec, l_field_value);
9575    end if;
9576 
9577    IBY_VALIDATIONSETS_PUB.getParamValue(
9578               p_validation_assign_id,
9579       		  p_validation_set_code,
9580       		  'P_STRING',
9581    			  l_string );
9582 
9583    -- Validate that the field does not start with the string
9584    IBY_VALIDATIONSETS_PUB.evaluateCondition(
9585        l_field_name,
9586        l_field_value,
9587        'NOTSTARTWITH',
9588        l_string,
9589        null,
9590        l_valResult,
9591        l_docErrorRec);
9592 
9593    IF (l_valResult = FALSE) THEN
9594       IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
9595       l_valid := 1;
9596    END IF;
9597 
9598    IF (l_valid = 1) THEN
9599       IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
9600    END IF;
9601 
9602    -- Return the Validation Result
9603    x_result := l_valid;
9604 
9605  END NOT_START_WITH;
9606 
9607  /*--------------------------------------------------------------------
9608   | NAME:
9609   |     IS_IN_LOOKUP
9610   |
9611   | PURPOSE:
9612   |     Validate the field name
9613   |
9614   | PARAMETERS:
9615   |     IN
9616   |
9617   |
9618   |     OUT
9619   |
9620   |
9621   | RETURNS:
9622   |
9623   | NOTES:
9624   |
9625   *---------------------------------------------------------------------*/
9626   PROCEDURE IS_IN_LOOKUP (
9627      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
9628      p_validation_set_code   IN IBY_VALIDATION_SETS_VL.validation_set_code%TYPE,
9629      p_transaction_id        IN NUMBER,
9630      p_is_online_val         IN VARCHAR2,
9631      x_result                OUT NOCOPY NUMBER)
9632  IS
9633 
9634  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
9635  l_payment_rec  IBY_VALIDATIONSETS_PUB.paymentRecType;
9636  l_instruction_rec IBY_VALIDATIONSETS_PUB.instructionRecType;
9637  l_valResult BOOLEAN;
9638  l_valid NUMBER := 0;
9639  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
9640  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
9641 
9642  l_field_name VARCHAR2(500);
9643  l_field_value VARCHAR2(500);
9644 
9645  l_lookup_type VARCHAR2(500);
9646 
9647  BEGIN
9648 
9649    -- Get the field name
9650    IBY_VALIDATIONSETS_PUB.getParamValue(
9651                 p_validation_assign_id,
9652    	        p_validation_set_code,
9653    	        'P_FIELD_NAME',
9654    	        l_field_name );
9655 
9656    -- if field name is null, the validation is skipped, i.e. nothing is validated
9657    if l_field_name is null then
9658       x_result := l_valid;
9659       return;
9660    end if;
9661 
9662    l_docErrorRec.validation_set_code := p_validation_set_code;
9663    l_docErrorRec.transaction_id := p_transaction_id;
9664 
9665    -- Payment instruction field
9666    if substr(l_field_name,1,3) = 'INS' then
9667       -- Initializing the payment instruction record
9668       IBY_VALIDATIONSETS_PUB.initInstructionData(p_transaction_id,l_instruction_rec);
9669 
9670       l_docErrorRec.transaction_type := 'PAYMENT_INSTRUCTION';
9671       l_docErrorRec.calling_app_doc_unique_ref1 := p_transaction_id;
9672 
9673       -- Get the field value
9674       IBY_VALIDATIONSETS_PUB.getInstructionFieldValue (l_field_name, l_instruction_rec, l_field_value);
9675 
9676    -- Payment field
9677    elsif substr(l_field_name,1,3) = 'PMT' then
9678       -- Initializing the payment record
9679       IBY_VALIDATIONSETS_PUB.initPaymentData(p_transaction_id,l_payment_rec);
9680 
9681       l_docErrorRec.transaction_type := 'PAYMENT';
9682       l_docErrorRec.calling_app_doc_unique_ref1 := p_transaction_id;
9683 
9684       -- Get the field value
9685       IBY_VALIDATIONSETS_PUB.getPaymentFieldValue (l_field_name, l_payment_rec, l_field_value);
9686 
9687    -- Document field
9688    else
9689       -- Intializing the document record
9690       IBY_VALIDATIONSETS_PUB.initDocumentData(p_transaction_id,l_document_rec,p_is_online_val);
9691 
9692       l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
9693       l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
9694       l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
9695       l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
9696 
9697       -- Get the field value
9698       IBY_VALIDATIONSETS_PUB.getDocumentFieldValue (l_field_name, l_document_rec, l_field_value);
9699    end if;
9700 
9701    IBY_VALIDATIONSETS_PUB.getParamValue(
9702               p_validation_assign_id,
9703       		  p_validation_set_code,
9704       		  'P_LOOKUP_TYPE',
9705    			  l_lookup_type );
9706 
9707    -- Validate that the field is among the records in the lookup type
9708    IBY_VALIDATIONSETS_PUB.evaluateCondition(
9709        l_field_name,
9710        l_field_value,
9711        'INLOOKUPTYPE',
9712        l_lookup_type,
9713        null,
9714        l_valResult,
9715        l_docErrorRec);
9716 
9717    IF (l_valResult = FALSE) THEN
9718       IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
9719       l_valid := 1;
9720    END IF;
9721 
9722    IF (l_valid = 1) THEN
9723       IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
9724    END IF;
9725 
9726    -- Return the Validation Result
9727    x_result := l_valid;
9728 
9729  END IS_IN_LOOKUP;
9730 
9731  /*--------------------------------------------------------------------
9732   | NAME:
9733   |     GREATER_THAN
9734   |
9735   | PURPOSE:
9736   |     Validate the field name
9737   |
9738   | PARAMETERS:
9739   |     IN
9740   |
9741   |
9742   |     OUT
9743   |
9744   |
9745   | RETURNS:
9746   |
9747   | NOTES:
9748   |
9749   *---------------------------------------------------------------------*/
9750   PROCEDURE GREATER_THAN (
9751      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
9752      p_validation_set_code   IN IBY_VALIDATION_SETS_VL.validation_set_code%TYPE,
9753      p_transaction_id        IN NUMBER,
9754      p_is_online_val         IN VARCHAR2,
9755      x_result                OUT NOCOPY NUMBER)
9756  IS
9757 
9758  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
9759  l_payment_rec  IBY_VALIDATIONSETS_PUB.paymentRecType;
9760  l_instruction_rec IBY_VALIDATIONSETS_PUB.instructionRecType;
9761  l_valResult BOOLEAN;
9762  l_valid NUMBER := 0;
9763  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
9764  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
9765 
9766  l_field_name VARCHAR2(500);
9767  l_field_value VARCHAR2(500);
9768 
9769  l_num_value number;
9770 
9771  BEGIN
9772 
9773    -- Get the field name
9774    IBY_VALIDATIONSETS_PUB.getParamValue(
9775                 p_validation_assign_id,
9776    	        p_validation_set_code,
9777    	        'P_FIELD_NAME',
9778    	        l_field_name );
9779 
9780    -- if field name is null, the validation is skipped, i.e. nothing is validated
9781    if l_field_name is null then
9782       x_result := l_valid;
9783       return;
9784    end if;
9785 
9786    l_docErrorRec.validation_set_code := p_validation_set_code;
9787    l_docErrorRec.transaction_id := p_transaction_id;
9788 
9789    -- Payment instruction field
9790    if substr(l_field_name,1,3) = 'INS' then
9791       -- Initializing the payment instruction record
9792       IBY_VALIDATIONSETS_PUB.initInstructionData(p_transaction_id,l_instruction_rec);
9793 
9794       l_docErrorRec.transaction_type := 'PAYMENT_INSTRUCTION';
9795       l_docErrorRec.calling_app_doc_unique_ref1 := p_transaction_id;
9796 
9797       -- Get the field value
9798       IBY_VALIDATIONSETS_PUB.getInstructionFieldValue (l_field_name, l_instruction_rec, l_field_value);
9799 
9800    -- Payment field
9801    elsif substr(l_field_name,1,3) = 'PMT' then
9802       -- Initializing the payment record
9803       IBY_VALIDATIONSETS_PUB.initPaymentData(p_transaction_id,l_payment_rec);
9804 
9805       l_docErrorRec.transaction_type := 'PAYMENT';
9806       l_docErrorRec.calling_app_doc_unique_ref1 := p_transaction_id;
9807 
9808       -- Get the field value
9809       IBY_VALIDATIONSETS_PUB.getPaymentFieldValue (l_field_name, l_payment_rec, l_field_value);
9810 
9811    -- Document field
9812    else
9813       -- Intializing the document record
9814       IBY_VALIDATIONSETS_PUB.initDocumentData(p_transaction_id,l_document_rec,p_is_online_val);
9815 
9816       l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
9817       l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
9818       l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
9819       l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
9820 
9821       -- Get the field value
9822       IBY_VALIDATIONSETS_PUB.getDocumentFieldValue (l_field_name, l_document_rec, l_field_value);
9823    end if;
9824 
9825    IBY_VALIDATIONSETS_PUB.getParamValue(
9826               p_validation_assign_id,
9827       		  p_validation_set_code,
9828       		  'P_NUMBER',
9829    			  l_num_value );
9830 
9831    -- Validate that the field is greater than the value
9832    IBY_VALIDATIONSETS_PUB.evaluateCondition(
9833        l_field_name,
9834        l_field_value,
9835        'GRTTHAN',
9836        null,
9837        l_num_value,
9838        l_valResult,
9839        l_docErrorRec);
9840 
9841    IF (l_valResult = FALSE) THEN
9842       IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
9843       l_valid := 1;
9844    END IF;
9845 
9846    IF (l_valid = 1) THEN
9847       IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
9848    END IF;
9849 
9850    -- Return the Validation Result
9851    x_result := l_valid;
9852 
9853  END GREATER_THAN;
9854 
9855  /*--------------------------------------------------------------------
9856   | NAME:
9857   |     GREATER_THAN_EQUAL_TO
9858   |
9859   | PURPOSE:
9860   |     Validate the field name
9861   |
9862   | PARAMETERS:
9863   |     IN
9864   |
9865   |
9866   |     OUT
9867   |
9868   |
9869   | RETURNS:
9870   |
9871   | NOTES:
9872   |
9873   *---------------------------------------------------------------------*/
9874   PROCEDURE GREATER_THAN_EQUAL_TO (
9875      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
9876      p_validation_set_code   IN IBY_VALIDATION_SETS_VL.validation_set_code%TYPE,
9877      p_transaction_id        IN NUMBER,
9878      p_is_online_val         IN VARCHAR2,
9879      x_result                OUT NOCOPY NUMBER)
9880  IS
9881 
9882  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
9883  l_payment_rec  IBY_VALIDATIONSETS_PUB.paymentRecType;
9884  l_instruction_rec IBY_VALIDATIONSETS_PUB.instructionRecType;
9885  l_valResult BOOLEAN;
9886  l_valid NUMBER := 0;
9887  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
9888  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
9889 
9890  l_field_name VARCHAR2(500);
9891  l_field_value VARCHAR2(500);
9892 
9893  l_num_value number;
9894 
9895  BEGIN
9896 
9897    -- Get the field name
9898    IBY_VALIDATIONSETS_PUB.getParamValue(
9899                 p_validation_assign_id,
9900    	        p_validation_set_code,
9901    	        'P_FIELD_NAME',
9902    	        l_field_name );
9903 
9904    -- if field name is null, the validation is skipped, i.e. nothing is validated
9905    if l_field_name is null then
9906       x_result := l_valid;
9907       return;
9908    end if;
9909 
9910    l_docErrorRec.validation_set_code := p_validation_set_code;
9911    l_docErrorRec.transaction_id := p_transaction_id;
9912 
9913    -- Payment instruction field
9914    if substr(l_field_name,1,3) = 'INS' then
9915       -- Initializing the payment instruction record
9916       IBY_VALIDATIONSETS_PUB.initInstructionData(p_transaction_id,l_instruction_rec);
9917 
9918       l_docErrorRec.transaction_type := 'PAYMENT_INSTRUCTION';
9919       l_docErrorRec.calling_app_doc_unique_ref1 := p_transaction_id;
9920 
9921       -- Get the field value
9922       IBY_VALIDATIONSETS_PUB.getInstructionFieldValue (l_field_name, l_instruction_rec, l_field_value);
9923 
9924    -- Payment field
9925    elsif substr(l_field_name,1,3) = 'PMT' then
9926       -- Initializing the payment record
9927       IBY_VALIDATIONSETS_PUB.initPaymentData(p_transaction_id,l_payment_rec);
9928 
9929       l_docErrorRec.transaction_type := 'PAYMENT';
9930       l_docErrorRec.calling_app_doc_unique_ref1 := p_transaction_id;
9931 
9932       -- Get the field value
9933       IBY_VALIDATIONSETS_PUB.getPaymentFieldValue (l_field_name, l_payment_rec, l_field_value);
9934 
9935    -- Document field
9936    else
9937       -- Intializing the document record
9938       IBY_VALIDATIONSETS_PUB.initDocumentData(p_transaction_id,l_document_rec,p_is_online_val);
9939 
9940       l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
9941       l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
9942       l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
9943       l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
9944 
9945       -- Get the field value
9946       IBY_VALIDATIONSETS_PUB.getDocumentFieldValue (l_field_name, l_document_rec, l_field_value);
9947    end if;
9948 
9949    IBY_VALIDATIONSETS_PUB.getParamValue(
9950               p_validation_assign_id,
9951       		  p_validation_set_code,
9952       		  'P_NUMBER',
9953    			  l_num_value );
9954 
9955    -- Validate that the field is greater than or equal to the value
9956    IBY_VALIDATIONSETS_PUB.evaluateCondition(
9957        l_field_name,
9958        l_field_value,
9959        'GRTEQUAL',
9960        null,
9961        l_num_value,
9962        l_valResult,
9963        l_docErrorRec);
9964 
9965    IF (l_valResult = FALSE) THEN
9966       IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
9967       l_valid := 1;
9968    END IF;
9969 
9970    IF (l_valid = 1) THEN
9971       IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
9972    END IF;
9973 
9974    -- Return the Validation Result
9975    x_result := l_valid;
9976 
9977  END GREATER_THAN_EQUAL_TO;
9978 
9979  /*--------------------------------------------------------------------
9980   | NAME:
9981   |     LESS_THAN
9982   |
9983   | PURPOSE:
9984   |     Validate the field name
9985   |
9986   | PARAMETERS:
9987   |     IN
9988   |
9989   |
9990   |     OUT
9991   |
9992   |
9993   | RETURNS:
9994   |
9995   | NOTES:
9996   |
9997   *---------------------------------------------------------------------*/
9998   PROCEDURE LESS_THAN (
9999      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
10000      p_validation_set_code   IN IBY_VALIDATION_SETS_VL.validation_set_code%TYPE,
10001      p_transaction_id        IN NUMBER,
10002      p_is_online_val         IN VARCHAR2,
10003      x_result                OUT NOCOPY NUMBER)
10004  IS
10005 
10006  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
10007  l_payment_rec  IBY_VALIDATIONSETS_PUB.paymentRecType;
10008  l_instruction_rec IBY_VALIDATIONSETS_PUB.instructionRecType;
10009  l_valResult BOOLEAN;
10010  l_valid NUMBER := 0;
10011  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
10012  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
10013 
10014  l_field_name VARCHAR2(500);
10015  l_field_value VARCHAR2(500);
10016 
10017  l_num_value number;
10018 
10019  BEGIN
10020 
10021    -- Get the field name
10022    IBY_VALIDATIONSETS_PUB.getParamValue(
10023                 p_validation_assign_id,
10024    	        p_validation_set_code,
10025    	        'P_FIELD_NAME',
10026    	        l_field_name );
10027 
10028    -- if field name is null, the validation is skipped, i.e. nothing is validated
10029    if l_field_name is null then
10030       x_result := l_valid;
10031       return;
10032    end if;
10033 
10034    l_docErrorRec.validation_set_code := p_validation_set_code;
10035    l_docErrorRec.transaction_id := p_transaction_id;
10036 
10037    -- Payment instruction field
10038    if substr(l_field_name,1,3) = 'INS' then
10039       -- Initializing the payment instruction record
10040       IBY_VALIDATIONSETS_PUB.initInstructionData(p_transaction_id,l_instruction_rec);
10041 
10042       l_docErrorRec.transaction_type := 'PAYMENT_INSTRUCTION';
10043       l_docErrorRec.calling_app_doc_unique_ref1 := p_transaction_id;
10044 
10045       -- Get the field value
10046       IBY_VALIDATIONSETS_PUB.getInstructionFieldValue (l_field_name, l_instruction_rec, l_field_value);
10047 
10048    -- Payment field
10049    elsif substr(l_field_name,1,3) = 'PMT' then
10050       -- Initializing the payment record
10051       IBY_VALIDATIONSETS_PUB.initPaymentData(p_transaction_id,l_payment_rec);
10052 
10053       l_docErrorRec.transaction_type := 'PAYMENT';
10054       l_docErrorRec.calling_app_doc_unique_ref1 := p_transaction_id;
10055 
10056       -- Get the field value
10057       IBY_VALIDATIONSETS_PUB.getPaymentFieldValue (l_field_name, l_payment_rec, l_field_value);
10058 
10059    -- Document field
10060    else
10061       -- Intializing the document record
10062       IBY_VALIDATIONSETS_PUB.initDocumentData(p_transaction_id,l_document_rec,p_is_online_val);
10063 
10064       l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
10065       l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
10066       l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
10067       l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
10068 
10069       -- Get the field value
10070       IBY_VALIDATIONSETS_PUB.getDocumentFieldValue (l_field_name, l_document_rec, l_field_value);
10071    end if;
10072 
10073    IBY_VALIDATIONSETS_PUB.getParamValue(
10074               p_validation_assign_id,
10075       		  p_validation_set_code,
10076       		  'P_NUMBER',
10077    			  l_num_value );
10078 
10079    -- Validate that the field is less than the value
10080    IBY_VALIDATIONSETS_PUB.evaluateCondition(
10081        l_field_name,
10082        l_field_value,
10083        'LESSTHAN',
10084        null,
10085        l_num_value,
10086        l_valResult,
10087        l_docErrorRec);
10088 
10089    IF (l_valResult = FALSE) THEN
10090       IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
10091       l_valid := 1;
10092    END IF;
10093 
10094    IF (l_valid = 1) THEN
10095       IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
10096    END IF;
10097 
10098    -- Return the Validation Result
10099    x_result := l_valid;
10100 
10101  END LESS_THAN;
10102 
10103  /*--------------------------------------------------------------------
10104   | NAME:
10105   |     LESS_THAN_EQUAL_TO
10106   |
10107   | PURPOSE:
10108   |     Validate the field name
10109   |
10110   | PARAMETERS:
10111   |     IN
10112   |
10113   |
10114   |     OUT
10115   |
10116   |
10117   | RETURNS:
10118   |
10119   | NOTES:
10120   |
10121   *---------------------------------------------------------------------*/
10122   PROCEDURE LESS_THAN_EQUAL_TO (
10123      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
10124      p_validation_set_code   IN IBY_VALIDATION_SETS_VL.validation_set_code%TYPE,
10125      p_transaction_id        IN NUMBER,
10126      p_is_online_val         IN VARCHAR2,
10127      x_result                OUT NOCOPY NUMBER)
10128  IS
10129 
10130  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
10131  l_payment_rec  IBY_VALIDATIONSETS_PUB.paymentRecType;
10132  l_instruction_rec IBY_VALIDATIONSETS_PUB.instructionRecType;
10133  l_valResult BOOLEAN;
10134  l_valid NUMBER := 0;
10135  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
10136  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
10137 
10138  l_field_name VARCHAR2(500);
10139  l_field_value VARCHAR2(500);
10140 
10141  l_num_value number;
10142 
10143  BEGIN
10144 
10145    -- Get the field name
10146    IBY_VALIDATIONSETS_PUB.getParamValue(
10147                 p_validation_assign_id,
10148    	        p_validation_set_code,
10149    	        'P_FIELD_NAME',
10150    	        l_field_name );
10151 
10152    -- if field name is null, the validation is skipped, i.e. nothing is validated
10153    if l_field_name is null then
10154       x_result := l_valid;
10155       return;
10156    end if;
10157 
10158    l_docErrorRec.validation_set_code := p_validation_set_code;
10159    l_docErrorRec.transaction_id := p_transaction_id;
10160 
10161    -- Payment instruction field
10162    if substr(l_field_name,1,3) = 'INS' then
10163       -- Initializing the payment instruction record
10164       IBY_VALIDATIONSETS_PUB.initInstructionData(p_transaction_id,l_instruction_rec);
10165 
10166       l_docErrorRec.transaction_type := 'PAYMENT_INSTRUCTION';
10167       l_docErrorRec.calling_app_doc_unique_ref1 := p_transaction_id;
10168 
10169       -- Get the field value
10170       IBY_VALIDATIONSETS_PUB.getInstructionFieldValue (l_field_name, l_instruction_rec, l_field_value);
10171 
10172    -- Payment field
10173    elsif substr(l_field_name,1,3) = 'PMT' then
10174       -- Initializing the payment record
10175       IBY_VALIDATIONSETS_PUB.initPaymentData(p_transaction_id,l_payment_rec);
10176 
10177       l_docErrorRec.transaction_type := 'PAYMENT';
10178       l_docErrorRec.calling_app_doc_unique_ref1 := p_transaction_id;
10179 
10180       -- Get the field value
10181       IBY_VALIDATIONSETS_PUB.getPaymentFieldValue (l_field_name, l_payment_rec, l_field_value);
10182 
10183    -- Document field
10184    else
10185       -- Intializing the document record
10186       IBY_VALIDATIONSETS_PUB.initDocumentData(p_transaction_id,l_document_rec,p_is_online_val);
10187 
10188       l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
10189       l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
10190       l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
10191       l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
10192 
10193       -- Get the field value
10194       IBY_VALIDATIONSETS_PUB.getDocumentFieldValue (l_field_name, l_document_rec, l_field_value);
10195    end if;
10196 
10197    IBY_VALIDATIONSETS_PUB.getParamValue(
10198               p_validation_assign_id,
10199       		  p_validation_set_code,
10200       		  'P_NUMBER',
10201    			  l_num_value );
10202 
10203    -- Validate that the field is less than or equal to the value
10204    IBY_VALIDATIONSETS_PUB.evaluateCondition(
10205        l_field_name,
10206        l_field_value,
10207        'LESSEQUAL',
10208        null,
10209        l_num_value,
10210        l_valResult,
10211        l_docErrorRec);
10212 
10213    IF (l_valResult = FALSE) THEN
10214       IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
10215       l_valid := 1;
10216    END IF;
10217 
10218    IF (l_valid = 1) THEN
10219       IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
10220    END IF;
10221 
10222    -- Return the Validation Result
10223    x_result := l_valid;
10224 
10225  END LESS_THAN_EQUAL_TO;
10226 
10227  /*--------------------------------------------------------------------
10228   | NAME:
10229   |     EQUAL_TO
10230   |
10231   | PURPOSE:
10232   |     Validate the field name
10233   |
10234   | PARAMETERS:
10235   |     IN
10236   |
10237   |
10238   |     OUT
10239   |
10240   |
10241   | RETURNS:
10242   |
10243   | NOTES:
10244   |
10245   *---------------------------------------------------------------------*/
10246   PROCEDURE EQUAL_TO (
10247      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
10248      p_validation_set_code   IN IBY_VALIDATION_SETS_VL.validation_set_code%TYPE,
10249      p_transaction_id        IN NUMBER,
10250      p_is_online_val         IN VARCHAR2,
10251      x_result                OUT NOCOPY NUMBER)
10252  IS
10253 
10254  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
10255  l_payment_rec  IBY_VALIDATIONSETS_PUB.paymentRecType;
10256  l_instruction_rec IBY_VALIDATIONSETS_PUB.instructionRecType;
10257  l_valResult BOOLEAN;
10258  l_valid NUMBER := 0;
10259  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
10260  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
10261 
10262  l_field_name VARCHAR2(500);
10263  l_field_value VARCHAR2(500);
10264 
10265  l_num_value number;
10266 
10267  BEGIN
10268 
10269    -- Get the field name
10270    IBY_VALIDATIONSETS_PUB.getParamValue(
10271                 p_validation_assign_id,
10272    	        p_validation_set_code,
10273    	        'P_FIELD_NAME',
10274    	        l_field_name );
10275 
10276    -- if field name is null, the validation is skipped, i.e. nothing is validated
10277    if l_field_name is null then
10278       x_result := l_valid;
10279       return;
10280    end if;
10281 
10282    l_docErrorRec.validation_set_code := p_validation_set_code;
10283    l_docErrorRec.transaction_id := p_transaction_id;
10284 
10285    -- Payment instruction field
10286    if substr(l_field_name,1,3) = 'INS' then
10287       -- Initializing the payment instruction record
10288       IBY_VALIDATIONSETS_PUB.initInstructionData(p_transaction_id,l_instruction_rec);
10289 
10290       l_docErrorRec.transaction_type := 'PAYMENT_INSTRUCTION';
10291       l_docErrorRec.calling_app_doc_unique_ref1 := p_transaction_id;
10292 
10293       -- Get the field value
10294       IBY_VALIDATIONSETS_PUB.getInstructionFieldValue (l_field_name, l_instruction_rec, l_field_value);
10295 
10296    -- Payment field
10297    elsif substr(l_field_name,1,3) = 'PMT' then
10298       -- Initializing the payment record
10299       IBY_VALIDATIONSETS_PUB.initPaymentData(p_transaction_id,l_payment_rec);
10300 
10301       l_docErrorRec.transaction_type := 'PAYMENT';
10302       l_docErrorRec.calling_app_doc_unique_ref1 := p_transaction_id;
10303 
10304       -- Get the field value
10305       IBY_VALIDATIONSETS_PUB.getPaymentFieldValue (l_field_name, l_payment_rec, l_field_value);
10306 
10307    -- Document field
10308    else
10309       -- Intializing the document record
10310       IBY_VALIDATIONSETS_PUB.initDocumentData(p_transaction_id,l_document_rec,p_is_online_val);
10311 
10312       l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
10313       l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
10314       l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
10315       l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
10316 
10317       -- Get the field value
10318       IBY_VALIDATIONSETS_PUB.getDocumentFieldValue (l_field_name, l_document_rec, l_field_value);
10319    end if;
10320 
10321    IBY_VALIDATIONSETS_PUB.getParamValue(
10322               p_validation_assign_id,
10323       		  p_validation_set_code,
10324       		  'P_NUMBER',
10325    			  l_num_value );
10326 
10327    -- Validate that the field is equal to the value
10328    IBY_VALIDATIONSETS_PUB.evaluateCondition(
10329        l_field_name,
10330        l_field_value,
10331        'EQUALTO',
10332        null,
10333        l_num_value,
10334        l_valResult,
10335        l_docErrorRec);
10336 
10337    IF (l_valResult = FALSE) THEN
10338       IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
10339       l_valid := 1;
10340    END IF;
10341 
10342    IF (l_valid = 1) THEN
10343       IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
10344    END IF;
10345 
10346    -- Return the Validation Result
10347    x_result := l_valid;
10348 
10349  END EQUAL_TO;
10350 
10351  /*--------------------------------------------------------------------
10352   | NAME:
10353   |     NOT_EQUAL_TO
10354   |
10355   | PURPOSE:
10356   |     Validate the field name
10357   |
10358   | PARAMETERS:
10359   |     IN
10360   |
10361   |
10362   |     OUT
10363   |
10364   |
10365   | RETURNS:
10366   |
10367   | NOTES:
10368   |
10369   *---------------------------------------------------------------------*/
10370   PROCEDURE NOT_EQUAL_TO (
10371      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
10372      p_validation_set_code   IN IBY_VALIDATION_SETS_VL.validation_set_code%TYPE,
10373      p_transaction_id        IN NUMBER,
10374      p_is_online_val         IN VARCHAR2,
10375      x_result                OUT NOCOPY NUMBER)
10376  IS
10377 
10378  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
10379  l_payment_rec  IBY_VALIDATIONSETS_PUB.paymentRecType;
10380  l_instruction_rec IBY_VALIDATIONSETS_PUB.instructionRecType;
10381  l_valResult BOOLEAN;
10382  l_valid NUMBER := 0;
10383  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
10384  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
10385 
10386  l_field_name VARCHAR2(500);
10387  l_field_value VARCHAR2(500);
10388 
10389  l_num_value number;
10390 
10391  BEGIN
10392 
10393    -- Get the field name
10394    IBY_VALIDATIONSETS_PUB.getParamValue(
10395                 p_validation_assign_id,
10396    	        p_validation_set_code,
10397    	        'P_FIELD_NAME',
10398    	        l_field_name );
10399 
10400    -- if field name is null, the validation is skipped, i.e. nothing is validated
10401    if l_field_name is null then
10402       x_result := l_valid;
10403       return;
10404    end if;
10405 
10406    l_docErrorRec.validation_set_code := p_validation_set_code;
10407    l_docErrorRec.transaction_id := p_transaction_id;
10408 
10409    -- Payment instruction field
10410    if substr(l_field_name,1,3) = 'INS' then
10411       -- Initializing the payment instruction record
10412       IBY_VALIDATIONSETS_PUB.initInstructionData(p_transaction_id,l_instruction_rec);
10413 
10414       l_docErrorRec.transaction_type := 'PAYMENT_INSTRUCTION';
10415       l_docErrorRec.calling_app_doc_unique_ref1 := p_transaction_id;
10416 
10417       -- Get the field value
10418       IBY_VALIDATIONSETS_PUB.getInstructionFieldValue (l_field_name, l_instruction_rec, l_field_value);
10419 
10420    -- Payment field
10421    elsif substr(l_field_name,1,3) = 'PMT' then
10422       -- Initializing the payment record
10423       IBY_VALIDATIONSETS_PUB.initPaymentData(p_transaction_id,l_payment_rec);
10424 
10425       l_docErrorRec.transaction_type := 'PAYMENT';
10426       l_docErrorRec.calling_app_doc_unique_ref1 := p_transaction_id;
10427 
10428       -- Get the field value
10429       IBY_VALIDATIONSETS_PUB.getPaymentFieldValue (l_field_name, l_payment_rec, l_field_value);
10430 
10431    -- Document field
10432    else
10433       -- Intializing the document record
10434       IBY_VALIDATIONSETS_PUB.initDocumentData(p_transaction_id,l_document_rec,p_is_online_val);
10435 
10436       l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
10437       l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
10438       l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
10439       l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
10440 
10441       -- Get the field value
10442       IBY_VALIDATIONSETS_PUB.getDocumentFieldValue (l_field_name, l_document_rec, l_field_value);
10443    end if;
10444 
10445    IBY_VALIDATIONSETS_PUB.getParamValue(
10446               p_validation_assign_id,
10447       		  p_validation_set_code,
10448       		  'P_NUMBER',
10449    			  l_num_value );
10450 
10451    -- Validate that the field is not equal to the value
10452    IBY_VALIDATIONSETS_PUB.evaluateCondition(
10453        l_field_name,
10454        l_field_value,
10455        'NOTEQUALTO',
10456        null,
10457        l_num_value,
10458        l_valResult,
10459        l_docErrorRec);
10460 
10461    IF (l_valResult = FALSE) THEN
10462       IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
10463       l_valid := 1;
10464    END IF;
10465 
10466    IF (l_valid = 1) THEN
10467       IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
10468    END IF;
10469 
10470    -- Return the Validation Result
10471    x_result := l_valid;
10472 
10473  END NOT_EQUAL_TO;
10474 
10475 
10476  -- End of Section Component Validation
10477 
10478 /*--------------------------------------------------------------------
10479  | NAME:
10480  |     performCharacterValidation
10481  |
10482  | PURPOSE:
10483  |     Procedure to validate character set.
10484  |
10485  | PARAMETERS:
10486  |     IN
10487  |
10488  |
10489  |     OUT
10490  |
10491  |
10492  | RETURNS:
10493  |
10494  | NOTES:
10495  |
10496  *---------------------------------------------------------------------*/
10497  PROCEDURE performCharacterValidation(
10498      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.
10499                                     validation_assignment_id%TYPE,
10500      p_validation_set_code   IN IBY_VALIDATION_SETS_VL.
10501                                     validation_set_code%TYPE,
10502      p_document_id           IN IBY_DOCS_PAYABLE_ALL.payment_id%TYPE,
10503      p_is_online_val         IN VARCHAR2,
10504      x_result                OUT NOCOPY NUMBER)
10505  IS
10506 
10507  l_charval_rec IBY_VALIDATIONSETS_PUB.charValRecType;
10508  l_valResult BOOLEAN;
10509  l_valid NUMBER := 0;
10510  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
10511  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
10512  l_invalid_chars_list  VARCHAR2(3000);
10513  l_valid_chars_list    VARCHAR2(3000);
10514 
10515  l_module_name CONSTANT VARCHAR2(200) := G_PKG_NAME ||
10516                                              '.performCharacterValidation';
10517 
10518  /*
10519   * The p_is_online_val input parameter has been added to the args list
10520   * only to make the method signature compatible with a validation set.
10521   *
10522   * All character validations are expected to be done as deferred
10523   * validations, hence p_is_online is ignored (always assumed to be 'N').
10524   */
10525 
10526  /*
10527   * Cursor to pick up the character set applicable to a particular
10528   * validation set and validation assignment entity.
10529   *
10530   * Note: This cursor is expected to only pick up one row
10531   */
10532  CURSOR c_charlist (p_val_set_id    IBY_VALIDATION_SETS_VL.
10533                                         validation_set_code%TYPE,
10534                     p_charlist_type IBY_VALIDATION_PARAMS_VL.
10535                                         validation_parameter_code%TYPE)
10536  IS
10537  SELECT
10538      val.val_param_varchar2_value
10539  FROM
10540      IBY_VALIDATION_VALUES     val,
10541      IBY_VALIDATION_PARAMS_VL  names,
10542      IBY_VALIDATION_SETS_VL    valsets,
10543      IBY_VAL_ASSIGNMENTS       asgns
10544  WHERE
10545      valsets.validation_set_code = p_val_set_id
10546  AND
10547      val.validation_set_code = valsets.validation_set_code
10548  AND
10549      names.validation_parameter_code = p_charlist_type
10550  AND
10551      val.validation_parameter_code = names.validation_parameter_code
10552  AND
10553      asgns.validation_assignment_id = p_validation_assign_id
10554  AND
10555      val.validation_assignment_id = asgns.validation_assignment_id;
10556 
10557  BEGIN
10558 
10559      IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10560 	     print_debuginfo(l_module_name, 'ENTER');
10561 
10562 	     print_debuginfo(l_module_name, 'Provided document id: '
10563 	         || p_document_id
10564 	         );
10565 
10566      END IF;
10567      /*
10568       * Get the fields from the document, payer, payee, payer bank
10569       * and payee bank for character validation.
10570       *
10571       * Since, in the build program, we don't know which of these
10572       * fields will be sent to the bank, we take the safer approach
10573       * and validate all of them.
10574       */
10575      IBY_VALIDATIONSETS_PUB.initCharValData(p_document_id, l_charval_rec);
10576 
10577      IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10578 	     print_debuginfo(l_module_name, 'Checking document '
10579 	         || l_charval_rec.document_id || ' for invalid characters');
10580 
10581      END IF;
10582      /*
10583       * Get list of valid characters associated with this validation set.
10584       */
10585      OPEN  c_charlist(p_validation_set_code, 'VALID_CHARS_LIST');
10586      FETCH c_charlist INTO l_valid_chars_list;
10587      CLOSE c_charlist;
10588 
10589      IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10590 	     print_debuginfo(l_module_name, 'List of valid chars from parameters '
10591 	         || 'table: '
10592 	         || l_valid_chars_list);
10593 
10594      END IF;
10595      /*
10596       * Get list of invalid characters associated with this validation set.
10597       */
10598      OPEN  c_charlist(p_validation_set_code, 'INVALID_CHARS_LIST');
10599      FETCH c_charlist INTO l_invalid_chars_list;
10600      CLOSE c_charlist;
10601 
10602      IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10603 	     print_debuginfo(l_module_name, 'List of invalid chars from parameters '
10604 	         || 'table: '
10605 	         || l_invalid_chars_list);
10606 
10607      END IF;
10608      /*
10609       * If list of valid chars and list of invalid chars are both
10610       * null, then we cannot perform character validation.
10611       *
10612       * We'll consider this as incomplete setup (not an error).
10613       * Write a warning to the log file the and exit.
10614       */
10615      IF (l_valid_chars_list IS NULL AND l_invalid_chars_list IS NULL) THEN
10616          IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10617 	         print_debuginfo(l_module_name, 'Neither list of invalid chars '
10618 	             || ' nor list of valid chars were provided as validation '
10619 	             || ' parameter for validation set '
10620 	             || p_validation_set_code
10621 	             || '. No character validation is possible. Exiting ..');
10622          END IF;
10623          x_result := l_valid;
10624          IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10625 	         print_debuginfo(l_module_name, 'EXIT');
10626          END IF;
10627          RETURN;
10628      END IF;
10629 
10630      /*
10631       * The user may have provided both list of valid chars and
10632       * list of invalid chars. The list of valid chars takes
10633       * precedence in such a case, and the list of invalid chars
10634       * is ignored. Log this to warn user.
10635       */
10636      IF (l_valid_chars_list   IS NOT NULL  AND
10637          l_invalid_chars_list IS NOT NULL) THEN
10638          IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10639 	         print_debuginfo(l_module_name, 'Both list of invalid chars '
10640 	             || ' and list of valid chars were provided as validation '
10641 	             || ' parameter for validation set '
10642 	             || p_validation_set_code
10643 	             || '. Only list of valid characters will be used.');
10644          END IF;
10645      END IF;
10646 
10647      l_docErrorRec.validation_set_code := p_validation_set_code;
10648      l_docErrorRec.transaction_id := p_document_id;
10649      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
10650 
10651      l_docErrorRec.calling_app_id := l_charval_rec.ca_id;
10652      l_docErrorRec.pay_proc_trxn_type_code :=
10653          l_charval_rec.pay_proc_trxn_type_cd;
10654      l_docErrorRec.calling_app_doc_unique_ref1 :=
10655          l_charval_rec.calling_app_doc_id1;
10656 
10657      /*
10658       * Go through all the fields in the document record checking
10659       * if the fields have invalid characters.
10660       */
10661      iby_build_utils_pkg.checkForInvalidChars(
10662          'Document identification',
10663          l_charval_rec.document_id
10664              || l_charval_rec.ca_id
10665              || l_charval_rec.calling_app_doc_id1
10666              || l_charval_rec.ca_doc_ref_num,
10667          true,
10668          l_valid_chars_list, l_invalid_chars_list,
10669          l_docErrorRec, l_docErrorTab);
10670 
10671      iby_build_utils_pkg.checkForInvalidChars(
10672          'PO number',
10673          l_charval_rec.po_number, false,
10674          l_valid_chars_list, l_invalid_chars_list,
10675          l_docErrorRec, l_docErrorTab);
10676 
10677      iby_build_utils_pkg.checkForInvalidChars(
10678          'Unique remittance identifier',
10679          l_charval_rec.uri, false,
10680          l_valid_chars_list, l_invalid_chars_list,
10681          l_docErrorRec, l_docErrorTab);
10682 
10683      iby_build_utils_pkg.checkForInvalidChars(
10684          'Unique remittance identifier checkdigit',
10685          l_charval_rec.uri_checkdigit, false,
10686          l_valid_chars_list, l_invalid_chars_list,
10687          l_docErrorRec, l_docErrorTab);
10688 
10689      iby_build_utils_pkg.checkForInvalidChars(
10690          'Document description',
10691          l_charval_rec.doc_desc, false,
10692          l_valid_chars_list, l_invalid_chars_list,
10693          l_docErrorRec, l_docErrorTab);
10694 
10695      iby_build_utils_pkg.checkForInvalidChars(
10696          'Bank assigned ref code',
10697          l_charval_rec.bank_ref, false,
10698          l_valid_chars_list, l_invalid_chars_list,
10699          l_docErrorRec, l_docErrorTab);
10700 
10701      /*
10702       * Commented out because the bank account
10703       * debit code no longer exists in the latest
10704       * data model.
10705       */
10706      /*
10707      iby_build_utils_pkg.checkForInvalidChars(
10708          'Bank account debit code',
10709          l_charval_rec.bank_acct_debit_code, false,
10710          l_valid_chars_list, l_invalid_chars_list,
10711          l_docErrorRec, l_docErrorTab);
10712      */
10713 
10714      iby_build_utils_pkg.checkForInvalidChars(
10715          'Payment reason comments',
10716          l_charval_rec.pmt_reason_comments, false,
10717          l_valid_chars_list, l_invalid_chars_list,
10718          l_docErrorRec, l_docErrorTab);
10719 
10720      iby_build_utils_pkg.checkForInvalidChars(
10721          'Delivery channel code',
10722          l_charval_rec.delv_chnl_code, false,
10723          l_valid_chars_list, l_invalid_chars_list,
10724          l_docErrorRec, l_docErrorTab);
10725 
10726      iby_build_utils_pkg.checkForInvalidChars(
10727          'Payment reason',
10728          l_charval_rec.pmt_reason, false,
10729          l_valid_chars_list, l_invalid_chars_list,
10730          l_docErrorRec, l_docErrorTab);
10731 
10732      iby_build_utils_pkg.checkForInvalidChars(
10733          'Remittance message',
10734          l_charval_rec.remit_msg1
10735              || l_charval_rec.remit_msg2
10736              || l_charval_rec.remit_msg3,
10737          true,
10738          l_valid_chars_list, l_invalid_chars_list,
10739          l_docErrorRec, l_docErrorTab);
10740 
10741      iby_build_utils_pkg.checkForInvalidChars(
10742          'Document lines',
10743          l_charval_rec.ca_doc_line_cd
10744              || l_charval_rec.line_type
10745              || l_charval_rec.line_name
10746              || l_charval_rec.line_desc
10747              || l_charval_rec.line_uom
10748              || l_charval_rec.line_po_num,
10749          true,
10750          l_valid_chars_list, l_invalid_chars_list,
10751          l_docErrorRec, l_docErrorTab);
10752 
10753      iby_build_utils_pkg.checkForInvalidChars(
10754          'Payer identification',
10755          l_charval_rec.payer_number
10756              || l_charval_rec.payer_name
10757              || l_charval_rec.payer_legal_name,
10758          true,
10759          l_valid_chars_list, l_invalid_chars_list,
10760          l_docErrorRec, l_docErrorTab);
10761 
10762      iby_build_utils_pkg.checkForInvalidChars(
10763          'Payer tax id',
10764          l_charval_rec.payer_tax_id, false,
10765          l_valid_chars_list, l_invalid_chars_list,
10766          l_docErrorRec, l_docErrorTab);
10767 
10768      iby_build_utils_pkg.checkForInvalidChars(
10769          'Payer address',
10770          l_charval_rec.payer_add1
10771              || l_charval_rec.payer_add2
10772              || l_charval_rec.payer_add3
10773              || l_charval_rec.payer_city
10774              || l_charval_rec.payer_county
10775              || l_charval_rec.payer_state
10776              || l_charval_rec.payer_country
10777              || l_charval_rec.payer_postcode,
10778          true,
10779          l_valid_chars_list, l_invalid_chars_list,
10780          l_docErrorRec, l_docErrorTab);
10781 
10782      iby_build_utils_pkg.checkForInvalidChars(
10783          'Payer bank/branch details',
10784          l_charval_rec.payer_bank_name
10785              || l_charval_rec.payer_bank_number
10786              || l_charval_rec.payer_bank_branch_num
10787              || l_charval_rec.payer_bank_branch_name
10788              || l_charval_rec.payer_bank_acct_holder_name
10789              || l_charval_rec.payer_bank_acct_num
10790              || l_charval_rec.payer_bank_acct_name
10791              || l_charval_rec.payer_bank_acct_iban_num
10792              || l_charval_rec.payer_bank_swift_code
10793              || l_charval_rec.payer_bank_acct_checkdigits,
10794          true,
10795          l_valid_chars_list, l_invalid_chars_list,
10796          l_docErrorRec, l_docErrorTab);
10797 
10798      iby_build_utils_pkg.checkForInvalidChars(
10799          'Payer bank address',
10800          l_charval_rec.payer_bank_add1
10801              || l_charval_rec.payer_bank_add2
10802              || l_charval_rec.payer_bank_add3
10803              || l_charval_rec.payer_bank_city
10804              || l_charval_rec.payer_bank_county
10805              || l_charval_rec.payer_bank_state
10806              || l_charval_rec.payer_bank_country
10807              || l_charval_rec.payer_bank_postcode,
10808          true,
10809          l_valid_chars_list, l_invalid_chars_list,
10810          l_docErrorRec, l_docErrorTab);
10811 
10812      iby_build_utils_pkg.checkForInvalidChars(
10813          'Payee identification',
10814          l_charval_rec.payee_number
10815              || l_charval_rec.payee_name,
10816          true,
10817          l_valid_chars_list, l_invalid_chars_list,
10818          l_docErrorRec, l_docErrorTab);
10819 
10820      iby_build_utils_pkg.checkForInvalidChars(
10821          'Payee tax id',
10822          l_charval_rec.payee_tax_id, false,
10823          l_valid_chars_list, l_invalid_chars_list,
10824          l_docErrorRec, l_docErrorTab);
10825 
10826      iby_build_utils_pkg.checkForInvalidChars(
10827          'Payee address',
10828          l_charval_rec.payee_add1
10829              || l_charval_rec.payee_add2
10830              || l_charval_rec.payee_add3
10831              || l_charval_rec.payee_city
10832              || l_charval_rec.payee_county
10833              || l_charval_rec.payee_state
10834              || l_charval_rec.payee_country
10835              || l_charval_rec.payee_postcode,
10836          true,
10837          l_valid_chars_list, l_invalid_chars_list,
10838          l_docErrorRec, l_docErrorTab);
10839 
10840      iby_build_utils_pkg.checkForInvalidChars(
10841          'Payee bank/branch details',
10842          l_charval_rec.payee_bank_name
10843              || l_charval_rec.payee_bank_number
10844              || l_charval_rec.payee_bank_branch_num
10845              || l_charval_rec.payee_bank_branch_name
10846              || l_charval_rec.payee_bank_acct_holder_name
10847              || l_charval_rec.payee_bank_acct_num
10848              || l_charval_rec.payee_bank_acct_name
10849              || l_charval_rec.payee_bank_acct_iban_num
10850              || l_charval_rec.payee_bank_swift_code
10851              || l_charval_rec.payee_bank_acct_checkdigits,
10852          true,
10853          l_valid_chars_list, l_invalid_chars_list,
10854          l_docErrorRec, l_docErrorTab);
10855 
10856      iby_build_utils_pkg.checkForInvalidChars(
10857          'Payee bank address',
10858          l_charval_rec.payee_bank_add1
10859              || l_charval_rec.payee_bank_add2
10860              || l_charval_rec.payee_bank_add3
10861              || l_charval_rec.payee_bank_city
10862              || l_charval_rec.payee_bank_county
10863              || l_charval_rec.payee_bank_state
10864              || l_charval_rec.payee_bank_country
10865              || l_charval_rec.payee_bank_postcode,
10866          true,
10867          l_valid_chars_list, l_invalid_chars_list,
10868          l_docErrorRec, l_docErrorTab);
10869 
10870      /*
10871       * Insert errors into IBY_TRANSACTION_ERRORS table.
10872       */
10873      IF (l_docErrorTab.COUNT > 0) THEN
10874 
10875          l_valid := 1;
10876          IBY_VALIDATIONSETS_PUB.insert_transaction_errors(
10877              p_is_online_val, l_docErrorTab);
10878 
10879      END IF;
10880 
10881      IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
10882 	     print_debuginfo(l_module_name, 'EXIT');
10883 
10884      END IF;
10885      -- Return the validation result
10886      x_result := l_valid;
10887 
10888  END performCharacterValidation;
10889 
10890 /*--------------------------------------------------------------------
10891  | NAME:
10892  |     validate_uri_using_modulus10
10893  |
10894  | PURPOSE:
10895  |     Bug 5569624 : This procedure validates the unique
10896  |     remittance identifier.
10897  |     The code is picked up from /jedev/11.5/je/resource/JE.pld
10898  |
10899  | PARAMETERS:
10900  |     IN
10901  |      s - Unique remittance identifier
10902  |
10903  |     OUT
10904  |
10905  |
10906  | RETURNS:
10907  |
10908  | NOTES:
10909  |     Bug 5569624: Danish unique remittance identifier validation
10910  *---------------------------------------------------------------------*/
10911 
10912 PROCEDURE validate_uri_using_modulus10(s IN VARCHAR2,
10913      x_valResult   OUT NOCOPY BOOLEAN,
10914      x_docErrorRec IN OUT NOCOPY IBY_TRANSACTION_ERRORS%ROWTYPE)
10915 IS
10916 
10917    weight number := 0;
10918    check_digit number := 0;
10919    c number;
10920 
10921    l number ;
10922    l_error_msg VARCHAR2(2000);
10923 
10924 BEGIN
10925 
10926    l := length(s);
10927 
10928    IF l > 0 THEN
10929 
10930       weight := mod(l + 1, 2) + 1;
10931 
10932       FOR i IN 1 .. l LOOP
10933         c := substr(s, i, 1);
10934 
10935         IF c BETWEEN '0' AND '9' THEN /* Check only digits. */
10936 
10937           check_digit := check_digit + mod(weight * to_number(c), 10) +
10938                                 trunc((weight * to_number(c)) / 10);
10939           IF i < l THEN
10940                 weight := mod(weight, 2) + 1;
10941           END IF;
10942         END IF;
10943       END LOOP;
10944 
10945       IF mod(check_digit, 10) <> 0 THEN
10946          IBY_VALIDATIONSETS_PUB.retrieveErrorMSG ('UNIQUE_REMIT_ID_CODE',
10947              'IBY_VALID_OBJ_INVALID', l_error_msg);
10948          x_docErrorRec.error_message := l_error_msg;
10949          x_docErrorRec.error_code := 'IBY_VALID_OBJ_INVALID';
10950 	 x_valResult := FALSE;
10951       ELSE
10952          x_valResult := TRUE;
10953       END IF;
10954 
10955    ELSE
10956        x_valResult := TRUE;
10957    END IF;
10958 
10959 END validate_uri_using_modulus10;
10960 
10961 
10962 /*--------------------------------------------------------------------
10963  | NAME:
10964  |     VALIDATE_BANK_CHARGE_BEARER
10965  |
10966  | PURPOSE:
10967  |     Checking that Bank Charge Bearer is equal to 'L' (corresponding value in
10968  |     FND_LOOKUPS is 'SLEV') at document level
10969  |
10970  | PARAMETERS:
10971  |     IN
10972  |
10973  |
10974  |     OUT
10975  |
10976  |
10977  | RETURNS:
10978  |
10979  | NOTES:
10980  |
10981  *---------------------------------------------------------------------*/
10982 
10983  PROCEDURE VALIDATE_BANK_CHARGE_BEARER(
10984      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
10985      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
10986      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
10987      p_is_online_val      IN VARCHAR2,
10988      x_result             OUT NOCOPY NUMBER)
10989  IS
10990 
10991  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
10992  l_valResult BOOLEAN;
10993  l_valid NUMBER := 0;
10994  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
10995  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
10996 
10997 BEGIN
10998      -- Initializing the document record
10999      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
11000 
11001      l_docErrorRec.validation_set_code := p_validation_set_code;
11002      l_docErrorRec.transaction_id := p_document_id;
11003      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
11004      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
11005      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
11006      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
11007 
11008      IBY_VALIDATIONSETS_PUB.evaluateCondition(
11009           'BANK_CHARGE_BEARER',
11010 	  l_document_rec.bank_charge_bearer,
11011 	  'STRIS',
11012           'L',
11013           null,
11014           l_valResult,
11015           l_docErrorRec);
11016 
11017      IF (l_valResult = FALSE) THEN
11018         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
11019         l_valid := 1;
11020      END IF;
11021 
11022      -- Inserting errors into IBY_TRANSACTION_ERRORS
11023      IF (l_valid = 1) THEN
11024         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
11025      END IF;
11026 
11027      -- Return the Validation Result
11028      x_result := l_valid;
11029 
11030  END VALIDATE_BANK_CHARGE_BEARER;
11031 
11032 
11033 /*--------------------------------------------------------------------
11034  | NAME:
11035  |     VALIDATE_PAYEE_BIC
11036  |
11037  | PURPOSE:
11038  |     Checking that Payee BIC is not null at document level
11039  |
11040  | PARAMETERS:
11041  |     IN
11042  |
11043  |
11044  |     OUT
11045  |
11046  |
11047  | RETURNS:
11048  |
11049  | NOTES:
11050  |
11051  *---------------------------------------------------------------------*/
11052  PROCEDURE VALIDATE_PAYEE_BIC(
11053      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
11054      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
11055      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
11056      p_is_online_val      IN VARCHAR2,
11057      x_result             OUT NOCOPY NUMBER)
11058 
11059  IS
11060 
11061  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
11062  l_valResult BOOLEAN;
11063  l_valid NUMBER := 0;
11064  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
11065  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
11066 
11067 BEGIN
11068 
11069      -- Initializing the document record
11070      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
11071 
11072      l_docErrorRec.validation_set_code := p_validation_set_code;
11073      l_docErrorRec.transaction_id := p_document_id;
11074      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
11075      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
11076      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
11077      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
11078 
11079      IBY_VALIDATIONSETS_PUB.evaluateCondition(
11080           'EXT_EFT_SWIFT_CODE',
11081 	  l_document_rec.ext_eft_swift_code,
11082 	  'NOTNULL',
11083           null,
11084           null,
11085           l_valResult,
11086           l_docErrorRec);
11087 
11088      IF (l_valResult = FALSE) THEN
11089         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
11090         l_valid := 1;
11091      END IF;
11092 
11093      -- Inserting errors into IBY_TRANSACTION_ERRORS
11094      IF (l_valid = 1) THEN
11095         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
11096      END IF;
11097 
11098      -- Return the Validation Result
11099      x_result := l_valid;
11100 
11101  END VALIDATE_PAYEE_BIC;
11102 
11103 
11104 
11105 /*--------------------------------------------------------------------
11106  | NAME:
11107  |     VALIDATE_PAYEE_IBAN
11108  |
11109  | PURPOSE:
11110  |     Checking that Payee IBAN is not null at document level
11111  |
11112  | PARAMETERS:
11113  |     IN
11114  |
11115  |
11116  |     OUT
11117  |
11118  |
11119  | RETURNS:
11120  |
11121  | NOTES:
11122  |
11123  *---------------------------------------------------------------------*/
11124  PROCEDURE VALIDATE_PAYEE_IBAN(
11125      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
11126      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
11127      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
11128      p_is_online_val      IN VARCHAR2,
11129      x_result             OUT NOCOPY NUMBER)
11130 
11131  IS
11132 
11133  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
11134  l_valResult BOOLEAN;
11135  l_valid NUMBER := 0;
11136  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
11137  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
11138 
11139 BEGIN
11140 -- Initializing the document record
11141      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
11142 
11143      l_docErrorRec.validation_set_code := p_validation_set_code;
11144      l_docErrorRec.transaction_id := p_document_id;
11145      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
11146      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
11147      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
11148      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
11149 
11150      IBY_VALIDATIONSETS_PUB.evaluateCondition(
11151           'EXT_BANK_ACC_IBAN',
11152 	  l_document_rec.ext_bank_acc_iban,
11153 	  'NOTNULL',
11154           null,
11155           null,
11156           l_valResult,
11157           l_docErrorRec);
11158 
11159      IF (l_valResult = FALSE) THEN
11160         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
11161         l_valid := 1;
11162      END IF;
11163 
11164      -- Inserting errors into IBY_TRANSACTION_ERRORS
11165      IF (l_valid = 1) THEN
11166         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
11167      END IF;
11168 
11169      -- Return the Validation Result
11170      x_result := l_valid;
11171 
11172  END VALIDATE_PAYEE_IBAN;
11173 
11174 
11175 /*--------------------------------------------------------------------
11176  | NAME:
11177  |     VALIDATE_PAYER_IBAN
11178  |
11179  | PURPOSE:
11180  |     Checking that Payer BIC is not null at Payment level
11181  |
11182  | PARAMETERS:
11183  |     IN
11184  |
11185  |
11186  |     OUT
11187  |
11188  |
11189  | RETURNS:
11190  |
11191  | NOTES:
11192  |
11193  *---------------------------------------------------------------------*/
11194 PROCEDURE VALIDATE_PAYER_IBAN(
11195      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
11196      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
11197      p_payment_id         IN IBY_PAYMENTS_ALL.payment_id%type,
11198      p_is_online_val      IN VARCHAR2,
11199      x_result             OUT NOCOPY NUMBER)
11200  IS
11201 
11202  l_payment_rec IBY_VALIDATIONSETS_PUB.paymentRecType;
11203  l_valResult BOOLEAN;
11204  l_valid NUMBER := 0;
11205  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
11206  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
11207 
11208 BEGIN
11209 -- Initializing the payment record
11210      IBY_VALIDATIONSETS_PUB.initPaymentData(p_payment_id,l_payment_rec);
11211 
11212      l_docErrorRec.validation_set_code := p_validation_set_code;
11213      l_docErrorRec.transaction_id := p_payment_id;
11214      l_docErrorRec.transaction_type := 'PAYMENT';
11215      l_docErrorRec.calling_app_doc_unique_ref1 := p_payment_id;
11216 
11217      -- Validate transaction reference
11218      IBY_VALIDATIONSETS_PUB.evaluateCondition(
11219           'INT_BANK_ACC_IBAN',
11220 	  l_payment_rec.int_bank_account_iban,
11221 	  'NOTNULL',
11222           null,
11223           null,
11224           l_valResult,
11225           l_docErrorRec);
11226 
11227      IF (l_valResult = FALSE) THEN
11228         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
11229         l_valid := 1;
11230      END IF;
11231 
11232      -- Inserting errors into IBY_TRANSACTION_ERRORS
11233      IF (l_valid = 1) THEN
11234         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
11235      END IF;
11236 
11237      -- Return the Validation Result
11238      x_result := l_valid;
11239 
11240  END VALIDATE_PAYER_IBAN;
11241 
11242 
11243 /*--------------------------------------------------------------------
11244  | NAME:
11245  |     VALIDATE_PAYER_ADDRESS
11246  |
11247  | PURPOSE:
11248  |     Checking that Payer Address is not null at Payment level
11249  |
11250  | PARAMETERS:
11251  |     IN
11252  |
11253  |
11254  |     OUT
11255  |
11256  |
11257  | RETURNS:
11258  |
11259  | NOTES:
11260  |
11261  *---------------------------------------------------------------------*/
11262  PROCEDURE VALIDATE_PAYER_ADDRESS(
11263      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
11264      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
11265      p_payment_id         IN IBY_PAYMENTS_ALL.payment_id%type,
11266      p_is_online_val      IN VARCHAR2,
11267      x_result             OUT NOCOPY NUMBER)
11268  IS
11269 
11270  l_payment_rec IBY_VALIDATIONSETS_PUB.paymentRecType;
11271  l_valResult BOOLEAN;
11272  l_valid NUMBER := 0;
11273  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
11274  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
11275 
11276 BEGIN
11277 -- Initializing the payment record
11278      IBY_VALIDATIONSETS_PUB.initPaymentData(p_payment_id,l_payment_rec);
11279 
11280      l_docErrorRec.validation_set_code := p_validation_set_code;
11281      l_docErrorRec.transaction_id := p_payment_id;
11282      l_docErrorRec.transaction_type := 'PAYMENT';
11283      l_docErrorRec.calling_app_doc_unique_ref1 := p_payment_id;
11284 
11285      -- Validate transaction reference
11286      IBY_VALIDATIONSETS_PUB.evaluateCondition(
11287           'PARTY_ADDRESS_LINE1',
11288 	  l_payment_rec.party_address_line1,
11289 	  'NOTNULL',
11290           null,
11291           null,
11292           l_valResult,
11293           l_docErrorRec);
11294 
11295      IF (l_valResult = FALSE) THEN
11296         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
11297         l_valid := 1;
11298      END IF;
11299 
11300      /* Commenting City Validation w.r.t SEPA Credit Transfer 3.3 Bug 9437357*/
11301      /*IBY_VALIDATIONSETS_PUB.evaluateCondition(
11302           'PARTY_ADDRESS_CITY',
11303 	  l_payment_rec.party_address_city,
11304 	  'NOTNULL',
11305           null,
11306           null,
11307           l_valResult,
11308           l_docErrorRec);
11309 
11310      IF (l_valResult = FALSE) THEN
11311         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
11312         l_valid := 1;
11313      END IF;*/
11314 
11315      /*IBY_VALIDATIONSETS_PUB.evaluateCondition(
11316           'PARTY_ADDRESS_POSTAL_CODE',
11317 	  l_payment_rec.party_address_postal_code,
11318 	  'NOTNULL',
11319           null,
11320           null,
11321           l_valResult,
11322           l_docErrorRec);
11323 
11324      IF (l_valResult = FALSE) THEN
11325         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
11326         l_valid := 1;
11327      END IF;*/
11328 
11329      /*IBY_VALIDATIONSETS_PUB.evaluateCondition(
11330           'PMT_PAYER_LE_COUNTRY',
11331 	  l_payment_rec.pmt_payer_le_country,
11332 	  'NOTNULL',
11333           null,
11334           null,
11335           l_valResult,
11336           l_docErrorRec);
11337 
11338      IF (l_valResult = FALSE) THEN
11339         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
11340         l_valid := 1;
11341      END IF;*/
11342 
11343      -- Inserting errors into IBY_TRANSACTION_ERRORS
11344      IF (l_valid = 1) THEN
11345         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
11346      END IF;
11347 
11348      -- Return the Validation Result
11349      x_result := l_valid;
11350 
11351  END VALIDATE_PAYER_ADDRESS;
11352 
11353 /*--------------------------------------------------------------------
11354  | NAME:
11355  |     xxno_chk_mod_10_11
11356  |
11357  | PURPOSE:
11358  |     Bug 5571714: This procedure validates the KID code. This
11359  |     code is picked up from /jedev/xxno/11.5/admin/sql/XXNOEC04.sql
11360  |
11361  | PARAMETERS:
11362  |     IN
11363  |      p_kid_nr - Unique remittance identifier
11364  |
11365  |     OUT
11366  |
11367  |
11368  | RETURNS:
11369  |
11370  | NOTES:
11371  |
11372  *---------------------------------------------------------------------*/
11373  PROCEDURE xxno_chk_mod_10_11 (
11374      p_kid_nr  IN  varchar2,
11375      x_valResult   OUT NOCOPY BOOLEAN,
11376      x_docErrorRec IN OUT NOCOPY IBY_TRANSACTION_ERRORS%ROWTYPE)
11377  IS
11378       v_invoice_id  varchar2(50);
11379       v_kid_nr      varchar2(50);
11380       e_kid_feil    exception;
11381       v_kid         varchar2(25);
11382       v_kid_lengde  number(3);
11383       v_sum_11      number := 0;
11384       v_rest_11     number := 0;
11385       v_status_11   number := 0;
11386       v_sum_10      number := 0;
11387       v_rest_10     number := 0;
11388       v_status_10   number := 0;
11389       v_Weight      number := 2;
11390       v_Prod        number := 0;
11391       v_ProdDigit1  number := 0;
11392       v_ProdDigit2  number := 0;
11393       l_error_msg VARCHAR2(2000);
11394 
11395  BEGIN
11396 
11397         v_kid_lengde := 25;
11398 	v_kid_nr := p_kid_nr;
11399         /* Controls the length of v_kid_nr */
11400         IF length(v_kid_nr) > v_kid_lengde THEN
11401           v_status_11:=1;
11402           v_status_10:=1;
11403           raise e_kid_feil;
11404         END IF;
11405 	SELECT lpad(v_kid_nr,v_kid_lengde,0)
11406           INTO v_kid
11407           FROM dual;
11408 --        uni_lpad_p(v_kid_nr, v_kid_lengde, v_kid);
11409         /* Modulus 10 control */
11410         /* Calculates product and digitsum for each digit,
11411            from right towards left */
11412         FOR i IN REVERSE 1..24 LOOP
11413           v_Prod       := TO_NUMBER(SUBSTR(v_kid,i,1)) * v_Weight;
11414           v_ProdDigit1 := TO_NUMBER(SUBSTR(TO_CHAR(v_Prod),1,1));
11415           if LENGTH(TO_CHAR(v_Prod)) = 2 then
11416             v_ProdDigit2 := TO_NUMBER(SUBSTR(TO_CHAR(v_Prod),2,1));
11417           else
11418             v_ProdDigit2 := 0;
11419           end if;
11420           v_sum_10 := v_sum_10 + v_ProdDigit1 + v_ProdDigit2;
11421         /* Alternates weighting between 1 and 2 */
11422           IF    v_Weight  = 2 THEN
11423             v_Weight := 1;
11424           ELSE
11425             v_Weight := 2;
11426           END IF;
11427         END LOOP;
11428         /* calculate mod 10 of v_sum_10 */
11429         WHILE v_sum_10 > 10 loop
11430           v_sum_10 := v_sum_10 - 10;
11431         END LOOP;
11432         v_rest_10 := 10 - v_sum_10;
11433         /* is residual unlike controldigit, the kid_nr is invalid */
11434         if ((substr(v_kid,25,1)) <> '-') then
11435           if (to_number(substr(v_kid,25,1)) <> v_rest_10) then
11436             v_status_10 := 1;
11437           end if;
11438         elsif ((substr(v_kid,25,1)) = '-') then
11439           v_status_10 := 1;
11440         end if;
11441         /* Modulus 11 control */
11442         /* Calculate productsum for kidnumber */
11443         v_sum_11 :=   (2 * to_number(substr(v_kid,24,1))
11444                     + (3 * to_number(substr(v_kid,23,1)))
11445                     + (4 * to_number(substr(v_kid,22,1)))
11446                     + (5 * to_number(substr(v_kid,21,1)))
11447                     + (6 * to_number(substr(v_kid,20,1)))
11448                     + (7 * to_number(substr(v_kid,19,1)))
11449                     + (2 * to_number(substr(v_kid,18,1)))
11450                     + (3 * to_number(substr(v_kid,17,1)))
11451                     + (4 * to_number(substr(v_kid,16,1)))
11452                     + (5 * to_number(substr(v_kid,15,1)))
11453                     + (6 * to_number(substr(v_kid,14,1)))
11454                     + (7 * to_number(substr(v_kid,13,1)))
11455                     + (2 * to_number(substr(v_kid,12,1)))
11456                     + (3 * to_number(substr(v_kid,11,1)))
11457                     + (4 * to_number(substr(v_kid,10,1)))
11458                     + (5 * to_number(substr(v_kid,9,1)))
11459                     + (6 * to_number(substr(v_kid,8,1)))
11460                     + (7 * to_number(substr(v_kid,7,1)))
11461                     + (2 * to_number(substr(v_kid,6,1)))
11462                     + (3 * to_number(substr(v_kid,5,1)))
11463                     + (4 * to_number(substr(v_kid,4,1)))
11464                     + (5 * to_number(substr(v_kid,3,1)))
11465                     + (6 * to_number(substr(v_kid,2,1)))
11466                     + (7 * to_number(substr(v_kid,1,1))));
11467         /* calculate mod 11 of v_sum_11 */
11468         while v_sum_11 > 11 loop
11469           v_sum_11 := v_sum_11 - 11;
11470         end loop;
11471         /* is residual like 1, must the kid ends with '-' */
11472         if (((v_sum_11 = 1)
11473         and (substr(v_kid,25,1) <> '-'))
11474         or ((v_sum_11 <> 1)
11475         and (substr(v_kid,25,1) = '-'))) then
11476           v_status_11 := 1;
11477         elsif ((substr(v_kid,25,1)) <> '-') then
11478           v_rest_11 := 11 - v_sum_11;
11479         /* is residual unlike control digit, the kid_nr is invalid */
11480           if (to_number(substr(v_kid,25,1)) <> v_rest_11) then
11481             v_status_11 := 1;
11482           end if;
11483         end if;
11484         if (v_status_11 = 1 and v_status_10 = 1) then
11485           raise e_kid_feil;
11486         end if;
11487 	x_valResult := TRUE;
11488     exception
11489       when e_kid_feil then
11490          IBY_VALIDATIONSETS_PUB.retrieveErrorMSG ('UNIQUE_REMIT_ID_CODE',
11491              'IBY_VALID_OBJ_INVALID', l_error_msg);
11492          x_docErrorRec.error_message := l_error_msg;
11493          x_docErrorRec.error_code := 'IBY_VALID_OBJ_INVALID';
11494 	 x_valResult := FALSE;
11495        when others then
11496          IBY_VALIDATIONSETS_PUB.retrieveErrorMSG ('UNIQUE_REMIT_ID_CODE',
11497              'IBY_VALID_OBJ_INVALID', l_error_msg);
11498          x_docErrorRec.error_message := l_error_msg;
11499          x_docErrorRec.error_code := 'IBY_VALID_OBJ_INVALID';
11500 	 x_valResult := FALSE;
11501 END xxno_chk_mod_10_11;
11502 
11503 
11504 /*--------------------------------------------------------------------
11505  | NAME:
11506  |     VALIDATE_INT_BANK_ACC_CURR_IN
11507  |
11508  | PURPOSE:
11509  |     Validate whether Internal Bank Account currency exists in the
11510  |     parameter defined while assigning validation.
11511  |     PAYMENT LEVEL
11512  | PARAMETERS:
11513  |     IN
11514  |
11515  |
11516  |     OUT
11517  |
11518  |
11519  | RETURNS:
11520  |
11521  | NOTES:
11522  |
11523  *---------------------------------------------------------------------*/
11524  PROCEDURE VALIDATE_INT_BANK_ACC_CURR_IN (
11525      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
11526      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
11527      p_payment_id         IN IBY_PAYMENTS_ALL.payment_id%type,
11528      p_is_online_val      IN VARCHAR2,
11529      x_result             OUT NOCOPY NUMBER)
11530      IS
11531 
11532  l_payment_rec IBY_VALIDATIONSETS_PUB.paymentRecType;
11533  l_valResult BOOLEAN;
11534  l_valid NUMBER := 0;
11535  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
11536  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
11537  l_int_bank_acct_curr varchar2(50);
11538 
11539 BEGIN
11540 -- Initializing the payment record
11541      IBY_VALIDATIONSETS_PUB.initPaymentData(p_payment_id,l_payment_rec);
11542 
11543      l_docErrorRec.validation_set_code := p_validation_set_code;
11544      l_docErrorRec.transaction_id := p_payment_id;
11545      l_docErrorRec.transaction_type := 'PAYMENT';
11546      l_docErrorRec.calling_app_doc_unique_ref1 := p_payment_id;
11547 
11548       IBY_VALIDATIONSETS_PUB.getParamValue(
11549                         p_validation_assign_id,
11550                         p_validation_set_code,
11551                         'INT_BANK_ACCOUNT_CURR',
11552                          l_int_bank_acct_curr);
11553 
11554      -- Validate transaction reference
11555      IBY_VALIDATIONSETS_PUB.evaluateCondition(
11556           'INT_BANK_ACCT_CURR',
11557 	  l_payment_rec.payer_bank_acc_cur_code,
11558 	  'STRIS',
11559           l_int_bank_acct_curr,
11560           null,
11561           l_valResult,
11562           l_docErrorRec);
11563 
11564      IF (l_valResult = FALSE) THEN
11565         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
11566         l_valid := 1;
11567      END IF;
11568 
11569      -- Inserting errors into IBY_TRANSACTION_ERRORS
11570      IF (l_valid = 1) THEN
11571         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
11572      END IF;
11573 
11574      -- Return the Validation Result
11575      x_result := l_valid;
11576 
11577   END VALIDATE_INT_BANK_ACC_CURR_IN;
11578 
11579 
11580 /*--------------------------------------------------------------------
11581  | NAME:
11582  |     VALIDATE_DEL_CHN_FORMAT_VALUE
11583  |
11584  | PURPOSE:
11585  |    Validate whether delivery channel format value exists in the
11586  |    parameter defined while assigning validation.
11587  |    DOCUMENT LEVEL
11588  |
11589  | PARAMETERS:
11590  |     IN
11591  |
11592  |
11593  |     OUT
11594  |
11595  |
11596  | RETURNS:
11597  |
11598  | NOTES:
11599  |
11600  *---------------------------------------------------------------------*/
11601  PROCEDURE VALIDATE_DEL_CHN_FORMAT_VALUE (
11602      p_validation_assign_id  IN
11603          IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
11604      p_validation_set_code   IN
11605          IBY_VALIDATION_SETS_VL.validation_set_code%TYPE,
11606      p_document_id           IN
11607          IBY_DOCS_PAYABLE_ALL.document_payable_id%TYPE,
11608      p_is_online_val         IN VARCHAR2,
11609      x_result                OUT NOCOPY NUMBER
11610      )IS
11611  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
11612  l_valResult BOOLEAN;
11613  l_valid NUMBER := 0;
11614  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
11615  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
11616  l_del_chn_fmt_val varchar2(100);
11617 
11618  BEGIN
11619 
11620      -- Initializing the document record
11621      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
11622 
11623      l_docErrorRec.validation_set_code := p_validation_set_code;
11624      l_docErrorRec.transaction_id := p_document_id;
11625      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
11626      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
11627      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
11628      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
11629 
11630      IBY_VALIDATIONSETS_PUB.getParamValue(
11631                   p_validation_assign_id,
11632                   p_validation_set_code,
11633                   'DELIVERY_CHANNEL_FORMAT_VALUE',
11634                   l_del_chn_fmt_val);
11635      -- Validate transaction code
11636      IBY_VALIDATIONSETS_PUB.evaluateCondition(
11637          'DOC_DEL_CHN_FMT_VAL',
11638          l_document_rec.delivery_chn_format_val,
11639          'STRIS',
11640          l_del_chn_fmt_val,
11641          null,
11642          l_valResult,
11643          l_docErrorRec);
11644 
11645      IF (l_valResult = FALSE) THEN
11646         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
11647          -- Inserting errors into IBY_TRANSACTION_ERRORS
11648          IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
11649         l_valid := 1;
11650      END IF;
11651 
11652      -- Return the Validation Result
11653      x_result := l_valid;
11654 
11655   END VALIDATE_DEL_CHN_FORMAT_VALUE;
11656 
11657 /*--------------------------------------------------------------------
11658  | NAME:
11659  |     VALIDATE_MAX_PAYMENT_AMOUNT
11660  |
11661  | PURPOSE:
11662  |    Validates the payment amount against the maximum limit defined
11663  |    with parameter while assigning validation.
11664  |    PAYMENT LEVEL
11665  |
11666  | PARAMETERS:
11667  |     IN
11668  |
11669  |
11670  |     OUT
11671  |
11672  |
11673  | RETURNS:
11674  |
11675  | NOTES:
11676  |
11677  *---------------------------------------------------------------------*/
11678  PROCEDURE VALIDATE_MAX_PAYMENT_AMOUNT (
11679      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
11680      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
11681      p_payment_id         IN IBY_PAYMENTS_ALL.payment_id%type,
11682      p_is_online_val      IN VARCHAR2,
11683      x_result             OUT NOCOPY NUMBER)
11684      IS
11685 
11686  l_payment_rec IBY_VALIDATIONSETS_PUB.paymentRecType;
11687  l_valResult BOOLEAN;
11688  l_valid NUMBER := 0;
11689  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
11690  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
11691  l_payment_amount varchar2(50);
11692 
11693 BEGIN
11694 -- Initializing the payment record
11695      IBY_VALIDATIONSETS_PUB.initPaymentData(p_payment_id,l_payment_rec);
11696 
11697      l_docErrorRec.validation_set_code := p_validation_set_code;
11698      l_docErrorRec.transaction_id := p_payment_id;
11699      l_docErrorRec.transaction_type := 'PAYMENT';
11700      l_docErrorRec.calling_app_doc_unique_ref1 := p_payment_id;
11701 
11702       IBY_VALIDATIONSETS_PUB.getParamValue(
11703                         p_validation_assign_id,
11704                         p_validation_set_code,
11705                         'MAX_PAYMENT_AMOUNT',
11706                          l_payment_amount);
11707 
11708      -- Validate transaction reference
11709      IBY_VALIDATIONSETS_PUB.evaluateCondition(
11710           'PMT_AMOUNT',
11711 	  l_payment_rec.pmt_amount,
11712 	  'LESSEQUAL',
11713           null,
11714           l_payment_amount,
11715           l_valResult,
11716           l_docErrorRec);
11717 
11718      IF (l_valResult = FALSE) THEN
11719         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
11720         l_valid := 1;
11721      END IF;
11722 
11723      -- Inserting errors into IBY_TRANSACTION_ERRORS
11724      IF (l_valid = 1) THEN
11725         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
11726      END IF;
11727 
11728      -- Return the Validation Result
11729      x_result := l_valid;
11730 
11731   END VALIDATE_MAX_PAYMENT_AMOUNT;
11732 
11733 /*--------------------------------------------------------------------
11734  | NAME:
11735  |     VALIDATE_DOC_PMT_CURR
11736  |
11737  | PURPOSE:
11738  |    Validate whether document payment currency exists in the
11739  |    parameter defined while assigning validation.
11740  |    DOCUMENT LEVEL
11741  |
11742  | PARAMETERS:
11743  |     IN
11744  |
11745  |
11746  |     OUT
11747  |
11748  |
11749  | RETURNS:
11750  |
11751  | NOTES:
11752  |
11753  *---------------------------------------------------------------------*/
11754  PROCEDURE VALIDATE_DOC_PMT_CURR (
11755      p_validation_assign_id  IN
11756          IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
11757      p_validation_set_code   IN
11758          IBY_VALIDATION_SETS_VL.validation_set_code%TYPE,
11759      p_document_id           IN
11760          IBY_DOCS_PAYABLE_ALL.document_payable_id%TYPE,
11761      p_is_online_val         IN VARCHAR2,
11762      x_result                OUT NOCOPY NUMBER
11763      )IS
11764 
11765  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
11766  l_valResult BOOLEAN;
11767  l_valid NUMBER := 0;
11768  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
11769  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
11770  l_doc_pmt_curr varchar2(100);
11771 
11772  BEGIN
11773 
11774      -- Initializing the document record
11775      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
11776 
11777      l_docErrorRec.validation_set_code := p_validation_set_code;
11778      l_docErrorRec.transaction_id := p_document_id;
11779      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
11780      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
11781      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
11782      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
11783 
11784      IBY_VALIDATIONSETS_PUB.getParamValue(
11785                   p_validation_assign_id,
11786                   p_validation_set_code,
11787                   'DOCUMENT_PAYMENT_CURR',
11788                   l_doc_pmt_curr);
11789      -- Validate transaction code
11790      IBY_VALIDATIONSETS_PUB.evaluateCondition(
11791          'DOCUMENT_PAY_CURRENCY',
11792          l_document_rec.document_pay_currency,
11793          'STRIS',
11794          l_doc_pmt_curr,
11795          null,
11796          l_valResult,
11797          l_docErrorRec);
11798 
11799      IF (l_valResult = FALSE) THEN
11800         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
11801          -- Inserting errors into IBY_TRANSACTION_ERRORS
11802          IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
11803         l_valid := 1;
11804      END IF;
11805 
11806      -- Return the Validation Result
11807      x_result := l_valid;
11808 
11809 
11810   END VALIDATE_DOC_PMT_CURR;
11811 
11812 
11813 /*--------------------------------------------------------------------
11814  | NAME:
11815  |     VALIDATE_PAYEE_BRC_COUNTRY_IN
11816  |
11817  | PURPOSE:
11818  |    Validate whether payee branch country exists in the list of
11819  |    values given with the parameter while assigning validation.
11820  |    DOCUMENT LEVEL
11821  |
11822  | PARAMETERS:
11823  |     IN
11824  |
11825  |
11826  |     OUT
11827  |
11828  |
11829  | RETURNS:
11830  |
11831  | NOTES:
11832  |
11833  *---------------------------------------------------------------------*/
11834  PROCEDURE VALIDATE_PAYEE_BRC_COUNTRY_IN (
11835      p_validation_assign_id  IN
11836          IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
11837      p_validation_set_code   IN
11838          IBY_VALIDATION_SETS_VL.validation_set_code%TYPE,
11839      p_document_id           IN
11840          IBY_DOCS_PAYABLE_ALL.document_payable_id%TYPE,
11841      p_is_online_val         IN VARCHAR2,
11842      x_result                OUT NOCOPY NUMBER
11843      )IS
11844 
11845  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
11846  l_valResult BOOLEAN;
11847  l_valid NUMBER := 0;
11848  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
11849  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
11850  l_payee_brc_country_list varchar2(500);
11851 
11852  BEGIN
11853 
11854      -- Initializing the document record
11855      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
11856 
11857      l_docErrorRec.validation_set_code := p_validation_set_code;
11858      l_docErrorRec.transaction_id := p_document_id;
11859      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
11860      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
11861      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
11862      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
11863 
11864      IBY_VALIDATIONSETS_PUB.getParamValue(
11865                   p_validation_assign_id,
11866                   p_validation_set_code,
11867                   'DOCUMENT_PAYEE_BRANCH_COUNTRY',
11868                   l_payee_brc_country_list);
11869      -- Validate transaction code
11870      IBY_VALIDATIONSETS_PUB.evaluateCondition(
11871          'EXT_BANK_BRANCH_COUNTRY',
11872          l_document_rec.ext_bank_branch_country,
11873          'INSET',
11874          l_payee_brc_country_list,
11875          null,
11876          l_valResult,
11877          l_docErrorRec);
11878 
11879      IF (l_valResult = FALSE) THEN
11880         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
11881          -- Inserting errors into IBY_TRANSACTION_ERRORS
11882          IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
11883         l_valid := 1;
11884      END IF;
11885 
11886      -- Return the Validation Result
11887      x_result := l_valid;
11888 
11889   END VALIDATE_PAYEE_BRC_COUNTRY_IN;
11890 
11891 /*--------------------------------------------------------------------
11892  | NAME:
11893  |     VALIDATE_DEL_CHN_NOT_IN
11894  |
11895  | PURPOSE:
11896  |    Validates whether delivery channel format value doesnt exists in
11897  |    the list of values with the parameter while assigning validation.
11898  |    DOCUMENT LEVEL
11899  |
11900  | PARAMETERS:
11901  |     IN
11902  |
11903  |
11904  |     OUT
11905  |
11906  |
11907  | RETURNS:
11908  |
11909  | NOTES:
11910  |
11911  *---------------------------------------------------------------------*/
11912  PROCEDURE VALIDATE_DEL_CHN_NOT_IN (
11913      p_validation_assign_id  IN
11914          IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
11915      p_validation_set_code   IN
11916          IBY_VALIDATION_SETS_VL.validation_set_code%TYPE,
11917      p_document_id           IN
11918          IBY_DOCS_PAYABLE_ALL.document_payable_id%TYPE,
11919      p_is_online_val         IN VARCHAR2,
11920      x_result                OUT NOCOPY NUMBER
11921      ) IS
11922 
11923  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
11924  l_valResult BOOLEAN;
11925  l_valid NUMBER := 0;
11926  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
11927  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
11928  l_del_chn_fmt_val_list varchar2(500);
11929 
11930  BEGIN
11931 
11932      -- Initializing the document record
11933      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
11934 
11935      l_docErrorRec.validation_set_code := p_validation_set_code;
11936      l_docErrorRec.transaction_id := p_document_id;
11937      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
11938      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
11939      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
11940      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
11941 
11942      IBY_VALIDATIONSETS_PUB.getParamValue(
11943                   p_validation_assign_id,
11944                   p_validation_set_code,
11945                   'DELIVERY_CHANNEL_FORMAT_VALUE',
11946                   l_del_chn_fmt_val_list);
11947      -- Validate transaction code
11948      IBY_VALIDATIONSETS_PUB.evaluateCondition(
11949          'DOC_DEL_CHN_FMT_VAL',
11950          l_document_rec.delivery_chn_format_val,
11951          'NOTINSET',
11952          l_del_chn_fmt_val_list,
11953          null,
11954          l_valResult,
11955          l_docErrorRec);
11956 
11957      IF (l_valResult = FALSE) THEN
11958         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
11959          -- Inserting errors into IBY_TRANSACTION_ERRORS
11960          IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
11961         l_valid := 1;
11962      END IF;
11963 
11964      -- Return the Validation Result
11965      x_result := l_valid;
11966 
11967   END VALIDATE_DEL_CHN_NOT_IN;
11968 
11969 
11970   /*--------------------------------------------------------------------
11971  | NAME:
11972  |     VALIDATE_FIN_URI
11973  |
11974  | PURPOSE:
11975  |    Validates the combination of URI and URI check digit for Finland
11976  |
11977  | PARAMETERS:
11978  |     IN
11979  |
11980  |
11981  |     OUT
11982  |
11983  |
11984  | RETURNS:
11985  |
11986  | NOTES:
11987  |
11988  *---------------------------------------------------------------------*/
11989 PROCEDURE VALIDATE_FIN_URI (
11990      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
11991      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%TYPE,
11992      p_document_id        IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
11993      p_is_online_val      IN VARCHAR2,
11994      x_result             OUT NOCOPY NUMBER) IS
11995 
11996  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
11997  l_valResult BOOLEAN;
11998  l_valid NUMBER := 0;
11999  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
12000  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
12001  l_transaction_error_id IBY_TRANSACTION_ERRORS.transaction_error_id%TYPE;
12002  l_message fnd_new_messages.message_text%TYPE;
12003  l_uri_flag BOOLEAN := false;
12004  l_ck_flag BOOLEAN := false;
12005  l_uri l_document_rec.unique_remit_id_code%type;
12006 
12007  BEGIN
12008 
12009      -- Initializing the document record
12010      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
12011 
12012      l_docErrorRec.validation_set_code := p_validation_set_code;
12013      l_docErrorRec.transaction_id := p_document_id;
12014      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
12015      l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
12016      l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
12017      l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
12018      l_uri := l_document_rec.unique_remit_id_code;
12019      IF (SUBSTR(l_uri,0,2) = 'RF') THEN
12020       BEGIN
12021         l_uri              := SUBSTR(l_uri,5)||SUBSTR(l_uri,0,4); --Bug 15922451
12022         l_uri              := REPLACE(l_uri,'A','10');
12023         l_uri              := REPLACE(l_uri,'B','11');
12024         l_uri              := REPLACE(l_uri,'C','12');
12025         l_uri              := REPLACE(l_uri,'D','13');
12026         l_uri              := REPLACE(l_uri,'E','14');
12027         l_uri              := REPLACE(l_uri,'F','15');
12028         l_uri              := REPLACE(l_uri,'G','16');
12029         l_uri              := REPLACE(l_uri,'H','17');
12030         l_uri              := REPLACE(l_uri,'I','18');
12031         l_uri              := REPLACE(l_uri,'J','19');
12032         l_uri              := REPLACE(l_uri,'K','20');
12033         l_uri              := REPLACE(l_uri,'L','21');
12034         l_uri              := REPLACE(l_uri,'M','22');
12035         l_uri              := REPLACE(l_uri,'N','23');
12036         l_uri              := REPLACE(l_uri,'O','24');
12037         l_uri              := REPLACE(l_uri,'P','25');
12038         l_uri              := REPLACE(l_uri,'Q','26');
12039         l_uri              := REPLACE(l_uri,'R','27');
12040         l_uri              := REPLACE(l_uri,'S','28');
12041         l_uri              := REPLACE(l_uri,'T','29');
12042         l_uri              := REPLACE(l_uri,'U','30');
12043         l_uri              := REPLACE(l_uri,'V','31');
12044         l_uri              := REPLACE(l_uri,'W','32');
12045         l_uri              := REPLACE(l_uri,'X','33');
12046         l_uri              := REPLACE(l_uri,'Y','34');
12047         l_uri              := REPLACE(l_uri,'Z','35');
12048         IF (mod(to_number(l_uri),97) <> 1) THEN
12049             l_docErrorRec.error_message  :='';
12050 
12051             FND_MESSAGE.SET_NAME('IBY', 'IBY_FIN_URI_CD_VAL_FAIL');
12052             l_message := fnd_message.get;
12053 
12054 
12055 	    l_docErrorRec.error_message := l_message;
12056 	    l_docErrorRec.error_code := 'IBY_VALID_OBJ_INVALID';
12057 
12058 
12059             SELECT
12060             IBY_TRANSACTION_ERRORS_S.NEXTVAL
12061             INTO
12062               l_transaction_error_id
12063            FROM
12064               DUAL
12065            ;
12066 
12067            l_docErrorRec.transaction_error_id := l_transaction_error_id;
12068 
12069            INSERT INTO IBY_TRXN_ERROR_TOKENS
12070             (TRANSACTION_ERROR_ID, TOKEN_NAME, TOKEN_VALUE, LOOKUP_TYPE_SOURCE,
12071            CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE,
12072              LAST_UPDATE_LOGIN, OBJECT_VERSION_NUMBER)
12073            VALUES
12074             (l_transaction_error_id, 'ERR_OBJECT', 'URI_CHECK_DIGIT', 'IBY_VALIDATION_FIELDS',
12075            fnd_global.user_id, sysdate, fnd_global.user_id, sysdate,
12076            fnd_global.user_id, 1);
12077 
12078 
12079 	   IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
12080            -- Inserting errors into IBY_TRANSACTION_ERRORS
12081            IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
12082            l_valid :=1;
12083         END IF;
12084 
12085     EXCEPTION WHEN OTHERS THEN
12086             l_docErrorRec.error_message  :='';
12087 
12088             FND_MESSAGE.SET_NAME('IBY', 'IBY_FIN_URI_CD_VAL_FAIL');
12089             l_message := fnd_message.get;
12090 
12091 
12092 	    l_docErrorRec.error_message := l_message;
12093 	    l_docErrorRec.error_code := 'IBY_VALID_OBJ_INVALID';
12094 
12095 
12096             SELECT
12097             IBY_TRANSACTION_ERRORS_S.NEXTVAL
12098             INTO
12099               l_transaction_error_id
12100            FROM
12101               DUAL
12102            ;
12103 
12104            l_docErrorRec.transaction_error_id := l_transaction_error_id;
12105 
12106            INSERT INTO IBY_TRXN_ERROR_TOKENS
12107             (TRANSACTION_ERROR_ID, TOKEN_NAME, TOKEN_VALUE, LOOKUP_TYPE_SOURCE,
12108            CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE,
12109              LAST_UPDATE_LOGIN, OBJECT_VERSION_NUMBER)
12110            VALUES
12111             (l_transaction_error_id, 'ERR_OBJECT', 'URI_CHECK_DIGIT', 'IBY_VALIDATION_FIELDS',
12112            fnd_global.user_id, sysdate, fnd_global.user_id, sysdate,
12113            fnd_global.user_id, 1);
12114 
12115 
12116 	   IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
12117            -- Inserting errors into IBY_TRANSACTION_ERRORS
12118            IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
12119            l_valid :=1;
12120 	END;
12121 
12122      ELSE
12123 -- URI should have only digits
12124 
12125       IBY_VALIDATIONSETS_PUB.evaluateCondition(
12126          'UNIQUE_REMIT_ID_CODE',
12127          trim(l_document_rec.unique_remit_id_code),
12128          'DIGITSONLY',
12129          null,
12130          null,
12131          l_valResult,
12132          l_docErrorRec);
12133 
12134      IF (l_valResult = FALSE) THEN
12135         l_uri_flag := TRUE;
12136         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
12137          -- Inserting errors into IBY_TRANSACTION_ERRORS
12138          IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
12139         l_valid := 1;
12140      END IF;
12141 
12142 -- URI check digit should have only digits
12143 
12144      IBY_VALIDATIONSETS_PUB.evaluateCondition(
12145          'URI_CHECK_DIGIT',
12146          trim(l_document_rec.URI_CHECK_DIGIT),
12147          'DIGITSONLY',
12148          null,
12149          null,
12150          l_valResult,
12151          l_docErrorRec);
12152 
12153      IF (l_valResult = FALSE) THEN
12154         l_ck_flag := TRUE;
12155         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
12156          -- Inserting errors into IBY_TRANSACTION_ERRORS
12157          IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
12158         l_valid := 1;
12159      END IF;
12160 
12161 -- Length of URI should be 20 or less
12162 
12163      IBY_VALIDATIONSETS_PUB.evaluateCondition(
12164          'UNIQUE_REMIT_ID_CODE',
12165          trim(l_document_rec.unique_remit_id_code),
12166          'MAXLENGTH',
12167          null,
12168          20,
12169          l_valResult,
12170          l_docErrorRec);
12171 
12172      IF (l_valResult = FALSE) THEN
12173         IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
12174          -- Inserting errors into IBY_TRANSACTION_ERRORS
12175          IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
12176         l_valid := 1;
12177      END IF;
12178 
12179 --Combination of URI and check digit should be valid
12180      IF(l_document_rec.unique_remit_id_code is not null
12181         and l_document_rec.URI_CHECK_DIGIT is not null
12182         AND l_ck_flag=FALSE
12183         AND l_uri_flag= FALSE)
12184      then
12185      IF(FIN_URI_CHECK_DIGIT_VAL(lpad(trim(l_document_rec.unique_remit_id_code),20,'0'), lpad(trim(l_document_rec.URI_CHECK_DIGIT),2,'0')) = false)
12186      THEN
12187         l_docErrorRec.error_message  :='';
12188 
12189        FND_MESSAGE.SET_NAME('IBY', 'IBY_FIN_URI_CD_VAL_FAIL');
12190        l_message := fnd_message.get;
12191 
12192 
12193 	l_docErrorRec.error_message := l_message;
12194 	l_docErrorRec.error_code := 'IBY_VALID_OBJ_INVALID';
12195 
12196 
12197          SELECT
12198             IBY_TRANSACTION_ERRORS_S.NEXTVAL
12199         INTO
12200             l_transaction_error_id
12201         FROM
12202             DUAL
12203         ;
12204 
12205         l_docErrorRec.transaction_error_id := l_transaction_error_id;
12206 
12207         INSERT INTO IBY_TRXN_ERROR_TOKENS
12208         (TRANSACTION_ERROR_ID, TOKEN_NAME, TOKEN_VALUE, LOOKUP_TYPE_SOURCE,
12209          CREATED_BY, CREATION_DATE, LAST_UPDATED_BY, LAST_UPDATE_DATE,
12210          LAST_UPDATE_LOGIN, OBJECT_VERSION_NUMBER)
12211         VALUES
12212         (l_transaction_error_id, 'ERR_OBJECT', 'URI_CHECK_DIGIT', 'IBY_VALIDATION_FIELDS',
12213          fnd_global.user_id, sysdate, fnd_global.user_id, sysdate,
12214          fnd_global.user_id, 1);
12215 
12216 
12217 	 IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
12218          -- Inserting errors into IBY_TRANSACTION_ERRORS
12219          IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
12220         l_valid :=1;
12221      END IF;
12222      end if;
12223      END IF;
12224 
12225      -- Return the Validation Result
12226      x_result := l_valid;
12227 
12228   END VALIDATE_FIN_URI;
12229 
12230 FUNCTION FIN_URI_CHECK_DIGIT_VAL( uri IBY_DOCS_PAYABLE_ALL.unique_remittance_identifier%TYPE,
12231 				   uri_check_digit IBY_DOCS_PAYABLE_ALL.URI_CHECK_DIGIT%TYPE)
12232 				   RETURN BOOLEAN is
12233 l_flag BOOLEAN := false;
12234 l_ck  IBY_DOCS_PAYABLE_ALL.URI_CHECK_DIGIT%TYPE;
12235 BEGIN
12236 IF uri_check_digit = '00' THEN
12237 l_ck := '10';
12238 ELSE
12239 l_ck := uri_check_digit;
12240 END IF;
12241 
12242 if(
12243 to_number(l_ck)=
12244 10-mod((
12245   to_number(substr(uri,19,1))*7+
12246   to_number(substr(uri,18,1))*3+
12247   to_number(substr(uri,17,1))*1+
12248   to_number(substr(uri,16,1))*7+
12249   to_number(substr(uri,15,1))*3+
12250   to_number(substr(uri,14,1))*1+
12251   to_number(substr(uri,13,1))*7+
12252   to_number(substr(uri,12,1))*3+
12253   to_number(substr(uri,11,1))*1+
12254   to_number(substr(uri,10,1))*7+
12255   to_number(substr(uri,9,1))*3+
12256   to_number(substr(uri,8,1))*1+
12257   to_number(substr(uri,7,1))*7+
12258   to_number(substr(uri,6,1))*3+
12259   to_number(substr(uri,5,1))*1+
12260   to_number(substr(uri,4,1))*7+
12261   to_number(substr(uri,3,1))*3+
12262   to_number(substr(uri,2,1))*1+
12263   to_number(substr(uri,1,1))*7),10) and
12264   to_number(substr(uri,20,1))=to_number(uri_check_digit)) then
12265   l_flag:= true;
12266   end if;
12267 return l_flag;
12268 END FIN_URI_CHECK_DIGIT_VAL;
12269 
12270 
12271 /*--------------------------------------------------------------------
12272  | NAME:
12273  |     PAYMENT_COMPLETION_VALIDATION
12274  |
12275  | PURPOSE:
12276  |     AP IBY Payment Completion Validations
12277  |
12278  | PARAMETERS:
12279  |     IN
12280  |
12281  |
12282  |     OUT
12283  |
12284  |
12285  | RETURNS:
12286  |
12287  | NOTES:
12288  |
12289  *---------------------------------------------------------------------*/
12290 PROCEDURE PAYMENT_COMPLETION_VALIDATION(
12291     p_validation_assign_id IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
12292     p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
12293     p_instruction_id       IN IBY_PAY_INSTRUCTIONS_ALL.payment_instruction_id%type,
12294     p_is_online_val        IN VARCHAR2,
12295     x_result OUT NOCOPY NUMBER)
12296 IS
12297   l_instruction_rec IBY_VALIDATIONSETS_PUB.instructionRecType;
12298 
12299   l_valResult BOOLEAN;
12300   l_valid     NUMBER := 0;
12301   l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
12302   l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
12303 
12304   l_completion_id NUMBER;
12305   l_module_name     CONSTANT VARCHAR2(200) := 'IBY_VALIDATIONSETS_CALLS_PUB.payment_completion_validation';
12306 
12307 BEGIN
12308 
12309   IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
12310     print_debuginfo(l_module_name, 'Enter');
12311   END IF;
12312 
12313   -- Initializing the payment record
12314   IBY_VALIDATIONSETS_PUB.initInstructionData(p_instruction_id,l_instruction_rec);
12315   l_docErrorRec.validation_set_code         := p_validation_set_code;
12316   l_docErrorRec.transaction_id              := p_instruction_id;
12317   l_docErrorRec.transaction_type            := 'PAYMENT_INSTRUCTION';
12318   l_docErrorRec.calling_app_doc_unique_ref1 := p_instruction_id;
12319   l_docErrorRec.override_allowed_on_error_flag := 'N';
12320 
12321   -- Sequence value will be used for AP IBY completion validation simulation
12322   SELECT IBY_COMPLETED_PMTS_GROUP_S.NEXTVAL
12323   INTO l_completion_id
12324   FROM DUAL;
12325 
12326   -- Mark all documents and payments which will be used by AP to apply validations
12327   UPDATE IBY_PAYMENTS_ALL pmt
12328   SET pmt.completed_pmts_group_id = l_completion_id
12329   WHERE pmt.payment_status       IN ('INSTRUCTION_CREATED')
12330   AND pmt.payment_instruction_id  = p_instruction_id
12331   AND pmt.payment_id         IN
12332   (SELECT doc.payment_id
12333    FROM IBY_DOCS_PAYABLE_ALL doc
12334    WHERE doc.payment_id   = pmt.payment_id
12335    AND doc.calling_app_id = 200
12336   );
12337 
12338   /*UPDATE IBY_DOCS_PAYABLE_ALL
12339   SET completed_pmts_group_id = l_completion_id
12340   WHERE payment_id           IN
12341     (SELECT payment_id
12342     FROM IBY_PAYMENTS_ALL
12343     WHERE payment_status        IN ('INSTRUCTION_CREATED')
12344     AND payment_instruction_id = p_instruction_id)
12345   AND document_status <> 'REMOVED';*/
12346 
12347 
12348   IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
12349     print_debuginfo(l_module_name, 'Marked documents and payments with completion id '||l_completion_id);
12350   END IF;
12351 
12352   -- Invoke AP's validation logic, passing them the instruction_id as well as the completion_id
12353   AP_PMT_VALIDATIONS_PKG.performValidations( p_instruction_id, l_completion_id, l_valResult, l_docErrorRec);
12354 
12355   IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
12356     print_debuginfo(l_module_name, 'Core validation logic executed');
12357   END IF;
12358 
12359   -- Revert stamping of completed payments group ID for all documents and payments
12360   UPDATE IBY_PAYMENTS_ALL pmt
12361   SET pmt.completed_pmts_group_id = NULL
12362   WHERE pmt.payment_status IN ('INSTRUCTION_CREATED')
12363   AND pmt.payment_instruction_id = p_instruction_id
12364   AND pmt.payment_id         IN
12365   (SELECT doc.payment_id
12366    FROM IBY_DOCS_PAYABLE_ALL doc
12367    WHERE doc.payment_id   = pmt.payment_id
12368    AND doc.calling_app_id = 200
12369   );
12370 
12371   /*UPDATE IBY_DOCS_PAYABLE_ALL
12372   SET completed_pmts_group_id = NULL
12373   WHERE payment_id           IN
12374     (SELECT payment_id
12375     FROM IBY_PAYMENTS_ALL
12376     WHERE payment_status        IN ('INSTRUCTION_CREATED')
12377     AND payment_instruction_id = p_instruction_id);*/
12378 
12379   IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
12380     print_debuginfo(l_module_name, 'Reverted completion id stamping on documents and payments');
12381   END IF;
12382 
12383   IF (l_valResult = FALSE) THEN
12384     IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
12385     l_valid := 1;
12386   END IF;
12387 
12388   -- Inserting errors into IBY_TRANSACTION_ERRORS
12389   -- The first parameter p_is_online_val takes hardcoded value 'N'.
12390   IF (l_valid = 1) THEN
12391     IBY_VALIDATIONSETS_PUB.insert_transaction_errors('N',l_docErrorTab);
12392   END IF;
12393 
12394   -- Return the Validation Result
12395   x_result               := l_valid;
12396 
12397   IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
12398     print_debuginfo(l_module_name, 'Exit');
12399   END IF;
12400 
12401 END PAYMENT_COMPLETION_VALIDATION;
12402 
12403 
12404 
12405 /*--------------------------------------------------------------------
12406  | NAME:
12407  |     print_debuginfo
12408  |
12409  | PURPOSE:
12410  |     This procedure prints the debug message to the concurrent manager
12411  |     log file.
12412  |
12413  | PARAMETERS:
12414  |     IN
12415  |      p_debug_text - The debug message to be printed
12416  |
12417  |     OUT
12418  |
12419  |
12420  | RETURNS:
12421  |
12422  | NOTES:
12423  |
12424  *---------------------------------------------------------------------*/
12425  PROCEDURE print_debuginfo(p_module IN VARCHAR2,
12426      p_debug_text IN VARCHAR2)
12427  IS
12428 
12429  BEGIN
12430      --
12431      -- Writing debug text to the concurrent manager log file.
12432      --
12433      iby_build_utils_pkg.print_debuginfo(p_module, p_debug_text);
12434 
12435  END print_debuginfo;
12436 
12437 /* SEPA Credit Transfer Enhancement*/
12438 PROCEDURE VALIDATE_INV_LEGAL_ENTITY_ID(
12439      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
12440      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
12441      p_document_id           IN IBY_DOCS_PAYABLE_ALL.document_payable_id%type,
12442      p_is_online_val      IN VARCHAR2,
12443      x_result             OUT NOCOPY NUMBER)
12444  IS
12445 
12446  l_document_rec IBY_VALIDATIONSETS_PUB.documentRecType;
12447  l_valResult BOOLEAN;
12448  l_valid NUMBER := 0;
12449  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
12450  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
12451 
12452 BEGIN
12453 
12454      IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
12455           print_debuginfo('VALIDATE_INV_LEGAL_ENTITY_ID', 'ENTER');
12456      END IF;
12457 -- Initializing the document record
12458      IBY_VALIDATIONSETS_PUB.initDocumentData(p_document_id,l_document_rec,p_is_online_val);
12459 
12460      l_docErrorRec.validation_set_code := p_validation_set_code;
12461      l_docErrorRec.transaction_id := p_document_id;
12462      l_docErrorRec.transaction_type := 'DOCUMENT_PAYABLE';
12463      --l_docErrorRec.calling_app_id := l_document_rec.calling_app_id;
12464      --l_docErrorRec.pay_proc_trxn_type_code := l_document_rec.pay_proc_trxn_type_cd;
12465      --l_docErrorRec.calling_app_doc_unique_ref1 := l_document_rec.calling_app_doc_id1;
12466 
12467      -- Validate Payer Tax Registration Number at Invoice Level
12468      IBY_VALIDATIONSETS_PUB.evaluateCondition(
12469          'INVOICE_LE_IDENTIFICATION',
12470          l_document_rec.payer_tax_registration_number,
12471          'NOTNULL',
12472          null,
12473          null,
12474          l_valResult,
12475          l_docErrorRec);
12476 
12477      IF (l_valResult = FALSE) THEN
12478         -- If we reached here means Legal Entity Registration Does not exists for which invoice is created
12479         -- Validate Invoice Legal Entity Registration Number
12480         IBY_VALIDATIONSETS_PUB.evaluateCondition(
12481          'INVOICE_LE_IDENTIFICATION',
12482          l_document_rec.payer_registration_number,
12483          'NOTNULL',
12484          null,
12485          null,
12486          l_valResult,
12487          l_docErrorRec);
12488 
12489         IF (l_valResult = FALSE) THEN
12490            IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
12491            l_valid := 1;
12492         END IF;
12493      END IF;
12494      IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
12495           print_debuginfo('VALIDATE_INV_LEGAL_ENTITY_ID', 'EXIT');
12496      END IF;
12497  END VALIDATE_INV_LEGAL_ENTITY_ID;
12498 
12499 PROCEDURE VALIDATE_PAYER_LEGAL_ENTITY_ID(
12500      p_validation_assign_id  IN IBY_VAL_ASSIGNMENTS.validation_assignment_id%TYPE,
12501      p_validation_set_code  IN IBY_VALIDATION_SETS_VL.validation_set_code%type,
12502      p_payment_id         IN IBY_PAYMENTS_ALL.payment_id%type,
12503      p_is_online_val      IN VARCHAR2,
12504      x_result             OUT NOCOPY NUMBER)
12505  IS
12506 
12507  l_payment_rec IBY_VALIDATIONSETS_PUB.paymentRecType;
12508  l_valResult BOOLEAN;
12509  l_valid NUMBER := 0;
12510  l_docErrorTab IBY_VALIDATIONSETS_PUB.docErrorTabType;
12511  l_docErrorRec IBY_TRANSACTION_ERRORS%ROWTYPE;
12512 
12513 BEGIN
12514 
12515      IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
12516           print_debuginfo('VALIDATE_PAYER_LEGAL_ENTITY_ID', 'ENTER');
12517      END IF;
12518 -- Initializing the payment record
12519      IBY_VALIDATIONSETS_PUB.initPaymentData(p_payment_id,l_payment_rec);
12520      l_docErrorRec.validation_set_code := p_validation_set_code;
12521      l_docErrorRec.transaction_id := p_payment_id;
12522      l_docErrorRec.transaction_type := 'PAYMENT';
12523      l_docErrorRec.calling_app_doc_unique_ref1 := p_payment_id;
12524 
12525      -- Validate Payer Legal Entity Tax Registration Number
12526      IBY_VALIDATIONSETS_PUB.evaluateCondition(
12527           'PAYER_LE_IDENTIFICATION',
12528 	  l_payment_rec.PAYER_TAX_REGISTRATION_NUM,
12529 	  'NOTNULL',
12530           null,
12531           null,
12532           l_valResult,
12533           l_docErrorRec);
12534 
12535      IF (l_valResult = FALSE) THEN
12536      -- Validate Payer Legal Entity Registration Number
12537          IBY_VALIDATIONSETS_PUB.evaluateCondition(
12538           'PAYER_LE_IDENTIFICATION',
12539 	  l_payment_rec.PAYER_LE_REGISTRATION_NUM,
12540 	  'NOTNULL',
12541           null,
12542           null,
12543           l_valResult,
12544           l_docErrorRec);
12545           IF (l_valResult = FALSE) THEN
12546              IBY_VALIDATIONSETS_PUB.insertIntoErrorTable(l_docErrorRec, l_docErrorTab);
12547              l_valid := 1;
12548           END IF;
12549      END IF;
12550 
12551      -- Inserting errors into IBY_TRANSACTION_ERRORS
12552      IF (l_valid = 1) THEN
12553         IBY_VALIDATIONSETS_PUB.insert_transaction_errors(p_is_online_val,l_docErrorTab);
12554      END IF;
12555 
12556      -- Return the Validation Result
12557      x_result := l_valid;
12558      IF ( G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL) THEN
12559           print_debuginfo('VALIDATE_PAYER_LEGAL_ENTITY_ID', 'EXIT');
12560      END IF;
12561  END VALIDATE_PAYER_LEGAL_ENTITY_ID;
12562 
12563  END IBY_VALIDATIONSETS_CALLS_PUB;