1 &ANALYZE-SUSPEND _VERSION-NUMBER UIB_v8r12
3 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _DEFINITIONS Procedure
4 /*--------------------------------------------------------------------------
5 ------------------------------------------------------------------------*/
6 DEF INPUT PARAMETER report-options
AS CHAR NO-UNDO.
9 {inc
/ofc-set.i
"Bank-File-Format" "file-format"}
11 DEF VAR preview
AS LOGICAL NO-UNDO.
12 DEF VAR in-file
AS CHAR NO-UNDO.
13 DEF VAR create-receipts
AS LOGICAL NO-UNDO.
16 DEF VAR base-font
AS CHAR NO-UNDO INITIAL "courier,fixed,cpi,22,lpi,10,normal".
17 DEF VAR header-font
AS CHAR NO-UNDO INITIAL "helvetica,proportional,point,11,lpi,7,bold".
18 DEF VAR time-font
AS CHAR NO-UNDO INITIAL "helvetica,proportional,point,6,lpi,9,normal".
19 DEF VAR line
AS CHAR NO-UNDO.
21 DEF VAR bank-amount
AS DEC NO-UNDO INITIAL 0.0 .
22 DEF VAR bank-ec
AS INT NO-UNDO INITIAL ?.
23 DEF VAR bank-ac
AS DEC NO-UNDO INITIAL ?.
24 DEF VAR last-prdate
AS DATE NO-UNDO INITIAL ?.
26 DEF VAR user-name
AS CHAR FORMAT "X(20)" NO-UNDO.
27 {inc
/username.i
"user-name"}
28 DEF VAR timeStamp
AS CHAR FORMAT "X(54)" NO-UNDO.
29 timeStamp
= STRING( TODAY, "99/99/9999") + ", " + STRING( TIME, "HH:MM:SS") + " for " + user-name.
31 DEF VAR hline2
AS CHAR NO-UNDO.
32 DEF VAR hline3
AS CHAR NO-UNDO.
33 hline2
= "Bank Transactions Download Processing".
34 hline3
= "Presented Cheques" + (IF create-receipts
THEN " and Receipts Batch Creation" ELSE "").
36 /* ensure NewBatch
& NewDocument are scoped to entire program */
37 FIND FIRST NewBatch
NO-LOCK NO-ERROR.
38 FIND PREV NewBatch
NO-LOCK NO-ERROR.
40 {inc
/ofc-acct.i
"DEBTORS" "sundry-debtors" "ERROR"}
41 {inc
/ofc-acct.i
"SUSPENSE-TENANT" "suspense-tenant-ac" "ERROR"}
42 DEF VAR suspense-tenant-ec
AS INT NO-UNDO.
43 suspense-tenant-ec
= OfficeControlAccount.EntityCode.
45 {inc
/ofc-set.i
"Receipts-Description" "receipts-description"}
47 /* _UIB-CODE-BLOCK-END
*/
51 &ANALYZE-SUSPEND _UIB-PREPROCESSOR-BLOCK
53 /* ******************** Preprocessor Definitions
******************** */
55 &Scoped-define PROCEDURE-TYPE Procedure
56 &Scoped-define DB-AWARE no
60 /* _UIB-PREPROCESSOR-BLOCK-END
*/
64 /* ************************ Function Prototypes
********************** */
66 &IF DEFINED(EXCLUDE-find-bank-account) = 0 &THEN
68 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD find-bank-account Procedure
69 FUNCTION find-bank-account
RETURNS CHARACTER
70 ( INPUT bkacct
AS CHAR ) FORWARD.
72 /* _UIB-CODE-BLOCK-END
*/
77 &IF DEFINED(EXCLUDE-find-tenant-code) = 0 &THEN
79 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION-FORWARD find-tenant-code Procedure
80 FUNCTION find-tenant-code
RETURNS INTEGER
81 ( INPUT t1
AS CHAR, INPUT t2
AS CHAR ) FORWARD.
83 /* _UIB-CODE-BLOCK-END
*/
89 /* *********************** Procedure Settings
************************ */
91 &ANALYZE-SUSPEND _PROCEDURE-SETTINGS
92 /* Settings for
THIS-PROCEDURE
96 Add Fields to
: Neither
97 Other Settings
: CODE-ONLY
COMPILE
99 &ANALYZE-RESUME _END-PROCEDURE-SETTINGS
101 /* ************************* Create Window
************************** */
103 &ANALYZE-SUSPEND _CREATE-WINDOW
104 /* DESIGN Window definition
(used by the UIB
)
105 CREATE WINDOW Procedure
ASSIGN
108 /* END WINDOW DEFINITION
*/
112 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _INCLUDED-LIB Procedure
113 /* ************************* Included-Libraries
*********************** */
115 {inc
/method
/m-impcsv.i
}
116 {inc
/method
/m-txtrep.i
}
118 /* _UIB-CODE-BLOCK-END
*/
125 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _CUSTOM _MAIN-BLOCK Procedure
128 /* *************************** Main Block
*************************** */
130 RUN pclrep-start
( preview
, "reset,landscape,tm,2,a4,lm,6," + base-font
).
131 OUTPUT TO VALUE(txtrep-print-file
) KEEP-MESSAGES PAGE-SIZE 0.
134 IF create-receipts
THEN RUN create-bank-transaction.
140 /* _UIB-CODE-BLOCK-END
*/
144 /* ********************** Internal Procedures
*********************** */
146 &IF DEFINED(EXCLUDE-convert-bank-date) = 0 &THEN
148 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE convert-bank-date Procedure
149 PROCEDURE convert-bank-date
:
150 /*------------------------------------------------------------------------------
152 ------------------------------------------------------------------------------*/
153 DEF INPUT PARAMETER v-date
AS CHAR NO-UNDO.
154 DEF OUTPUT PARAMETER i-date
AS DATE NO-UNDO.
156 DEF VAR dd
AS INT NO-UNDO.
157 DEF VAR mm
AS INT NO-UNDO.
158 DEF VAR yy
AS INT NO-UNDO.
160 ASSIGN i-date
= DATE( v-date
) NO-ERROR.
161 IF i-date
> (TODAY - 1000) THEN RETURN.
163 /* otherwise make sure there aren't going to be problems with the year
2000 */
164 dd
= INT( ENTRY( 3, v-date
, "/")).
165 mm
= INT( ENTRY( 2, v-date
, "/")).
166 yy
= INT( ENTRY( 1, v-date
, "/")).
169 DO WHILE yy
< SESSION:YEAR-OFFSET:
174 ASSIGN i-date
= DATE( mm
, dd
, yy
) NO-ERROR.
175 IF i-date
= ?
THEN DO:
176 RUN pclrep-line
( base-font
, "Couldn't understand date of >>" + v-date
+ "<< in transaction").
181 /* _UIB-CODE-BLOCK-END
*/
186 &IF DEFINED(EXCLUDE-create-bank-transaction) = 0 &THEN
188 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE create-bank-transaction Procedure
189 PROCEDURE create-bank-transaction
:
190 /*------------------------------------------------------------------------------
192 ------------------------------------------------------------------------------*/
194 IF NOT AVAILABLE(NewBatch
) THEN RETURN.
195 IF bank-ec
= ?
THEN RETURN.
196 IF bank-amount
= ?
THEN RETURN.
197 IF bank-ac
= ?
THEN RETURN.
198 IF last-prdate
= ?
THEN RETURN.
200 IF NOT create-receipts
THEN RETURN.
203 NewDocument.BatchCode
= NewBatch.BatchCode.
204 NewDocument.DocumentType
= "RCBK".
205 NewDocument.Reference
= STRING(NewBatch.BatchCode
) + "/" + STRING(NewDocument.DocumentCode
).
206 NewDocument.Description
= "Banking Summary " + STRING(last-prdate
, "99/99/9999").
209 NewAcctTrans.BatchCode
= NewBatch.BatchCode.
210 NewAcctTrans.DocumentCode
= NewDocument.DocumentCode.
211 NewAcctTrans.EntityType
= "L".
212 NewAcctTrans.EntityCode
= bank-ec.
213 NewAcctTrans.AccountCode
= bank-ac.
214 NewAcctTrans.Date
= last-prdate.
215 NewAcctTrans.Amount
= bank-amount.
220 /* _UIB-CODE-BLOCK-END
*/
225 &IF DEFINED(EXCLUDE-create-receipt-transaction) = 0 &THEN
227 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE create-receipt-transaction Procedure
228 PROCEDURE create-receipt-transaction
:
229 /*------------------------------------------------------------------------------
231 ------------------------------------------------------------------------------*/
232 DEF INPUT PARAMETER in-bkacct
AS CHAR NO-UNDO.
233 DEF INPUT PARAMETER tr-type
AS CHAR NO-UNDO.
234 DEF INPUT PARAMETER indate
AS CHAR NO-UNDO.
235 DEF INPUT PARAMETER text1
AS CHAR NO-UNDO.
236 DEF INPUT PARAMETER text2
AS CHAR NO-UNDO.
237 DEF INPUT PARAMETER amount
AS DEC NO-UNDO.
238 DEF OUTPUT PARAMETER result
AS CHAR NO-UNDO INITIAL "".
240 DEF VAR bkacct
AS CHAR NO-UNDO.
241 DEF VAR prdate
AS DATE NO-UNDO.
242 DEF VAR tenant-code
AS INT NO-UNDO.
243 DEF VAR tr-description
AS CHAR NO-UNDO.
244 DEF VAR tr-reference
AS CHAR NO-UNDO.
246 RUN convert-bank-date
( indate
, OUTPUT prdate
).
248 bkacct
= REPLACE( in-bkacct
, "-", "").
249 FIND FIRST BankAccount
WHERE BankAccount.BankAccount
= bkacct
NO-LOCK NO-ERROR.
250 IF NOT AVAILABLE(BankAccount
) THEN DO:
251 bkacct
= SUBSTRING( bkacct
, 1, 13) + "0" + SUBSTRING( bkacct
, 14, 2).
252 FIND FIRST BankAccount
WHERE BankAccount.BankAccount
BEGINS bkacct
NO-LOCK NO-ERROR.
253 IF NOT AVAILABLE(BankAccount
) THEN DO:
254 result
= "-->No bank account available with account code '" + in-bkacct
+ "'".
259 tenant-code
= find-tenant-code
( text1
, text2
).
260 IF tenant-code
= ?
THEN DO:
261 tr-description
= TRIM(text2
) + " " + TRIM(text1
).
262 tenant-code
= suspense-tenant-ec.
265 tr-description
= receipts-description.
267 FIND Tenant
WHERE Tenant.TenantCode
= tenant-code
NO-LOCK NO-ERROR.
268 IF NOT AVAILABLE(Tenant
) THEN DO:
269 /* should only occur if the suspense tenant doesn't exist
*/
270 result
= "-->Tenant " + STRING(tenant-code
,"99999") + " not on file.".
275 IF create-receipts
THEN DO:
276 IF bank-ec
<> BankAccount.CompanyCode
OR bank-ac
<> BankAccount.AccountCode
THEN DO:
277 RUN create-bank-transaction.
280 NewBatch.BatchType
= "NORM".
281 NewBatch.Description
= "Automatic receipts " + STRING( TODAY, "99/99/9999") + ", " + in-bkacct.
284 NewDocument.BatchCode
= NewBatch.BatchCode.
285 NewDocument.DocumentType
= "RCPT".
286 NewDocument.Reference
= STRING(NewBatch.BatchCode
) + "/" + STRING(NewDocument.DocumentCode
).
287 NewDocument.Description
= NewBatch.Description.
291 NewAcctTrans.BatchCode
= NewBatch.BatchCode.
292 NewAcctTrans.DocumentCode
= NewDocument.DocumentCode.
293 NewAcctTrans.EntityType
= "T".
294 NewAcctTrans.EntityCode
= tenant-code.
295 NewAcctTrans.AccountCode
= sundry-debtors.
296 NewAcctTrans.Date
= prdate.
297 NewAcctTrans.Amount
= amount.
298 NewAcctTrans.Reference
= STRING(NewBatch.BatchCode
) + "/" + STRING(NewDocument.DocumentCode
) + "/" + STRING(NewAcctTrans.TransactionCode
).
299 NewAcctTrans.Description
= tr-description.
302 RUN match-exception
(tr-type
, text2
, text1
, OUTPUT result
).
305 last-prdate
= prdate.
306 bank-ec
= BankAccount.CompanyCode.
307 bank-ac
= BankAccount.AccountCode.
308 bank-amount
= bank-amount
+ amount.
311 result
= "Receipt from " + STRING( Tenant.Name
, "X(30)") + " "
312 + "T" + STRING( Tenant.TenantCode
, "99999") + "/" + Tenant.EntityType
+ STRING( Tenant.EntityCode
, "99999").
318 /* _UIB-CODE-BLOCK-END
*/
323 &IF DEFINED(EXCLUDE-inst-page-header) = 0 &THEN
325 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE inst-page-header Procedure
326 PROCEDURE inst-page-header
:
327 /*------------------------------------------------------------------------------
329 ------------------------------------------------------------------------------*/
330 RUN pclrep-line
( time-font
, timeStamp
+ CHR(13) + FILL(" ",350) + "Page " + STRING(pclrep-page-number
)).
331 RUN pclrep-down-by
(1).
332 RUN pclrep-line
( header-font
, hline2
).
333 RUN pclrep-line
( header-font
, hline3
).
334 RUN pclrep-down-by
(0.5).
335 RUN pclrep-line
( base-font
+ ",bold", " Date Account Number Bank Type Cheque Other Party Reference Amount || Import Program Action taken").
336 RUN pclrep-line
( base-font
+ ",bold", " (TT) (Match1) (Match2)").
337 RUN pclrep-down-by
(0.3).
341 /* _UIB-CODE-BLOCK-END
*/
346 &IF DEFINED(EXCLUDE-mark-as-presented) = 0 &THEN
348 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE mark-as-presented Procedure
349 PROCEDURE mark-as-presented
:
350 /*------------------------------------------------------------------------------
352 ------------------------------------------------------------------------------*/
353 DEF INPUT PARAMETER bkacct
AS CHAR NO-UNDO.
354 DEF INPUT PARAMETER chqnum
AS INT NO-UNDO.
355 DEF INPUT PARAMETER indate
AS CHAR NO-UNDO.
356 DEF INPUT PARAMETER amount
AS DEC NO-UNDO.
357 DEF OUTPUT PARAMETER result
AS CHAR NO-UNDO INITIAL "".
359 DEF VAR cheque-no
AS INT NO-UNDO.
360 DEF VAR prdate
AS DATE NO-UNDO.
362 RUN convert-bank-date
( indate
, OUTPUT prdate
).
364 bkacct
= REPLACE( bkacct
, "-", "").
365 FIND FIRST BankAccount
WHERE BankAccount.BankAccount
= bkacct
NO-LOCK NO-ERROR.
366 IF NOT AVAILABLE(BankAccount
) THEN DO:
367 bkacct
= SUBSTRING( bkacct
, 1, 13) + "0" + SUBSTRING( bkacct
, 14, 2).
368 FIND FIRST BankAccount
WHERE BankAccount.BankAccount
BEGINS bkacct
NO-LOCK NO-ERROR.
369 IF NOT AVAILABLE(BankAccount
) THEN DO:
370 result
= "-->No bank account available with account code "
371 + STRING( bkacct
, "XX-XXXX-XXXXXXX-XXX") .
376 cheque-no
= INTEGER( chqnum
).
377 FIND Cheque
WHERE Cheque.BankAccountCode
= BankAccount.BankAccountCode
378 AND Cheque.ChequeNo
= cheque-no
EXCLUSIVE-LOCK NO-ERROR.
379 IF NOT AVAILABLE(Cheque
) THEN DO:
380 result
= "-->Cheque" + STRING(cheque-no
,">999999")
381 + " presented for " + TRIM(STRING( amount
, ">>>,>>>,>>9.99"))
382 + " but no record of issue - ignored!".
386 IF amount
<> Cheque.Amount
THEN DO:
387 result
= "-->Cheque" + STRING(cheque-no
,">999999") + " issued for " + TRIM(STRING( Cheque.Amount
, ">>>,>>>,>>9.99"))
388 + " but presented for " + TRIM(STRING( amount
, ">>>,>>>,>>9.99")).
389 MESSAGE result
SKIP(1)
390 "Cheque not marked as presented!"
391 VIEW-AS ALERT-BOX WARNING TITLE "Error in presented amount!".
395 ASSIGN Cheque.DatePresented
= prdate
396 Cheque.PresentedAmount
= amount.
398 result
= "Cheque record updated".
402 /* _UIB-CODE-BLOCK-END
*/
407 &IF DEFINED(EXCLUDE-match-exception) = 0 &THEN
409 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE match-exception Procedure
410 PROCEDURE match-exception
:
411 /*------------------------------------------------------------------------------
413 ------------------------------------------------------------------------------*/
414 DEF INPUT PARAMETER trn-type
AS CHAR NO-UNDO.
415 DEF INPUT PARAMETER other-party
AS CHAR NO-UNDO.
416 DEF INPUT PARAMETER ref-text
AS CHAR NO-UNDO.
417 DEF OUTPUT PARAMETER result
AS CHAR NO-UNDO.
419 FOR EACH BankImportException
WHERE BankAccount.BankAccountCode
= BankImportException.BankAccountCode
NO-LOCK:
420 IF trn-type
MATCHES BankImportException.TrnType
421 AND other-party
MATCHES BankImportException.Match1
422 AND ref-text
MATCHES BankImportException.Match2
424 IF BankImport.EntityType
= ?
OR BankImportException.EntityCode
= ?
425 OR BankImportException.AccountCode
= ?
THEN DO:
426 IF create-receipts
THEN DELETE NewAcctTrans.
427 result
= "skipped - no transaction created - " + BankImportException.Description.
430 IF create-receipts
THEN DO:
431 NewAcctTrans.EntityType
= BankImportException.EntityType .
432 NewAcctTrans.EntityCode
= BankImportException.EntityCode .
433 NewAcctTrans.AccountCode
= BankImportException.AccountCode .
434 NewAcctTrans.Description
= BankImportException.Description.
435 IF NewAcctTrans.Description
= ?
OR TRIM(NewAcctTrans.Description
) = "" THEN
436 NewAcctTrans.Description
= receipts-description.
438 result
= "Matched exception to " + BankImportException.EntityType
+ STRING(BankImportException.EntityCode
, "99999")
439 + "/" + STRING(BankImportException.AccountCode
,"9999.99")
440 + " - " + BankImportException.Description.
447 /* _UIB-CODE-BLOCK-END
*/
452 &IF DEFINED(EXCLUDE-parse-parameters) = 0 &THEN
454 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE parse-parameters Procedure
455 PROCEDURE parse-parameters
:
456 /*------------------------------------------------------------------------------
458 ------------------------------------------------------------------------------*/
459 DEF VAR token
AS CHAR NO-UNDO.
460 DEF VAR i
AS INT NO-UNDO.
462 {inc
/showopts.i
"report-options"}
464 DO i
= 1 TO NUM-ENTRIES( report-options
, "~n" ):
465 token
= ENTRY( i
, report-options
, "~n" ).
467 CASE ENTRY( 1, token
):
468 WHEN "Preview" THEN preview
= Yes.
469 WHEN "CreateReceipts" THEN create-receipts
= Yes.
470 WHEN "FileName" THEN in-file
= SUBSTRING( token
, INDEX(token
,",") + 1).
477 /* _UIB-CODE-BLOCK-END
*/
482 &IF DEFINED(EXCLUDE-present-cheques) = 0 &THEN
484 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _PROCEDURE present-cheques Procedure
485 PROCEDURE present-cheques
:
486 /*------------------------------------------------------------------------------
487 Purpose
: Mark cheques in BNZ export file as presented.
488 ------------------------------------------------------------------------------*/
489 DEF VAR bk-acct
AS CHAR NO-UNDO.
490 DEF VAR bk-code
AS CHAR NO-UNDO.
491 DEF VAR tr-amnt
AS DEC NO-UNDO.
/* amount
*/
492 DEF VAR tr-cheque
AS DEC NO-UNDO.
/* cheque no
*/
493 DEF VAR tr-type
AS INT NO-UNDO.
494 DEF VAR tr-type2
AS CHAR NO-UNDO.
495 DEF VAR tr-date
AS CHAR NO-UNDO.
/* date presented
*/
497 DEF VAR tr-text
AS CHAR NO-UNDO.
498 DEF VAR tr-payee
AS CHAR NO-UNDO.
499 DEF VAR in-line
AS CHAR NO-UNDO.
500 DEF VAR i
AS INT NO-UNDO.
501 DEF VAR pos
AS INT NO-UNDO.
502 DEF VAR result
AS CHAR NO-UNDO.
504 INPUT FROM VALUE( in-file
).
507 IF csv-import-line
() = ?
THEN LEAVE.
/* file processed
*/
508 IF LENGTH( csv-get-field
(9) ) > 9 THEN NEXT.
509 IF LENGTH( csv-get-field
(9) ) < 1 THEN NEXT.
511 tr-type
= to-number
( csv-get-field
(9) ).
512 IF tr-type
< 10 OR tr-type
> 99 THEN NEXT.
514 bk-acct
= csv-get-field
(1).
515 bk-code
= find-bank-account
( bk-acct
).
516 tr-amnt
= to-number
( csv-get-field
(4)).
518 IF tr-type
= 41 THEN DO:
519 ASSIGN tr-cheque
= to-number
( csv-get-field
(7) ) NO-ERROR.
521 tr-text
= STRING( csv-get-field
(5), "X(12)") + STRING( csv-get-field
(6), "X(12)") + csv-get-field
(7).
522 tr-payee
= csv-get-field
(8).
523 tr-date
= csv-get-field
(3).
524 tr-text
= TRIM(tr-text
).
525 tr-payee
= TRIM(tr-payee
).
527 line
= STRING( tr-date
, "X(11)")
528 + STRING( bk-acct
, "X(20)")
529 + (IF bk-code
= ?
THEN "****" ELSE STRING( bk-code
, "XXXX")) + " "
530 + STRING( tr-type
, ">>9") + " "
531 + (IF tr-cheque
> 0 AND tr-cheque
<= 9999999.0 THEN STRING( tr-cheque
, ">999999") ELSE FILL(" ",7)) + " "
532 + STRING( tr-payee
, "X(21)")
533 + STRING( tr-text
, "X(37)")
534 + STRING( tr-amnt
, ">>>,>>>,>>9.99CR")
538 result
= "Unknown bank account '" + (IF bk-acct
= ?
THEN "???????????" ELSE bk-acct
) + "'".
539 ELSE IF tr-type
<> 41 THEN
540 RUN create-receipt-transaction
( bk-acct
, tr-type
, tr-date
, tr-text
, tr-payee
, tr-amnt
, OUTPUT result
).
541 ELSE IF tr-cheque
> 0 AND tr-cheque
<= 9999999 AND tr-amnt
< 0 THEN
542 RUN mark-as-presented
( bk-acct
, tr-cheque
, tr-date
, - tr-amnt
, OUTPUT result
) .
543 /* ELSE /* treat as if receipt anyway
*/
544 RUN create-receipt-transaction
( bk-acct
, tr-type
, tr-date
, tr-text
, tr-payee
, tr-amnt
, OUTPUT result
).
547 RUN pclrep-line
( base-font
, line
+ result
).
553 /* _UIB-CODE-BLOCK-END
*/
558 /* ************************ Function Implementations
***************** */
560 &IF DEFINED(EXCLUDE-find-bank-account) = 0 &THEN
562 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION find-bank-account Procedure
563 FUNCTION find-bank-account
RETURNS CHARACTER
564 ( INPUT bkacct
AS CHAR ) :
565 /*------------------------------------------------------------------------------
568 ------------------------------------------------------------------------------*/
570 DEF BUFFER BankAcct
FOR BankAccount.
572 bkacct
= REPLACE( bkacct
, "-", "").
573 FIND FIRST BankAcct
WHERE BankAcct.BankAccount
= bkacct
NO-LOCK NO-ERROR.
574 IF NOT AVAILABLE(BankAcct
) THEN DO:
575 bkacct
= SUBSTRING( bkacct
, 1, 13) + "0" + SUBSTRING( bkacct
, 14, 2).
576 FIND FIRST BankAcct
WHERE BankAcct.BankAccount
BEGINS bkacct
NO-LOCK NO-ERROR.
577 IF NOT AVAILABLE(BankAcct
) THEN RETURN ?.
580 RETURN BankAcct.BankAccountCode.
/* Function return value.
*/
584 /* _UIB-CODE-BLOCK-END
*/
589 &IF DEFINED(EXCLUDE-find-tenant-code) = 0 &THEN
591 &ANALYZE-SUSPEND _UIB-CODE-BLOCK _FUNCTION find-tenant-code Procedure
592 FUNCTION find-tenant-code
RETURNS INTEGER
593 ( INPUT t1
AS CHAR, INPUT t2
AS CHAR ) :
594 /*------------------------------------------------------------------------------
595 Purpose
: Figure the tenant code from bank statement references
596 ------------------------------------------------------------------------------*/
597 DEF VAR pos
AS INT NO-UNDO.
598 DEF VAR tc
AS INT NO-UNDO INITIAL ?.
601 pos
= R-INDEX( t1
, "T").
602 IF pos
> (LENGTH(t1
) - 7) THEN tc
= to-number
( SUBSTRING(t1
, pos
+ 1) ).
603 FIND Tenant
WHERE Tenant.TenantCode
= tc
NO-LOCK NO-ERROR.
604 IF NOT AVAILABLE(Tenant
) THEN tc
= ?.
605 IF tc
<> ?
THEN RETURN tc.
607 pos
= R-INDEX( t1
, " ").
608 IF pos
> (LENGTH(t1
) - 6) AND pos
< (LENGTH(t1
) - 4) THEN
609 tc
= to-number
( SUBSTRING(t1
, pos
+ 1) ).
610 ELSE IF pos
= 24 AND SUBSTRING(t1
, pos
+ 1, 7) = "0000000" THEN
611 tc
= to-number
( SUBSTRING(t1
, pos
+ 8) ).
613 FIND Tenant
WHERE Tenant.TenantCode
= tc
NO-LOCK NO-ERROR.
614 IF NOT AVAILABLE(Tenant
) THEN tc
= ?.
620 /* _UIB-CODE-BLOCK-END
*/