(ns core (:require [import :as import] [parse :refer [parse]] [lambdaisland.deep-diff2 :as dd])) ;; 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 (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 (concat [(import/import-monthly-payroll data)] (import/import-individual-taxes data) [(import/import-employer-taxes data)])) (dd/pretty-print (dd/diff (sort-postings (parse examples/human)) (sort-postings imported))) (doseq [i imported] (println (import/render-transaction i))) (dd/pretty-print (dd/diff (sort-postings (parse examples/employer-taxes)) (sort-postings [(import/import-employer-taxes data)]))) )