Start with small tweaks as proof of concept.

This commit is contained in:
Dominik Pantůček 2023-03-30 19:09:55 +02:00
parent 1147d73b11
commit 8f0d5acf0a
6 changed files with 35 additions and 31 deletions

View file

@ -209,7 +209,8 @@ MEMBERS-PRINT-SOURCES=members-print.scm dictionary.import.scm \
member-record.import.scm month.import.scm utils.import.scm \ member-record.import.scm month.import.scm utils.import.scm \
table.import.scm listing.import.scm ansi.import.scm \ table.import.scm listing.import.scm ansi.import.scm \
period.import.scm primes.import.scm members-base.import.scm \ period.import.scm primes.import.scm members-base.import.scm \
configuration.import.scm bank-account.import.scm configuration.import.scm bank-account.import.scm \
member-fees.import.scm
members-print.so: members-print.o members-print.so: members-print.o
members-print.o: members-print.import.scm members-print.o: members-print.import.scm

View file

@ -66,17 +66,7 @@
(cons (cons transaction (car account)) (cons (cons transaction (car account))
(cdr account))) (cdr account)))
;; Creates a new bank transaction. The order of elements is ;; Creates a new bank transaction.
;; well-suited for fast access to commonly used fields. (define-record bank-transaction id date amount currency varsym)
(define (make-bank-transaction id date amount currency varsym)
(list varsym amount currency date id))
;; Accessors for the fields actually used
(define bank-transaction-varsym car)
(define bank-transaction-amount cadr)
(define bank-transaction-currency caddr)
(define bank-transaction-date cadddr)
(define (bank-transaction-id tr)
(list-ref tr 4))
) )

View file

@ -143,9 +143,15 @@ CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
(if mr (if mr
(let () (let ()
(print-member-table mr) (print-member-table mr)
(print-member-calendar-table mr) (let* ((fees (member-fees-total mr))
(print "Total fees: " (member-fees-total mr)) (credit (member-credit-total mr))
) (payments (member-payments-total mr))
(balance (- (+ credit payments) fees)))
(print "Total fees: " fees)
(print "Total credit: " credit)
(print "Total payments: " payments)
(print "Balance: " balance)
))
(print-members-base-table MB)) (print-members-base-table MB))
(newline)) (newline))
((print-stats) ((print-stats)

View file

@ -37,7 +37,7 @@
member-fees-total member-fees-total
member-credit-total member-credit-total
print-members-fees-table print-members-fees-table
print-member-calendar-table member-calendar->table
) )
(import scheme (import scheme
@ -89,14 +89,14 @@
(if e (if e
(if (member 'existing (cadr e)) (if (member 'existing (cadr e))
(if (member 'suspended (cadr e)) (if (member 'suspended (cadr e))
(ansi-string #:bgdarkgrey " ") ; Suspended (ansi-string #:bgdarkgrey " ") ; Suspended
(if (member 'destroyed (cadr e)) (if (member 'destroyed (cadr e))
(ansi-string #:bgblack "~~~") ; Destroyed (ansi-string #:bgblack "~~") ; Destroyed
(if (member 'student (cadr e)) (if (member 'student (cadr e))
(ansi-string #:bgyellow " ") ; Student (ansi-string #:bgyellow " ") ; Student
(ansi-string #:bggreen " ")))) ; Normal (ansi-string #:bggreen " ")))) ; Normal
" ") ; Nonexistent - should not happen " ") ; Nonexistent - should not happen
" ")) ; Nonexistent " ")) ; Nonexistent
;; Converts the entry into the fee ;; Converts the entry into the fee
(define (member-calendar-entry->fee e) (define (member-calendar-entry->fee e)
@ -169,18 +169,17 @@
#:col-border #t #:row0-border #t))) #:col-border #t #:row0-border #t)))
;; Nicely print calendar for given member ;; Nicely print calendar for given member
(define (print-member-calendar-table mr) (define (member-calendar->table mr)
(let* ((mc (member-calendar mr)) (let* ((mc (member-calendar mr))
(fees (member-calendar->fees mc))) (fees (member-calendar->fees mc)))
(print (table->string (cons (map (lambda (c) (table->string (cons (map (lambda (c)
(sprintf "\t~A\t" c)) (sprintf "\t~A\t" c))
(list "" 1 2 3 4 5 6 7 8 9 10 11 12)) (list "" 1 2 3 4 5 6 7 8 9 10 11 12))
(member-calendar->years-table mc)) (member-calendar->years-table mc))
#:table-border #t #:table-border #f
#:row-border #t #:row-border #t
#:col-border #t #:col-border #t
#:ansi #t #:ansi #t
)) )))
))
) )

View file

@ -29,6 +29,7 @@
members-payments members-payments
( (
members-payments-process members-payments-process
member-payments-total
) )
(import scheme (import scheme
@ -81,4 +82,9 @@
accounts)) accounts))
mb)) mb))
;; Total amount paid
(define (member-payments-total mr)
(foldl + 0 (map bank-transaction-amount
(member-payments mr))))
) )

View file

@ -54,7 +54,8 @@
primes primes
members-base members-base
configuration configuration
bank-account) bank-account
member-fees)
;; Prints human-readable information ;; Prints human-readable information
(define (print-member-info mr) (define (print-member-info mr)
@ -139,9 +140,10 @@
(define (print-member-table mr) (define (print-member-table mr)
(print (print
(table->string (table->string
(list (list "Basic Information" "Payments") (list (list "Basic Information" "Payments" "Membership Status")
(list (member-info->table mr) (list (member-info->table mr)
(member-payments->table mr)) (member-payments->table mr)
(member-calendar->table mr))
) )
#:row0-border #t #:row0-border #t
#:col-border #t))) #:col-border #t)))