tons of bug fixes

This commit is contained in:
Bryce Covert
2020-07-08 21:44:11 -07:00
parent 86f51f93e4
commit d120b7e810
18 changed files with 442 additions and 156 deletions

View File

@@ -1,4 +1,4 @@
(ns fixing-transactions-manually-imported-incorrectl)
(ns auto-ap.yodlee.import)
;; This buffer is for Clojure experiments and evaluation.
@@ -14,15 +14,31 @@
(first all-ts)
(def g (auto-ap.yodlee.import/get-existing))
(map
:transaction/yodlee-merchant
(let [all-bank-accounts (get-all-bank-accounts)
(first
(let [all-bank-accounts (auto-ap.yodlee.import/get-all-bank-accounts)
transaction->bank-account (comp (by :bank-account/yodlee-account-id all-bank-accounts) :accountId)
all-rules (tr/get-all)]
(transactions->txs all-ts transaction->bank-account (rm/rule-applying-fn all-rules) (get-existing))))
(count g)
(with-open [writer (java.io.StringWriter.)]
(clojure.data.csv/write-csv writer
(->>
(let [all-bank-accounts (auto-ap.yodlee.import/get-all-bank-accounts)
all-clients (by :db/id (d-clients/get-all))
transaction->bank-account (comp (by :bank-account/yodlee-account-id all-bank-accounts) :accountId)
all-bank-accounts (by :db/id all-bank-accounts)
all-rules (tr/get-all)]
(->> (transactions->txs all-ts transaction->bank-account (rm/rule-applying-fn all-rules) (get-existing))
(map (fn [r]
[(:transaction/id r) (:transaction/amount r)
(coerce/to-date-time (:transaction/date r))
(:transaction/description-original r)
(:bank-account/code (all-bank-accounts (:transaction/bank-account r)))
(:client/code (all-clients (:transaction/client r)))]))))))
(println (.toString writer)))
(g (digest/sha-256 (str 2553824503)))
@@ -32,20 +48,117 @@
(with-open [writer (java.io.StringWriter.)]
(clojure.data.csv/write-csv writer
(->>
(d/query {:query {:find ['?e]
(d/query {:query {:find ['?e '?e2]
:in ['$]
:where ['[?e :transaction/id ?tid]
'[?e :transaction/date ?d]
'(not [?e :transaction/type])]}
:args [(d/since (d/db (d/connect uri)) #inst "2020-06-01")]})
(map first)
'[?e :transaction/type]
'[?e :transaction/bank-account ?ba]
'[?e2 :transaction/date ?d]
'[(not= ?e2 ?e)]
'[?e :transaction/amount ?a1]
'[?e2 :transaction/amount ?a2]
'[?e2 :transaction/bank-account ?ba]
'[(auto-ap.utils/dollars= ?a1 ?a2)]
'(not [?e2 :transaction/type])]}
:args [(d/since (d/db (d/connect uri)) #inst "2020-04-01")]})
vec
(d/pull-many (d/db (d/connect uri))
[:db/id
:transaction/date :transaction/id :transaction/amount
:transaction/description-original
{:transaction/client [:client/code]}
{:transaction/bank-account [:bank-account/code]}])
(map (fn [r]
[(:transaction/id r) (:db/id r) (:transaction/amount r) (coerce/to-date-time (:transaction/date r)) (:transaction/description-original r) (:bank-account/code (:transaction/bank-account r)) (:client/code (:transaction/client r))]))))
(map (fn [[e1 e2]]
[
(d/pull (d/db (d/connect uri))
[:db/id
:transaction/date :transaction/id :transaction/amount
:transaction/description-original
{:transaction/client [:client/code]}
{:transaction/bank-account [:bank-account/code]}]
e1)
(d/pull (d/db (d/connect uri))
[:db/id
:transaction/date :transaction/id :transaction/amount
:transaction/description-original
{:transaction/client [:client/code]}
{:transaction/bank-account [:bank-account/code]}]
e2)
]))
(map (fn [[r1 r2]]
[(:transaction/id r1)
(:db/id r1 )
(:transaction/amount r1)
(coerce/to-date-time (:transaction/date r1))
(:transaction/description-original r1)
(:bank-account/code (:transaction/bank-account r1))
(:client/code (:transaction/client r1))
(:transaction/id r2)
(:db/id r2)
(:transaction/amount r2)
(coerce/to-date-time (:transaction/date r2))
(:transaction/description-original r2)
(:bank-account/code (:transaction/bank-account r2))
(:client/code (:transaction/client r2))])))
)
(println (.toString writer)))
(def matches-to-repair2
(->>
(d/query {:query {:find ['?e '?e2]
:in ['$]
:where ['[?e :transaction/id ?tid]
'[?e :transaction/date ?d]
'[?e :transaction/type]
'[?e :transaction/bank-account ?ba]
'[?e2 :transaction/date ?d]
'[(not= ?e2 ?e)]
'[?e :transaction/amount ?a1]
'[?e2 :transaction/amount ?a2]
'[?e2 :transaction/bank-account ?ba]
'[(auto-ap.utils/dollars= ?a1 ?a2)]
'(not [?e2 :transaction/type])]}
:args [(d/since (d/db (d/connect uri)) #inst "2020-04-01")]})
vec
(map (fn [[e1 e2]]
[
(d/pull (d/db (d/connect uri))
[:db/id
:transaction/date :transaction/id :transaction/amount
:transaction/description-original
:transaction/approval-status
{:transaction/client [:client/code]}
{:transaction/bank-account [:bank-account/code]}
{:journal-entry/_original-entity ['*]}]
e1)
(d/pull (d/db (d/connect uri))
[:db/id
:transaction/date :transaction/id :transaction/amount
:transaction/description-original
:transaction/approval-status
{:transaction/client [:client/code]}
{:transaction/bank-account [:bank-account/code]}
{:journal-entry/_original-entity ['*]}]
e2)
]))
))
(count matches-to-repair2)
(defn repair-transaction [[t-auto t-manual]]
(into
[{:db/id "datomic.tx"
:db/doc "Deletes a transaction that was added manually and automatically"}
[:db/retractEntity (:db/id t-auto)]]
(mapv
(fn [j]
[:db/retractEntity (:db/id j)])
(:journal-entry/_original-entity t-auto))))
(defn map-new-transaction-id [[t-auto t-manual]]
[[:db/add (:db/id t-manual) :transaction/id (:transaction/id t-auto)]])
(map-new-transaction-id (first matches-to-repair))
(doseq [t matches-to-repair]
@(d/transact (d/connect uri) (map-new-transaction-id t)))