tons of bug fixes
This commit is contained in:
@@ -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)))
|
||||
|
||||
Reference in New Issue
Block a user