diff --git a/src/Makefile b/src/Makefile index 5915490..4b5fe02 100644 --- a/src/Makefile +++ b/src/Makefile @@ -201,7 +201,8 @@ members-print.import.scm: $(MEMBERS-PRINT-SOURCES) MEMBERS-FEES-SOURCES=members-fees.scm configuration.import.scm \ brmember.import.scm month.import.scm table.import.scm \ - mbase.import.scm specification.import.scm + mbase.import.scm specification.import.scm \ + util-list.import.scm members-fees.o: members-fees.import.scm members-fees.import.scm: $(MEMBERS-FEES-SOURCES) @@ -329,7 +330,8 @@ util-mail.import.scm: $(UTIL-MAIL-SOURCES) NOTIFICATIONS-SOURCES=notifications.scm brmember.import.scm \ util-mail.import.scm util-dict-list.import.scm \ members-payments.import.scm util-format.import.scm \ - brmember-format.import.scm configuration.import.scm + brmember-format.import.scm configuration.import.scm \ + util-time.import.scm members-fees.import.scm notifications.o: notifications.import.scm notifications.import.scm: $(NOTIFICATIONS-SOURCES) diff --git a/src/members-fees.scm b/src/members-fees.scm index 912607f..d20d4a9 100644 --- a/src/members-fees.scm +++ b/src/members-fees.scm @@ -38,6 +38,7 @@ member-fees-total member-credit-total member-calendar->table + members-summary ) (import scheme @@ -51,7 +52,8 @@ table mbase period - specification) + specification + util-list) ;; Returns a matching list of (list regular student) (define (lookup-member-fees) @@ -168,15 +170,26 @@ ;; Nicely print calendar for given member (define (member-calendar->table mr) (let* ((mc (member-calendar mr)) - (fees (member-calendar->fees mc))) + (fees (member-calendar->fees mc))) (table->string (cons (map (lambda (c) - (sprintf "\t~A\t" c)) - (list "" 1 2 3 4 5 6 7 8 9 10 11 12)) - (member-calendar->years-table mc)) - #:table-border #f - #:row-border #t - #:col-border #t - #:ansi #t - ))) + (sprintf "\t~A\t" c)) + (list "" 1 2 3 4 5 6 7 8 9 10 11 12)) + (member-calendar->years-table mc)) + #:table-border #f + #:row-border #t + #:col-border #t + #:ansi #t + ))) + + ;; Summarizes (cons students full) counts + (define (members-summary mb) + (let ((members (filter + brmember-active? + (mbase-members mb)))) + (foldl (lambda (acc mr) + (cons (+ (car acc) (if (brmember-student? mr) 1 0)) + (+ (cdr acc) (if (brmember-student? mr) 0 1)))) + (cons 0 0) + members))) ) diff --git a/src/notifications.scm b/src/notifications.scm index 610c89f..6d4ed21 100644 --- a/src/notifications.scm +++ b/src/notifications.scm @@ -44,7 +44,8 @@ util-format brmember-format configuration - util-time) + util-time + members-fees) ;; Prints email to the console (define (print-notification-email em) @@ -109,9 +110,17 @@ (let ((em (make-reminder-email mr))) (send-notification-email em))) + ;; Summary email of membership fees payments (define (summary-email-body mb) - '("yyy")) + (let* ((mbs (members-summary mb)) + (students (car mbs)) + (full (cdr mbs))) + (list (format "Expected income: ~A" 0) + (format " ~A full members" full) + (format " ~A students" students) + ))) + ;; Creates the summary email structure (define (make-summary-email mb) (make-ldict `((to . ,(*summary-mailto*))