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