Merge branch 'master' into coding-sales
This commit is contained in:
98
scratch-sessions/fix-invoices-with-splits.clj
Normal file
98
scratch-sessions/fix-invoices-with-splits.clj
Normal file
@@ -0,0 +1,98 @@
|
||||
;; 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"] )
|
||||
@@ -657,7 +657,6 @@
|
||||
invoice (d/entity db invoice-id)
|
||||
current-total (:invoice/total invoice)
|
||||
target-total (invoice-totals invoice-id) ;; TODO should include expense accounts not visible
|
||||
_ (println current-total target-total)
|
||||
new-account? (not (boolean (or (some-> invoice-expense-account-id not-empty Long/parseLong)
|
||||
(:db/id (first (:invoice/expense-accounts invoice))))))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user