Balance summaries for all members over time.

This commit is contained in:
Dominik Pantůček 2025-01-02 16:10:00 +01:00
parent 0e9cfd546b
commit 7dbdd3ea6e
3 changed files with 13 additions and 7 deletions

View file

@ -41,7 +41,8 @@
primes
cal-period
cal-month
members-fees)
members-fees
members-payments)
(define (members-base-oldest-month mb)
(make-cal-month 2015 1))
@ -52,8 +53,9 @@
(di0 (make-ldict))
(di1 (ldict-set di0 'invalid
(filter (compose not is-4digit-prime? brmember-id) members)))
(active-members (filter brmember-active? members))
(di2 (ldict-set di1 'active
(filter brmember-active? members)))
active-members))
(di3 (ldict-set di2 'suspended
(filter brmember-suspended? members)))
(di4 (ldict-set di3 'students
@ -66,11 +68,14 @@
(find-members-by-predicate mb-arg brmember-has-problems?)))
(di9 (ldict-set di8 'expected
(get-expected-income mb-arg)))
;; add total balance of all members (including destroyed)
;; add total balance of all active members (-only-active -like)
(mbals (map member-total-balance active-members))
(di10 (ldict-set di9 'balance
(foldl + 0 mbals)))
;; advance payments
;; debts of fees
;; add average age of active members
)
di9))
di10))
;; Returns a list two lists: keys, data.
;; Each data record contains values for all keys.
@ -78,7 +83,7 @@
(let ((keys
'(month
total active suspended students destroyed invalid
expected
expected balance
)))
(let mloop ((data '())
(month (members-base-oldest-month mb)))