From 2b0ddb18c283d720bdd83f26a350e696ce07beba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Wed, 5 Apr 2023 18:27:56 +0200 Subject: [PATCH] Populate unpaired key. --- src/members-payments.scm | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/members-payments.scm b/src/members-payments.scm index 33d1312..e06e8d2 100644 --- a/src/members-payments.scm +++ b/src/members-payments.scm @@ -79,24 +79,28 @@ (string->number vs))))) varsym-id))) - ;; Special comparator with JendaSAP hack + ;; Special comparator (originally with JendaSAP hack) (define (compare-member-id member-id bank-varsym) (eq? member-id bank-varsym)) ;; Merges bank account statement into members payment keys. The ;; payment key will be a list of transactions. - (define (members-payments-process-bank mb ba) + (define (members-payments-process-bank mb ba last-checked) (let loop ((mb mb) (transactions (bank-account-transactions ba))) (if (null? transactions) mb (let* ((transaction (car transactions)) - (varsym-id (transaction-extract-member-id transaction))) - (loop (members-base-update mb - (lambda (mr) - (compare-member-id (member-id mr) varsym-id)) - (lambda (mr) - (member-record-add-payment mr transaction))) + (varsym-id (transaction-extract-member-id transaction)) + (member (find-member-by-id mb varsym-id))) + (loop (if member + (members-base-update + mb + (lambda (mr) + (compare-member-id (member-id mr) varsym-id)) + (lambda (mr) + (member-record-add-payment mr transaction))) + (members-base-add-unpaired mb transaction)) (cdr transactions)))))) ;; Reads the payments @@ -138,7 +142,8 @@ (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 + (let ((mbp (foldl (lambda (mb ba) + (members-payments-process-bank mb ba last-checked)) mb (filter identity accounts))))