Prepare for balances in totals table.
This commit is contained in:
parent
8f0d5acf0a
commit
606a208237
5 changed files with 40 additions and 21 deletions
3
Makefile
3
Makefile
|
@ -251,7 +251,8 @@ bank-fio.so: bank-fio.o
|
||||||
bank-fio.o: bank-fio.import.scm
|
bank-fio.o: bank-fio.import.scm
|
||||||
bank-fio.import.scm: $(BANK-FIO-SOURCES)
|
bank-fio.import.scm: $(BANK-FIO-SOURCES)
|
||||||
|
|
||||||
MEMBERS-PAYMENTS-SOURCES=members-payments.scm bank-account.import.scm
|
MEMBERS-PAYMENTS-SOURCES=members-payments.scm bank-account.import.scm \
|
||||||
|
dictionary.import.scm member-fees.import.scm
|
||||||
|
|
||||||
members-payments.so: members-payments.o
|
members-payments.so: members-payments.o
|
||||||
members-payments.o: members-payments.import.scm
|
members-payments.o: members-payments.import.scm
|
||||||
|
|
|
@ -36,7 +36,6 @@
|
||||||
member-calendar->fees
|
member-calendar->fees
|
||||||
member-fees-total
|
member-fees-total
|
||||||
member-credit-total
|
member-credit-total
|
||||||
print-members-fees-table
|
|
||||||
member-calendar->table
|
member-calendar->table
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -153,21 +152,6 @@
|
||||||
(amounts (map car credit)))
|
(amounts (map car credit)))
|
||||||
(foldl + 0 amounts)))
|
(foldl + 0 amounts)))
|
||||||
|
|
||||||
;; Prints summary table of all fees and credits for all members
|
|
||||||
(define (print-members-fees-table MB)
|
|
||||||
(print
|
|
||||||
(table->string
|
|
||||||
(cons
|
|
||||||
(list "Member" "Fees" "Credit")
|
|
||||||
(map
|
|
||||||
(lambda (mr)
|
|
||||||
(list (member-nick mr)
|
|
||||||
(sprintf "\t~A" (member-fees-total mr))
|
|
||||||
(sprintf "\t~A" (member-credit-total mr))
|
|
||||||
))
|
|
||||||
(sort (filter-members-by-predicate MB member-active?) member<?)))
|
|
||||||
#:col-border #t #:row0-border #t)))
|
|
||||||
|
|
||||||
;; Nicely print calendar for given member
|
;; Nicely print calendar for given member
|
||||||
(define (member-calendar->table mr)
|
(define (member-calendar->table mr)
|
||||||
(let* ((mc (member-calendar mr))
|
(let* ((mc (member-calendar mr))
|
||||||
|
|
|
@ -65,6 +65,7 @@
|
||||||
|
|
||||||
member-record-add-payment
|
member-record-add-payment
|
||||||
member-payments
|
member-payments
|
||||||
|
member-balances
|
||||||
|
|
||||||
member-record-tests!
|
member-record-tests!
|
||||||
)
|
)
|
||||||
|
@ -345,6 +346,10 @@
|
||||||
(define (member-payments mr)
|
(define (member-payments mr)
|
||||||
(dict-ref mr 'payments '()))
|
(dict-ref mr 'payments '()))
|
||||||
|
|
||||||
|
;; Balances totals
|
||||||
|
(define (member-balances mr)
|
||||||
|
(dict-ref mr 'balances (make-dict)))
|
||||||
|
|
||||||
;; Self-tests
|
;; Self-tests
|
||||||
(define (member-record-tests!)
|
(define (member-record-tests!)
|
||||||
(run-tests
|
(run-tests
|
||||||
|
|
|
@ -39,7 +39,10 @@
|
||||||
bank-account
|
bank-account
|
||||||
member-record
|
member-record
|
||||||
members-base
|
members-base
|
||||||
bank-fio)
|
bank-fio
|
||||||
|
|
||||||
|
dictionary
|
||||||
|
member-fees)
|
||||||
|
|
||||||
;; Merges bank account statement into members payment keys. The
|
;; Merges bank account statement into members payment keys. The
|
||||||
;; payment key will be a list of transactions.
|
;; payment key will be a list of transactions.
|
||||||
|
@ -77,11 +80,20 @@
|
||||||
(if apikeys-file
|
(if apikeys-file
|
||||||
(let* ((accounts (load-accounts
|
(let* ((accounts (load-accounts
|
||||||
(load-accounts-list apikeys-file))))
|
(load-accounts-list apikeys-file))))
|
||||||
(foldl members-payments-process-bank
|
(map member-add-balances
|
||||||
mb
|
(foldl members-payments-process-bank
|
||||||
accounts))
|
mb
|
||||||
|
accounts)))
|
||||||
mb))
|
mb))
|
||||||
|
|
||||||
|
;; Adds all balances
|
||||||
|
(define (member-add-balances mr)
|
||||||
|
(dict-set mr
|
||||||
|
'balances
|
||||||
|
(make-dict `((fees . ,(member-fees-total mr))
|
||||||
|
(credit . ,(member-credit-total mr))
|
||||||
|
(balance . ,(member-payments-total mr))))))
|
||||||
|
|
||||||
;; Total amount paid
|
;; Total amount paid
|
||||||
(define (member-payments-total mr)
|
(define (member-payments-total mr)
|
||||||
(foldl + 0 (map bank-transaction-amount
|
(foldl + 0 (map bank-transaction-amount
|
||||||
|
|
|
@ -36,6 +36,7 @@
|
||||||
print-members-base-table
|
print-members-base-table
|
||||||
print-members-base-stats
|
print-members-base-stats
|
||||||
print-members-ids-stats
|
print-members-ids-stats
|
||||||
|
print-members-fees-table
|
||||||
)
|
)
|
||||||
|
|
||||||
(import scheme
|
(import scheme
|
||||||
|
@ -320,4 +321,20 @@
|
||||||
", ")
|
", ")
|
||||||
")"))))
|
")"))))
|
||||||
|
|
||||||
|
;; Prints summary table of all fees and credits for all members
|
||||||
|
(define (print-members-fees-table MB)
|
||||||
|
(print
|
||||||
|
(table->string
|
||||||
|
(cons
|
||||||
|
(list "Member" "Fees" "Credit" "Payments" "Balance")
|
||||||
|
(map
|
||||||
|
(lambda (mr)
|
||||||
|
(let ((balances (member-balances mr)))
|
||||||
|
(list (member-nick mr)
|
||||||
|
(sprintf "\t~A" (member-fees-total mr))
|
||||||
|
(sprintf "\t~A" (member-credit-total mr))
|
||||||
|
)))
|
||||||
|
(sort (filter-members-by-predicate MB member-active?) member<?)))
|
||||||
|
#:col-border #t #:row0-border #t)))
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue