From d8b3f578689f5a14987f5ff68e08ffa6325d12d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Thu, 30 Mar 2023 15:54:54 +0200 Subject: [PATCH] Add skeleton of payment processing. --- Makefile | 16 +++++++++++---- members-payments.scm | 48 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 4 deletions(-) create mode 100644 members-payments.scm diff --git a/Makefile b/Makefile index 8a2546a..b0945b7 100644 --- a/Makefile +++ b/Makefile @@ -46,26 +46,28 @@ BBSTOOL-DEPS=bbstool.scm testing.import.scm listing.import.scm \ member-parser.import.scm members-print.import.scm \ member-fees.import.scm members-dir.import.scm \ csv-simple.import.scm bank-account.import.scm \ - bank-fio.import.scm + bank-fio.import.scm members-payments.import.scm BBSTOOL-SOURCES=bbstool.scm testing.scm listing.scm dictionary.scm \ month.scm period.scm ansi.scm command-line.scm \ members-base.scm utils.scm primes.scm member-record.scm \ configuration.scm progress.scm table.scm cards.scm \ members-print.scm member-parser.scm member-fees.scm \ - members-dir.scm csv-simple.scm bank-account.scm bank-fio.scm + members-dir.scm csv-simple.scm bank-account.scm bank-fio.scm \ + members-payments.scm BBSTOOL-OBJS=testing.o listing.o month.o period.o ansi.o dictionary.o \ command-line.o members-base.o utils.o primes.o \ member-record.o configuration.o progress.o table.o cards.o \ members-print.o member-fees.o members-dir.o csv-simple.o \ - bank-account.o bank-fio.o + bank-account.o bank-fio.o members-payments.o BBSTOOL-SHARED=testing.so listing.so month.so period.so ansi.so \ dictionary.so command-line.so members-base.so utils.so \ primes.so member-record.so configuration.so progress.so \ table.so cards.so members-print.so member-fees.so \ - members-dir.so csv-simple.so bank-account.so bank-fio.so + members-dir.so csv-simple.so bank-account.so bank-fio.so \ + members-payments.so .PHONY: imports imports: $(BBSTOOL-DEPS) @@ -247,3 +249,9 @@ BANK-FIO-SOURCES=bank-fio.scm bank-account.import.scm \ bank-fio.so: bank-fio.o bank-fio.o: bank-fio.import.scm bank-fio.import.scm: $(BANK-FIO-SOURCES) + +MEMBERS-PAYMENTS-SOURCES=members-payments.scm bank-account.import.scm + +members-payments.so: members-payments.o +members-payments.o: members-payments.import.scm +members-payments.import.scm: $(MEMBERS-PAYMENTS-SOURCES) diff --git a/members-payments.scm b/members-payments.scm new file mode 100644 index 0000000..5fe51f8 --- /dev/null +++ b/members-payments.scm @@ -0,0 +1,48 @@ +;; +;; members-payments.scm +;; +;; Adding payment information to member records from bank account statement. +;; +;; ISC License +;; +;; Copyright 2023 Brmlab, z.s. +;; Dominik Pantůček +;; +;; Permission to use, copy, modify, and/or distribute this software +;; for any purpose with or without fee is hereby granted, provided +;; that the above copyright notice and this permission notice appear +;; in all copies. +;; +;; THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +;; WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +;; WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE +;; AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR +;; CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +;; OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +;; NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +;; CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +;; + +(declare (unit members-payments)) + +(module + members-payments + ( + members-payments-process + ) + + (import scheme + bank-account) + + ;; Merges bank account statement into members payment keys. The + ;; payment key will be a list of transactions. + (define (members-payments-process mb ba) + (let loop ((mb mb) + (transactions (bank-account-transactions ba))) + (if (null? transactions) + mb + (let* ((transaction (car transactions))) + (loop mb + (cdr transactions)))))) + + )