From 70a49c0973cdc7c0cd1c46c5cd8dc40bca3d092a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Sun, 23 Apr 2023 13:27:40 +0200 Subject: [PATCH] Add boring members to notification email. --- src/members-payments.scm | 23 ++++++++++++++++------- src/notifications.scm | 29 +++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 7 deletions(-) diff --git a/src/members-payments.scm b/src/members-payments.scm index b8446fa..6ea1d33 100644 --- a/src/members-payments.scm +++ b/src/members-payments.scm @@ -32,6 +32,8 @@ members-payments-process member-balance member-total-balance + + member-to-notify? members-to-notify ) @@ -213,18 +215,25 @@ (else 0)))) (brmember-payments mr)))) + ;; Returns true if given member should be notified in given number of months + (define (member-to-notify? mr . mmonths) + (let ((months (if (null? mmonths) + 1 + (car mmonths))) + (total (member-total-balance mr)) + (fee (lookup-member-fee (if (brmember-student? mr) + 'student + 'regular)))) + (and (brmember-active? mr) + (< total 0) + (< total (- (* months fee)))))) + ;; Return members to notify because of late payments for more than ;; given number of months (define (members-to-notify mb months) (find-members-by-predicate mb (lambda (mr) - (let ((total (member-total-balance mr)) - (fee (lookup-member-fee (if (brmember-student? mr) - 'student - 'regular)))) - (and (brmember-active? mr) - (< total 0) - (< total (- (* months fee)))))))) + (member-to-notify? mb months)))) ) diff --git a/src/notifications.scm b/src/notifications.scm index 25387dd..44f059e 100644 --- a/src/notifications.scm +++ b/src/notifications.scm @@ -168,10 +168,39 @@ debtors)) #:border-style 'ascii #:col-border #t + #:row0-border #t)))) + (boring (find-members-by-predicate mb (compose not member-to-notify?))) + (boring-lst + (if (null? boring) + '() + (append + (list "" + "Other active members:") + (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) + "-")) + )) + boring)) + #:border-style 'ascii + #:col-border #t #:row0-border #t))))) (append income-lst unpaired-lst debtors-lst + boring-lst (list "" "--" "Brmlab Hackerspace Members Database"