From 1eb93de0830bf73f1b32e829ec51ab7d3566c21a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Wed, 19 Apr 2023 13:40:18 +0200 Subject: [PATCH] Add active debtors table. --- src/Makefile | 12 +++++++----- src/notifications.scm | 37 ++++++++++++++++++++++++++++++++++--- 2 files changed, 41 insertions(+), 8 deletions(-) diff --git a/src/Makefile b/src/Makefile index 4b5fe02..e7a3ea6 100644 --- a/src/Makefile +++ b/src/Makefile @@ -327,11 +327,13 @@ UTIL-MAIL-SOURCES=util-mail.scm util-io.import.scm \ util-mail.o: util-mail.import.scm util-mail.import.scm: $(UTIL-MAIL-SOURCES) -NOTIFICATIONS-SOURCES=notifications.scm brmember.import.scm \ - util-mail.import.scm util-dict-list.import.scm \ - members-payments.import.scm util-format.import.scm \ - brmember-format.import.scm configuration.import.scm \ - util-time.import.scm members-fees.import.scm +NOTIFICATIONS-SOURCES=notifications.scm brmember.import.scm \ + util-mail.import.scm util-dict-list.import.scm \ + members-payments.import.scm util-format.import.scm \ + brmember-format.import.scm configuration.import.scm \ + util-time.import.scm members-fees.import.scm mbase.import.scm \ + members-print.import.scm table.import.scm \ + bank-account.import.scm notifications.o: notifications.import.scm notifications.import.scm: $(NOTIFICATIONS-SOURCES) diff --git a/src/notifications.scm b/src/notifications.scm index 77de65c..933c5f8 100644 --- a/src/notifications.scm +++ b/src/notifications.scm @@ -37,6 +37,7 @@ (import scheme (chicken base) (chicken format) + (chicken string) brmember util-mail util-dict-list @@ -48,7 +49,8 @@ members-fees mbase members-print - table) + table + bank-account) ;; Prints email to the console (define (print-notification-email em) @@ -131,9 +133,38 @@ (append (list "" "Unpaired transactions:") - (unpaired-table mb #:border-style 'ascii))))) + (unpaired-table mb #:border-style 'ascii)))) + (debtors (members-to-notify mb 1)) + (debtors-lst + (if (null? debtors) + '() + (append + (list "" + "Active debtors:") + (table->list + (cons (list "Id" "Member" "Type" "Balance" "Last payment") + (map (lambda (mr) + (list (brmember-id mr) + (brmember-nick mr) + (if (brmember-student? mr) + 'student + 'normal) + (format "\t~A" (member-total-balance mr)) + (let* ((payments (brmember-payments mr)) + (tr (if (null? payments) + #f + (car (reverse payments))))) + (if tr + (bank-transaction-date tr) + "-")) + )) + debtors)) + #:border-style 'ascii + #:col-border #t + #:row0-border #t))))) (append income-lst - unpaired-lst))) + unpaired-lst + debtors-lst))) ;; Creates the summary email structure (define (make-summary-email mb)