From 9435659140e86beafeabacfa2b046df63ddeb010 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Fri, 31 Mar 2023 09:44:50 +0200 Subject: [PATCH] Split out member id extraction. --- members-payments.scm | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/members-payments.scm b/members-payments.scm index fd43c9c..83cd9b1 100644 --- a/members-payments.scm +++ b/members-payments.scm @@ -45,6 +45,21 @@ dictionary member-fees) + ;; Extract probable member-id from transaction + (define (transaction-extract-member-id transaction) + (let* ((varsym-id0 + (string->number + (bank-transaction-varsym transaction))) + (varsym-id + (or varsym-id0 + (let* ((msg (bank-transaction-message transaction)) + (ci (substring-index "," msg)) + (vs (if ci + (substring msg ci) + msg))) + (string->number vs))))) + varsym-id)) + ;; Merges bank account statement into members payment keys. The ;; payment key will be a list of transactions. (define (members-payments-process-bank mb ba) @@ -53,17 +68,7 @@ (if (null? transactions) mb (let* ((transaction (car transactions)) - (varsym-id0 - (string->number - (bank-transaction-varsym transaction))) - (varsym-id - (or varsym-id0 - (let* ((msg (bank-transaction-message transaction)) - (ci (substring-index "," msg)) - (vs (if ci - (substring msg ci) - msg))) - (string->number vs))))) + (varsym-id (transaction-extract-member-id transaction))) (loop (members-base-update mb (lambda (mr) (eq? (member-id mr)