payroll-import/src/core.clj

39 lines
1.1 KiB
Clojure
Raw Normal View History

(ns core
2024-02-20 03:55:14 +00:00
(:require [import :as import]
[parse :refer [parse]]
[lambdaisland.deep-diff2 :as dd]))
2024-02-20 03:55:14 +00:00
;; TODO: Need some tests now it's working.
;; TODO: Where do the $25.81 fees come from?
;; TODO: Need a CLI to run it on a CSV file.
(defn sort-postings [transactions]
(for [t transactions]
(update t :postings
(fn [ps] (sort-by (juxt #(get-in % [:meta :entity]) :account :amount) (filter #(not (zero? (:amount %))) ps))))))
(comment
2024-02-20 03:55:14 +00:00
(require '[examples :as examples])
(def data (import/read-grouped-csv "/home/ben/Downloads/2023-12-27_Pay-Item-Details_2023-12-2.csv"))
(def imported
2024-02-20 03:55:14 +00:00
(concat [(import/import-monthly-payroll data)]
2024-02-20 07:26:45 +00:00
(import/import-individual-taxes data)
[(import/import-employer-taxes data)]))
2024-02-20 03:55:14 +00:00
(dd/pretty-print
(dd/diff
(sort-postings (parse examples/human))
(sort-postings imported)))
(doseq [i imported]
(println (import/render-transaction i)))
2024-02-20 07:26:45 +00:00
(dd/pretty-print
(dd/diff
(sort-postings (parse examples/employer-taxes))
(sort-postings [(import/import-employer-taxes data)])))
)