make import more forgiving.

This commit is contained in:
2024-03-07 21:57:06 -08:00
parent 0a0978cce1
commit 9dc9078a0d
3 changed files with 58 additions and 11 deletions

View File

@@ -76,8 +76,6 @@
journal-entry (transaction->journal-entry (:db-after with-transaction)
transaction-id
(:db/id transaction))]
(println "TRANSACTION" transaction "JOURNAL" journal-entry "tempid " transaction-id)
(into [[:upsert-entity transaction]]
(if journal-entry
[[:upsert-ledger journal-entry]]
@@ -86,6 +84,8 @@
#_(comment
;; If transactions are failing, it is likely that there are multiple bank accounts linked
;; to yodlee or plaid. here is how i debugged
(upsert-transaction (dc/db auto-ap.datomic/conn) {:transaction/matched-rule 17592233159891,
:db/id "34411061-4656-4e77-8cc0-2f2769b4324c",
:transaction/status "POSTED",
@@ -109,4 +109,45 @@
["upsert-transaction"]
(user/init-repl)
(def my-transaction {:transaction/bank-account 17592232681223,
:transaction/date #inst "2024-02-24T08:00:00.000-00:00",
:transaction/matched-rule 17592233159891,
:transaction/client 17592232577980,
:transaction/status "POSTED",
:transaction/plaid-merchant
{:plaid-merchant/name "Rotten Robbie", :db/id "b2776792-9e2b-46e8-a9c8-bf80abea359e"},
:db/id "ac2efd80-bb03-48b2-b0d0-6b47a5c119dc",
:transaction/id "11a4a13e713d63f476009027e9a53e217e13d0192a37df8ab96c0eed4bdbe996",
:transaction/description-original "Rotten Robbie #03",
:transaction/approval-status {:db/id 17592231963877, :db/ident :transaction-approval-status/approved}, :transaction/amount -84.43,
:transaction/accounts [{:db/id "c402c7b3-c11b-484b-b670-bd48f79a3e5f", :transaction-account/account 17592231963549, :transaction-account/amount 84.43, :transaction-account/location "CB"}],
:transaction/raw-id "gQypbv5946F08op74wZmidDg8qD8Q1fM6gEBP",
:transaction/vendor 17592232627053})
(def my-journal {:journal-entry/alternate-description "Rotten Robbie #03",
:journal-entry/date #inst "2024-02-24T08:00:00.000-00:00",
:journal-entry/original-entity "ac2efd80-bb03-48b2-b0d0-6b47a5c119dc",
:journal-entry/client 17592232577980,
:journal-entry/line-items [{:journal-entry-line/credit 84.43, :journal-entry-line/account 17592232681223, :db/id "ac2efd80-bb03-48b2-b0d0-6b47a5c119dc-0", :journal-entry-line/location "A"}
{:journal-entry-line/account 17592231963549, :db/id "ac2efd80-bb03-48b2-b0d0-6b47a5c119dc-1", :journal-entry-line/debit 84.43, :journal-entry-line/location "CB"}
{:journal-entry-line/account 17592231963549, :db/id "ac2efd80-bb03-48b2-b0d0-6b47a5c119dc-2", :journal-entry-line/debit 84.43, :journal-entry-line/location "CB"}],
:journal-entry/source "transaction",
:journal-entry/cleared true,
:journal-entry/amount 84.43,
:journal-entry/vendor 17592232627053})
(dc/pull (dc/db auto-ap.datomic/conn) '[*] [:transaction/id "11a4a13e713d63f476009027e9a53e217e13d0192a37df8ab96c0eed4bdbe996"])
wl
(user/init-repl)
(or (when-let [original-entity (:journal-entry/original-entity my-journal)]
(dc/pull (dc/db auto-ap.datomic/conn) iol-ion.tx.upsert-ledger/extant-read [:journal-entry/original-entity original-entity]))
(when-let [external-id (:journal-entry/external-id my-journal)]
(dc/pull (dc/db auto-ap.datomic/conn) iol-ion.tx.upsert-ledger/extant-read [:journal-entry/external-id external-id])))
@(dc/transact auto-ap.datomic/conn [[:upsert-entity my-transaction]
[:upsert-ledger my-journal]])
(auto-ap.datomic/pull-attr (dc/db auto-ap.datomic/conn) :bank-account/code 17592232681223)
(auto-ap.datomic/pull-attr (dc/db auto-ap.datomic/conn) :bank-account/code 17592232681228)
)

File diff suppressed because one or more lines are too long

View File

@@ -339,14 +339,20 @@
:error :import-batch/error
:not-ready :import-batch/not-ready) inc))
(when (= :import action)
(alog/info ::upserting-transaction :transaction [:upsert-transaction (transaction->txs transaction bank-account rule-applying-function)])
(let [result (audit-transact [[:upsert-transaction (transaction->txs transaction bank-account rule-applying-function)]
{:db/id import-id
:import-batch/entry (:db/id transaction)}]
{:user/name user
:user/role ":admin"})]
(doseq [[_ n] (:tempids result)]
(solr/touch-with-ledger n))))))
(try
(let [result (audit-transact [[:upsert-transaction (transaction->txs transaction bank-account rule-applying-function)]
{:db/id import-id
:import-batch/entry (:db/id transaction)}]
{:user/name user
:user/role ":admin"})]
(doseq [[_ n] (:tempids result)]
(solr/touch-with-ledger n)))
(catch Exception e
(swap! stats
#(update % :import-batch/error inc))
(alog/error ::invalid-transaction
:hint "It may be that the same bank account is linked twice"
:error e))))))
(get-stats [_]
@stats)