Populate unpaired key.

This commit is contained in:
Dominik Pantůček 2023-04-05 18:27:56 +02:00
parent dc49fcc9a0
commit 2b0ddb18c2

View file

@ -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
(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))))