diff --git a/src/Makefile b/src/Makefile index c1bf5b6..65917bf 100644 --- a/src/Makefile +++ b/src/Makefile @@ -47,7 +47,7 @@ HACKERBASE-OBJS=hackerbase.o testing.o listing.o month.o period.o \ member-parser.o web-static.o environment.o mailman.o \ util-set-list.o util-time.o util-tag.o util-io.o \ util-string.o util-io.o util-list.o util-parser.o texts.o \ - tests.o util-proc.o util-mail.o reminders.o + tests.o util-proc.o util-mail.o reminders.o util-format.o .PHONY: imports imports: $(HACKERBASE-DEPS) @@ -317,7 +317,12 @@ util-mail.import.scm: $(UTIL-MAIL-SOURCES) REMINDERS-SOURCES=reminders.scm member-record.import.scm \ util-mail.import.scm util-dict-list.import.scm \ - members-payments.import.scm + members-payments.import.scm util-format.scm reminders.o: reminders.import.scm reminders.import.scm: $(REMINDERS-SOURCES) + +UTIL-FORMAT-SOURCES=util-format.scm + +util-format.o: util-format.import.scm +util-format.import.scm: $(UTIL-FORMAT-SOURCES) diff --git a/src/reminders.scm b/src/reminders.scm index 20a3953..c88e30f 100644 --- a/src/reminders.scm +++ b/src/reminders.scm @@ -37,14 +37,15 @@ member-record util-mail util-dict-list - members-payments) + members-payments + util-format) ;; Creates reminder email body (define (reminder-email-body mr) (list (member-format "Ahoj ~N," mr) "podle evidence členů a bankovního účtu to vypadá, že máš nedoplatek" - (format "ve výši ~A Kč." (member-total-balance mr)) + (format "ve výši ~A Kč." (format-amount (member-total-balance mr))) "Zkontroluj, prosím, zda tvé platby členských příspěvků" (member-format "s variabilním symbolem ~I byly zaslány na" mr) "správný účet 1234/2010" diff --git a/src/util-format.scm b/src/util-format.scm new file mode 100644 index 0000000..ff652b1 --- /dev/null +++ b/src/util-format.scm @@ -0,0 +1,53 @@ +;; +;; util-format.scm +;; +;; Less-common formatting functions. +;; +;; ISC License +;; +;; Copyright 2023 Brmlab, z.s. +;; Dominik Pantůček +;; +;; Permission to use, copy, modify, and/or distribute this software +;; for any purpose with or without fee is hereby granted, provided +;; that the above copyright notice and this permission notice appear +;; in all copies. +;; +;; THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +;; WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +;; WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE +;; AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR +;; CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS +;; OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +;; NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +;; CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +;; + +(declare (unit util-format)) + +(module + util-format + ( + format-amount + ) + + (import scheme + (chicken string) + (chicken format)) + + ;; Formats amount in currency + (define (format-amount amt) + (if amt + (let* ((str (number->string amt)) + (flds (string-split str ".")) + (integer? (null? (cdr flds)))) + (if integer? + (format "~A.--" (car flds)) + (format "~A.~A" + (car flds) + (substring + (string-append (cadr flds) "0") + 0 2)))) + "ERR.OR")) + + )