Prepare fee lookups.

This commit is contained in:
Dominik Pantůček 2023-03-31 19:43:43 +02:00
parent 306cca2ae3
commit 9900764f57
3 changed files with 46 additions and 0 deletions

View file

@ -51,6 +51,43 @@
members-base
period)
;; Specifications of fees, regular and student must be in all
(define member-fees-lookup-source
'(((2010 1) #f 500 250)))
;; Convert into lookups - a list of (list period regular student)
(define member-fees-lookup-table
(map
(lambda (src)
(let* ((since0 (car src))
(since (apply make-month since0))
(before0 (cadr src))
(before (if before0
(apply make-month before0)
#f))
(regular (caddr src))
(student (cadddr src)))
(list (make-period since before)
regular
student)))
member-fees-lookup-source))
;; Returns a matching list of (list regular student)
(define (lookup-member-fees)
(let loop ((lst member-fees-lookup-table))
(if (null? lst)
#f
(if (month-in-period? (caar lst))
(cdar lst)
(loop (cdr lst))))))
;; Returns time-based fee for given type
(define (lookup-member-fee type)
(let ((fees (lookup-member-fees)))
(if (eq? type 'student)
(cadr fees)
(car fees))))
;; Returns a list of months where each month is a list containing:
;; * month (from month module)
;; * flags - a list of symbols: student, suspended, destroyed