payroll-import/src/core.clj

33 lines
972 B
Clojure
Raw Normal View History

(ns core
(:require [clojure.data.csv :as csv]
[clojure.java.io :as io]
[import :as import]
[parse :refer [parse]]
[lambdaisland.deep-diff2 :as dd]))
(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
(def data
(with-open [reader (io/reader "/home/ben/Downloads/2023-12-27_Pay-Item-Details_2023-12-2.csv")]
(doall
(import/prep-csv-data (csv/read-csv reader)))))
(def groups (group-by :name data))
(def imported
(concat [(import/import-monthly-payroll groups)]
(import/import-individual-taxes groups)))
(dd/pretty-print (dd/diff
(sort-postings human)
(sort-postings imported)
))
(doseq [i imported]
(println (import/render-transaction i)))
)