other fixes
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
(:require [amazonica.aws.s3 :as s3]
|
||||
[auto-ap.datomic :refer [conn remove-nils]]
|
||||
[auto-ap.intuit.core :as i]
|
||||
[auto-ap.utils :refer [by]]
|
||||
[auto-ap.utils :refer [by allow-once]]
|
||||
[auto-ap.yodlee.import :as y]
|
||||
[clj-time.coerce :as coerce]
|
||||
[clj-time.core :as time]
|
||||
@@ -26,51 +26,29 @@
|
||||
db #_client-whitelist)))
|
||||
|
||||
|
||||
(defn allow-once [f]
|
||||
(let [in-progress? (atom false)]
|
||||
(fn []
|
||||
(println in-progress?)
|
||||
(when (= false @in-progress?)
|
||||
(try
|
||||
(reset! in-progress? true)
|
||||
(f)
|
||||
(finally
|
||||
(reset! in-progress? false)))))))
|
||||
|
||||
(defn upsert-transactions []
|
||||
(let [db (d/db conn)
|
||||
import-id (y/start-import :import-source/intuit "Automated Intuit User")
|
||||
stats (atom {:import-batch/imported 0
|
||||
:import-batch/extant 0
|
||||
:import-batch/suppressed 0})]
|
||||
|
||||
(doseq [[bank-account external-id] (get-intuit-bank-accounts db)
|
||||
:let [bank-account (d/entity db bank-account)
|
||||
end (auto-ap.time/local-now)
|
||||
start (time/plus end (time/days -30))]]
|
||||
(log/infof "importing from %s to %s for %s" start end external-id)
|
||||
(let [transactions (->> (i/get-transactions (auto-ap.time/unparse start auto-ap.time/iso-date)
|
||||
(auto-ap.time/unparse end auto-ap.time/iso-date)
|
||||
external-id)
|
||||
(mapv (fn [r]
|
||||
{:client-id (:db/id (:client/_bank-accounts bank-account))
|
||||
:bank-account-id (:db/id bank-account)
|
||||
:description-original (:Memo/Description r)
|
||||
:amount (Double/parseDouble (:Amount r))
|
||||
:date (auto-ap.time/parse (:Date r) auto-ap.time/iso-date)
|
||||
:status "posted"})))]
|
||||
(log/infof "%d transactions found" (count transactions))
|
||||
(let [result (y/grouped-import transactions import-id)]
|
||||
(swap! stats
|
||||
(fn [s]
|
||||
(merge-with + s {:import-batch/imported (count (:import result))
|
||||
:import-batch/extant (count (:extant result))
|
||||
:import-batch/suppressed (count (:suppressed result))}))))))
|
||||
(y/finish-import (assoc @stats :db/id import-id))))
|
||||
(lc/with-context {:source "Importing intuit transactions"}
|
||||
(let [db (d/db conn)]
|
||||
(->>
|
||||
(for [[bank-account external-id] (get-intuit-bank-accounts db)
|
||||
:let [bank-account (d/entity db bank-account)
|
||||
end (auto-ap.time/local-now)
|
||||
start (time/plus end (time/days -30))
|
||||
_ (log/infof "importing from %s to %s for %s" start end external-id)]
|
||||
transaction (i/get-transactions (auto-ap.time/unparse start auto-ap.time/iso-date)
|
||||
(auto-ap.time/unparse end auto-ap.time/iso-date)
|
||||
external-id)]
|
||||
{:client-id (:db/id (:client/_bank-accounts bank-account))
|
||||
:bank-account-id (:db/id bank-account)
|
||||
:description-original (:Memo/Description transaction)
|
||||
:amount (Double/parseDouble (:Amount transaction))
|
||||
:date (auto-ap.time/parse (:Date transaction) auto-ap.time/iso-date)
|
||||
:status "posted"})
|
||||
(y/grouped-import :import-source/intuit "Automated Intuit User"))
|
||||
(log/info "Intuit transactions imported"))))
|
||||
|
||||
(def upsert-transactions (allow-once upsert-transactions))
|
||||
|
||||
|
||||
(defn dry-run-upsert-transactions []
|
||||
(let [db (d/db conn)]
|
||||
(clojure.data.csv/write-csv
|
||||
|
||||
Reference in New Issue
Block a user