Start with small tweaks as proof of concept.
This commit is contained in:
parent
1147d73b11
commit
8f0d5acf0a
6 changed files with 35 additions and 31 deletions
3
Makefile
3
Makefile
|
@ -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
|
||||||
|
|
|
@ -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))
|
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
12
bbstool.scm
12
bbstool.scm
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
))
|
)))
|
||||||
))
|
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
|
@ -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))))
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
|
@ -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)))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue