33 lines
972 B
Clojure
33 lines
972 B
Clojure
|
(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)))
|
||
|
|
||
|
)
|