diff --git a/bbstool.scm b/bbstool.scm index 5d62d33..7ab1878 100644 --- a/bbstool.scm +++ b/bbstool.scm @@ -135,15 +135,19 @@ CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. (print "Current month: " (month->string (*current-month*))) (newline) (if mr - (let () + (let* ((mc (member-calendar mr)) + (fees (member-calendar->fees mc))) (print-member-table mr) (print (table->string (cons (list "" 1 2 3 4 5 6 7 8 9 10 11 12) - (member-calendar->years-table (member-calendar mr))) + (member-calendar->years-table mc)) #:table-border #t #:row-border #t #:col-border #t #:ansi #t - ))) + )) + ;; (print fees) + (print "Total fees: " (foldl + 0 fees)) + ) (print-members-base-table MB)) (newline)) ((print-stats) diff --git a/member-fees.scm b/member-fees.scm index 57b5d42..8f188ad 100644 --- a/member-fees.scm +++ b/member-fees.scm @@ -88,6 +88,20 @@ " ") ; Nonexistent - should not happen " ")) ; Nonexistent + ;; Converts the entry into the fee + (define (member-calendar-entry->fee e) + (if e + (if (member 'existing (cadr e)) + (if (member 'suspended (cadr e)) + 0 ; Suspended + (if (member 'destroyed (cadr e)) + 0 ; Destroyed + (if (member 'student (cadr e)) + 250 ; Student + 500))) ; Normal + 0) ; Nonexistent - should not happen + 0)) ; Nonexistent + ;; Converts the calendar into a table where rows represent years and ;; contain the year in the first cell and 12 cells for months after ;; it. @@ -111,7 +125,8 @@ row)))) rows)))))) - (define (member-calendar->fees mr) - #f) + ;; Converts the whole calendar into a list of amounts (fees) + (define (member-calendar->fees mc) + (map member-calendar-entry->fee mc)) )