74 lines
3.4 KiB
Plaintext
74 lines
3.4 KiB
Plaintext
(ns auto-ap.import.intuit
|
|
(:require
|
|
[auto-ap.datomic :refer [conn]]
|
|
[auto-ap.import.common :refer [wrap-integration]]
|
|
[auto-ap.import.transactions :as t]
|
|
[auto-ap.intuit.core :as i]
|
|
[auto-ap.logging :as alog]
|
|
[auto-ap.time :as atime]
|
|
[clj-time.coerce :as coerce]
|
|
[clj-time.core :as time]
|
|
[clojure.string :as str]
|
|
[com.unbounce.dogstatsd.core :as statsd]
|
|
[datomic.api :as dc]
|
|
[clj-http.client :as client]))
|
|
|
|
(for [[e] (take 5 (get-intuit-bank-accounts (dc/db conn)))]
|
|
|
|
(i/get-transactions "2023-02-01"
|
|
"2023-02-05"
|
|
e))
|
|
(defn get-bank-accounts [token]
|
|
|
|
(defn get-bank-accounts [token]
|
|
(->> (:body (client/get (str i/prod-base-url "/company/" i/prod-company-id "/query")
|
|
{:headers
|
|
(i/with-auth i/prod-base-headers token)
|
|
:as :json
|
|
:query-params {"query" "SELECT * From Account maxresults 1000"}}))
|
|
:QueryResponse
|
|
:Account
|
|
#_(filter
|
|
#(#{"Bank" "Credit Card"} (:AccountType %))))))
|
|
|
|
|
|
|
|
(require 'auto-ap.time_reader)
|
|
|
|
(let [start #clj-time/date-time "2024-02-01"
|
|
end #clj-time/date-time "2024-04-01"]
|
|
(for [[ib ba c] (seq (get-intuit-bank-accounts (dc/db conn) "BCFM"))
|
|
:let [raw-transactions (i/get-transactions (atime/unparse-local start atime/iso-date)
|
|
(atime/unparse-local end atime/iso-date)
|
|
ib)
|
|
ideal-transactions (intuits->transactions raw-transactions ba c)
|
|
|
|
found-transactions (when (seq ideal-transactions)
|
|
(into {} (dc/q '[:find ?si (count ?t)
|
|
:in $ [?eid ...]
|
|
:where
|
|
[?t :transaction/id ?eid]
|
|
[?t :transaction/approval-status ?s]
|
|
[?s :db/ident ?si]]
|
|
(dc/db conn)
|
|
(map :transaction/id ideal-transactions))))
|
|
|
|
missing-transaction-ids (when (seq ideal-transactions)
|
|
(->>
|
|
(dc/q '[:find ?eid
|
|
:in $ [?eid ...]
|
|
:where (not [_ :transaction/id ?eid])]
|
|
(dc/db conn)
|
|
(map :transaction/id ideal-transactions))
|
|
(map first)
|
|
(into #{})))
|
|
missing-transactions (filter (comp missing-transaction-ids :transaction/id) ideal-transactions)]]
|
|
{:bank-account/name (pull-attr (dc/db conn) :bank-account/name ba)
|
|
:external-transaction-count (count raw-transactions)
|
|
:integreat-transaction-count (reduce + 0 (vals found-transactions))
|
|
:approved-count (:transaction-approval-status/approved found-transactions 0)
|
|
:unapproved-count (:transaction-approval-status/unapproved found-transactions 0)
|
|
:requires-feedback-count (:transaction-approval-status/requires-feedback found-transactions 0)
|
|
:missing-transactions missing-transactions}))
|
|
|