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

@ -573,7 +573,7 @@ export-sheet.import.scm: $(EXPORT-SHEET-SOURCES)
MBASE-QUERY-SOURCES=mbase-query.scm mbase.import.scm \ MBASE-QUERY-SOURCES=mbase-query.scm mbase.import.scm \
brmember.import.scm util-bst-ldict.scm primes.import.scm \ brmember.import.scm util-bst-ldict.scm primes.import.scm \
cal-period.import.scm cal-month.import.scm \ cal-period.import.scm cal-month.import.scm \
members-fees.import.scm members-fees.import.scm members-payments.import.scm
mbase-query.o: mbase-query.import.scm mbase-query.o: mbase-query.import.scm
mbase-query.import.scm: $(MBASE-QUERY-SOURCES) mbase-query.import.scm: $(MBASE-QUERY-SOURCES)

View file

@ -184,6 +184,7 @@
(-action- 'genweb)) (-action- 'genweb))
(-stats (file:gnuplot-data) "Get stats for all months" (-stats (file:gnuplot-data) "Get stats for all months"
(-action- 'print-stats) (-action- 'print-stats)
(-needs-bank- #t)
(-fname- file:gnuplot-data)) (-fname- file:gnuplot-data))
(-sheet (filename gmnum) "Generate attendance sheet for given GM number" (-sheet (filename gmnum) "Generate attendance sheet for given GM number"
(-needs-bank- #t) (-needs-bank- #t)

View file

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