Maybe makes transactions less stuck

This commit is contained in:
2024-03-07 20:41:12 -08:00
parent 80e1b20aff
commit 8eea36cd94
3 changed files with 84 additions and 62 deletions

View File

@@ -3,7 +3,7 @@
(:require [datomic.api :as dc])) (:require [datomic.api :as dc]))
(defn -random-tempid [] (defn -random-tempid []
(str (UUID/randomUUID))) (dc/tempid :db.part/user))
(defn get-line-items-after [db journal-entry] (defn get-line-items-after [db journal-entry]
(for [jel (:journal-entry/line-items journal-entry) (for [jel (:journal-entry/line-items journal-entry)
@@ -11,15 +11,13 @@
:selector [:db/id :journal-entry-line/client+account+location+date] :selector [:db/id :journal-entry-line/client+account+location+date]
:start [:journal-entry-line/client+account+location+date :start [:journal-entry-line/client+account+location+date
(:journal-entry-line/client+account+location+date jel) (:journal-entry-line/client+account+location+date jel)
(:db/id jel)] (:db/id jel)]})
})
(take-while (fn line-must-match-client-account-location [result] (take-while (fn line-must-match-client-account-location [result]
(and (and
(= (take 3 (:journal-entry-line/client+account+location+date result)) (= (take 3 (:journal-entry-line/client+account+location+date result))
(take 3 (:journal-entry-line/client+account+location+date jel))) (take 3 (:journal-entry-line/client+account+location+date jel)))
(not= (:db/id jel) (not= (:db/id jel)
(:db/id result))) (:db/id result)))))
))
(take 2)) (take 2))
:when next-jel] :when next-jel]
(:db/id next-jel))) (:db/id next-jel)))

View File

@@ -6,8 +6,7 @@
(fn [m k v] (fn [m k v]
(if (not (nil? v)) (if (not (nil? v))
(assoc m k v) (assoc m k v)
m m))
))
{} {}
m)] m)]
(if (seq result) (if (seq result)
@@ -52,12 +51,10 @@
:journal-entry-line/credit (when credit-from-bank? :journal-entry-line/credit (when credit-from-bank?
(Math/abs (:transaction/amount entity))) (Math/abs (:transaction/amount entity)))
:journal-entry-line/debit (when debit-from-bank? :journal-entry-line/debit (when debit-from-bank?
(Math/abs (:transaction/amount entity)))}) (Math/abs (:transaction/amount entity)))})]
]
(map-indexed (map-indexed
(fn [i a] (fn [i a]
(-remove-nils{ (-remove-nils {:db/id (str raw-transaction-id "-" (inc i))
:db/id (str raw-transaction-id "-" (inc i))
:journal-entry-line/account (:db/id (:transaction-account/account a)) :journal-entry-line/account (:db/id (:transaction-account/account a))
:journal-entry-line/location (:transaction-account/location a) :journal-entry-line/location (:transaction-account/location a)
:journal-entry-line/debit (when credit-from-bank? :journal-entry-line/debit (when credit-from-bank?
@@ -84,3 +81,30 @@
[[:upsert-ledger journal-entry]] [[:upsert-ledger journal-entry]]
[[:db/retractEntity [:journal-entry/original-entity (:db/id transaction)]]])))) [[:db/retractEntity [:journal-entry/original-entity (:db/id transaction)]]]))))
#_(comment
(upsert-transaction (dc/db auto-ap.datomic/conn) {:transaction/matched-rule 17592233159891,
:db/id "34411061-4656-4e77-8cc0-2f2769b4324c",
:transaction/status "POSTED",
:transaction/description-original "Rotten Robbie #03",
:transaction/approval-status {:db/id 17592231963877,
:db/ident :transaction-approval-status/approved},
:transaction/plaid-merchant {:db/id "223ceae4-d9e7-4e7f-92be-4fb00676088b",
:plaid-merchant/name "Rotten Robbie"},
:transaction/bank-account 17592232681223,
:transaction/vendor 17592232627053,
:transaction/date #inst "2024-02-24T08:00:00Z",
:transaction/client 17592232577980,
:transaction/id "11a4a13e713d63f476009027e9a53e217e13d0192a37df8ab96c0eed4bdbe996",
:transaction/amount -84.43,
:transaction/accounts [{:db/id "cad8463f-2dfe-47dc-ab17-831e87a633d5",
:transaction-account/account 17592231963549,
:transaction-account/location "CB",
:transaction-account/amount 84.43}],
:transaction/raw-id "gQypbv5946F08op74wZmidDg8qD8Q1fM6gEBP"})
["upsert-transaction"]
(user/init-repl)
)

File diff suppressed because one or more lines are too long