diff --git a/src/member-record.scm b/src/member-record.scm index 6083c67..cf6d3f9 100644 --- a/src/member-record.scm +++ b/src/member-record.scm @@ -66,6 +66,7 @@ member-record-add-payment member-payments member-balance + member-total-balance member-record-tests! ) @@ -350,6 +351,15 @@ (define (member-balance mr) (dict-ref mr 'balance (make-dict))) + ;; Computes total member balance from credit, fees and payment + ;; information + (define (member-total-balance mr) + (let* ((bal (member-balance mr)) + (fees (dict-ref bal 'fees 0)) + (credit (dict-ref bal 'credit 0)) + (payment (dict-ref bal 'payment))) + (- (+ credit payment) fees))) + ;; Self-tests (define (member-record-tests!) (run-tests diff --git a/src/members-payments.scm b/src/members-payments.scm index de273bf..2a81ff6 100644 --- a/src/members-payments.scm +++ b/src/members-payments.scm @@ -29,7 +29,6 @@ members-payments ( members-payments-process - member-payments-total ) (import scheme @@ -114,7 +113,7 @@ accounts))) mb)) - ;; Adds all balances - payments are converted to CZK. + ;; Adds all balances - payments are converted to CZK in member-payments-total (define (member-add-balance mr) (let ((mr0 (dict-set mr 'balance @@ -129,7 +128,7 @@ (bank-transaction-date b))))))) - ;; Total amount paid + ;; Total amount paid - calculated from payments (define (member-payments-total mr) (foldl + 0 (map (lambda (tr) (let ((amount (bank-transaction-amount tr)) @@ -140,4 +139,5 @@ (else 0)))) (member-payments mr)))) + ) diff --git a/src/web-static.scm b/src/web-static.scm index bca6c8f..6563f12 100644 --- a/src/web-static.scm +++ b/src/web-static.scm @@ -26,12 +26,13 @@ (declare (unit web-static)) (module - web-static-output + web-static ( gen-web-static-member ) (import scheme + (chicken base) (chicken format) member-record) @@ -40,8 +41,12 @@ (define (gen-web-static-member mr) (let ((nick (member-nick mr)) (id (member-id mr))) - (let ((nf (open-output-file (sprintf "~A.id" nick)))) - (display id nf) - (newline nf)))) + (with-output-to-file (sprintf "~A.id" nick) + (lambda () + (print id))) + (with-output-to-file (sprintf "~A.balance" nick) + (lambda () + (print (member-total-balance mr)))) + )) )