99 lines
4.3 KiB
Clojure
99 lines
4.3 KiB
Clojure
;; This buffer is for Clojure experiments and evaluation.
|
|
|
|
;; Press C-j to evaluate the last expression.
|
|
|
|
;; You can also press C-u C-j to evaluate the expression and pretty-print its result.
|
|
|
|
(def g (auto-ap.ledger/unbalanced-invoices))
|
|
|
|
(count g)
|
|
|
|
(take 3 g)
|
|
|
|
(clojure.data.csv/write-csv *out*
|
|
(->> g
|
|
(map (fn [i]
|
|
(let [e (d/pull (d/db auto-ap.datomic/conn)
|
|
'[:invoice/total
|
|
:db/id
|
|
{:invoice/client [:client/code]
|
|
:invoice/expense-accounts [*]}
|
|
{:journal-entry/_original-entity [:journal-entry/amount
|
|
{:journal-entry/line-items [*]} ]}]
|
|
i)
|
|
je (first (:journal-entry/_original-entity e))]
|
|
|
|
[(:db/id e)
|
|
(:client/code (:invoice/client e))
|
|
(:invoice/total e)
|
|
(:journal-entry/amount je)
|
|
(clojure.string/join ", " (filter identity (map :journal-entry-line/credit (:journal-entry/line-items je))))
|
|
(clojure.string/join ", " (filter identity (map :journal-entry-line/debit (:journal-entry/line-items je))))
|
|
(count (:invoice/expense-accounts e))
|
|
(count (:journal-entry/line-items je))]
|
|
))))
|
|
:separator \tab)
|
|
|
|
|
|
(clojure.pprint/pprint (d/pull (d/db auto-ap.datomic/conn) '[*] 17592232790166))
|
|
|
|
(clojure.pprint/pprint (user/entity-history 17592232790174))
|
|
|
|
|
|
|
|
(user/tx-detail 13194187889225)
|
|
|
|
(defn updated-recently? [i]
|
|
(d/q '[:find ?i
|
|
:in $ ?i
|
|
:where [?i :invoice/date]]
|
|
(d/since (d/db auto-ap.datomic/conn) #inst "2021-11-20")
|
|
i))
|
|
|
|
|
|
(def z (for [[client] (d/q '[:find ?c
|
|
:in $ [?code ...]
|
|
:where
|
|
[?c :client/code ?code]]
|
|
(d/db auto-ap.datomic/conn)
|
|
["MDB" "NGT" "AFH" "WGC" "RCI" "MVSC" "OMG" "BSG" "BCBG" "NGMJ" "BCBC"])
|
|
:let [results (d/q '[:find ?i ?z ?a ?b
|
|
:in $ ?c
|
|
:where
|
|
[?i :invoice/client ?c]
|
|
[?i :invoice/total ?a]
|
|
[?i :invoice/expense-accounts ?z]
|
|
[?z :invoice-expense-account/amount ?b]]
|
|
(d/db auto-ap.datomic/conn) client)
|
|
results (->> results
|
|
(group-by first)
|
|
(map (fn [[i v]]
|
|
(let [[[_ _ total]] v]
|
|
[i total (reduce + 0
|
|
(map (fn [[_ _ _ a]]
|
|
a)
|
|
v))])))
|
|
(filter (fn [[i total ea ]]
|
|
(not (auto-ap.utils/dollars= total ea)))))]
|
|
[i _ ea] results
|
|
:when (updated-recently? i)]
|
|
{:db/id i
|
|
:invoice/total ea}))
|
|
|
|
(clojure.pprint/pprint z)
|
|
|
|
@(d/transact auto-ap.datomic/conn (conj z
|
|
{:db/id "datomic.tx"
|
|
:db/doc "Fixing issue where invoice amounts are not adding up"}) )
|
|
|
|
(count (auto-ap.ledger/unbalanced-invoices))
|
|
|
|
|
|
|
|
|
|
(clojure.pprint/pprint (d/pull (d/db auto-ap.datomic/conn) '[*] 17592204815836))
|
|
|
|
(entity-history 17592204815839)
|
|
|
|
(d/pull (d/db auto-ap.datomic/conn) [:client/locations] [:client/code "WGC"] )
|