From 0e9cfd546bb7ff327d1195933535c351cf0bdfd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Thu, 2 Jan 2025 15:18:53 +0100 Subject: [PATCH] Add data for graph of expected income. --- src/Makefile | 3 ++- src/mbase-query.scm | 21 +++++++++++++++------ src/members-fees.scm | 2 +- 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/Makefile b/src/Makefile index cd59f87..b8d623d 100644 --- a/src/Makefile +++ b/src/Makefile @@ -572,7 +572,8 @@ 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 + cal-period.import.scm cal-month.import.scm \ + members-fees.import.scm mbase-query.o: mbase-query.import.scm mbase-query.import.scm: $(MBASE-QUERY-SOURCES) diff --git a/src/mbase-query.scm b/src/mbase-query.scm index c9e3e4c..d54449e 100644 --- a/src/mbase-query.scm +++ b/src/mbase-query.scm @@ -40,7 +40,8 @@ util-bst-ldict primes cal-period - cal-month) + cal-month + members-fees) (define (members-base-oldest-month mb) (make-cal-month 2015 1)) @@ -63,18 +64,22 @@ (di7 (ldict-set di6 'total members)) (di8 (ldict-set di7 'problems (find-members-by-predicate mb-arg brmember-has-problems?))) - ;; add expected income + (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) ;; add average age of active members - ) - di8)) + di9)) ;; Returns a list two lists: keys, data. ;; Each data record contains values for all keys. (define (mbase-stats mb) - (let ((keys '(month total active suspended students destroyed invalid))) + (let ((keys + '(month + total active suspended students destroyed invalid + expected + ))) (let mloop ((data '()) (month (members-base-oldest-month mb))) (if (cal-month<=? month (*current-month*)) @@ -85,7 +90,11 @@ (if (null? keys) (mloop (cons (reverse row) data) (cal-month-add month 1)) - (kloop (cons (length (ldict-ref bi (car keys))) row) + (kloop (cons (let ((val (ldict-ref bi (car keys)))) + (if (list? val) + (length val) + val)) + row) (cdr keys))))) (list keys (reverse data)))))) diff --git a/src/members-fees.scm b/src/members-fees.scm index 7373497..1782f62 100644 --- a/src/members-fees.scm +++ b/src/members-fees.scm @@ -220,7 +220,7 @@ (cons amt (length (filter (lambda (v) (= v amt)) flst)))) amts))) - (number->string (foldl + 0 (map (lambda (p) (* (car p) (cdr p))) sums))))) + (foldl + 0 (map (lambda (p) (* (car p) (cdr p))) sums)))) (define (get-expected-income-string mb) (let* ((flst