diff --git a/src/Makefile b/src/Makefile index b8d623d..827b386 100644 --- a/src/Makefile +++ b/src/Makefile @@ -573,7 +573,7 @@ export-sheet.import.scm: $(EXPORT-SHEET-SOURCES) MBASE-QUERY-SOURCES=mbase-query.scm mbase.import.scm \ brmember.import.scm util-bst-ldict.scm primes.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.import.scm: $(MBASE-QUERY-SOURCES) diff --git a/src/hackerbase.scm b/src/hackerbase.scm index ce6c781..9f29a94 100644 --- a/src/hackerbase.scm +++ b/src/hackerbase.scm @@ -184,6 +184,7 @@ (-action- 'genweb)) (-stats (file:gnuplot-data) "Get stats for all months" (-action- 'print-stats) + (-needs-bank- #t) (-fname- file:gnuplot-data)) (-sheet (filename gmnum) "Generate attendance sheet for given GM number" (-needs-bank- #t) diff --git a/src/mbase-query.scm b/src/mbase-query.scm index d54449e..d801a2f 100644 --- a/src/mbase-query.scm +++ b/src/mbase-query.scm @@ -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)))