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)