From dc49fcc9a0fb53246bb72abacf4fa5a75a877424 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Wed, 5 Apr 2023 18:20:33 +0200 Subject: [PATCH] Load latest checked transaction. --- src/members-payments.scm | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/members-payments.scm b/src/members-payments.scm index 4375e95..33d1312 100644 --- a/src/members-payments.scm +++ b/src/members-payments.scm @@ -117,12 +117,26 @@ (bank-fio-parse (make-pathname dir (string-append acc ".csv")))) accounts-list)) + ;; Reads single number from given file and returns it. If no number + ;; is and/or the file does not exist, returns #f. + (define (get-latest-checked-id file-name) + (call/cc + (lambda (ret) + (with-exception-handler + (lambda (ex) + (ret #f)) + (lambda () + (with-input-from-file file-name + (lambda () + (number->string (read-line))))))))) + ;; If apikeys is not #f, loads the account numbers, loads bank ;; accounts and processes transactions. (define (members-payments-process mb apikeys-file dir checked-fn) (if apikeys-file (let* ((acc-list (load-accounts-list apikeys-file)) - (accounts (if acc-list (load-accounts acc-list dir) #f))) + (accounts (if acc-list (load-accounts acc-list dir) #f)) + (last-checked (get-latest-checked-id checked-fn))) (if accounts (let ((mbp (foldl members-payments-process-bank mb