Files
integreat/src/clj/auto_ap/jobs/vendor_usages.clj

33 lines
1.1 KiB
Clojure

(ns auto-ap.jobs.vendor-usages
(:require
[auto-ap.datomic :refer [conn]]
[auto-ap.jobs.core :refer [execute]]
[datomic.api :as dc]))
(defn refresh-vendor-usages []
@(dc/transact-async
conn
(->> (dc/q '[:find ?v ?c (count ?e)
:in $
:where
[?v :vendor/name]
(or-join [?v ?c ?e]
(and
[?e :invoice/vendor ?v]
[?e :invoice/client ?c])
(and
[?e :transaction/vendor ?v]
[?e :transaction/client ?c])
(and
[?e :journal-entry/vendor ?v]
[?e :journal-entry/client ?c]))]
(dc/db conn))
(map (fn [[v c cnt]]
#:vendor-usage {:vendor v
:client c
:key (str v "-" c)
:count cnt})))))
(defn -main [& _]
(execute "vendor-usages" refresh-vendor-usages))