Adds the ability for intuit snapshot balance

This commit is contained in:
2024-04-26 20:12:10 -07:00
parent b537e99ecf
commit f125090485
4 changed files with 48 additions and 26 deletions

View File

@@ -654,6 +654,14 @@
:db/cardinality #:db{:ident :db.cardinality/one}, :db/cardinality #:db{:ident :db.cardinality/one},
:db/doc "Name of intuit bank", :db/doc "Name of intuit bank",
:db/ident :intuit-bank-account/name} :db/ident :intuit-bank-account/name}
{ :db/valueType :db.type/double,
:db/cardinality :db.cardinality/one
:db/doc "Quickbook's view of the balance of the account",
:db/ident :intuit-bank-account/current-balance}
{ :db/valueType :db.type/instant
:db/cardinality :db.cardinality/one
:db/doc "Last time Quickbooks updated",
:db/ident :intuit-bank-account/last-synced}
{:db/unique #:db{:ident :db.unique/identity}, {:db/unique #:db{:ident :db.unique/identity},
:db/valueType #:db{:ident :db.type/long}, :db/valueType #:db{:ident :db.type/long},

View File

@@ -1,16 +1,16 @@
(ns auto-ap.import.intuit (ns auto-ap.import.intuit
(:require (:require [auto-ap.datomic :refer [conn]]
[auto-ap.datomic :refer [conn pull-attr]] [auto-ap.import.common :refer [wrap-integration]]
[auto-ap.import.common :refer [wrap-integration]] [auto-ap.import.transactions :as t]
[auto-ap.import.transactions :as t] [auto-ap.intuit.core :as i]
[auto-ap.intuit.core :as i] [auto-ap.logging :as alog]
[auto-ap.logging :as alog] [auto-ap.time :as atime]
[auto-ap.time :as atime] [clj-time.coerce :as coerce]
[clj-time.coerce :as coerce] [clj-time.core :as time]
[clj-time.core :as time] [clojure.string :as str]
[clojure.string :as str] [com.unbounce.dogstatsd.core :as statsd]
[com.unbounce.dogstatsd.core :as statsd] [datomic.api :as dc]
[datomic.api :as dc])) [iol-ion.utils :refer [remove-nils]]))
(defn get-intuit-bank-accounts (defn get-intuit-bank-accounts
( [db] ( [db]
@@ -90,6 +90,10 @@
bank-accounts (i/get-bank-accounts token)] bank-accounts (i/get-bank-accounts token)]
@(dc/transact conn (mapv @(dc/transact conn (mapv
(fn [ba] (fn [ba]
{:intuit-bank-account/external-id (:name ba) (remove-nils
:intuit-bank-account/name (:name ba)}) {:intuit-bank-account/external-id (:name ba)
:intuit-bank-account/name (:name ba)
:intuit-bank-account/last-synced (coerce/to-date (:last-updated ba))
:intuit-bank-account/current-balance (:current-balance ba)}))
bank-accounts)))) bank-accounts))))

View File

@@ -1,13 +1,12 @@
(ns auto-ap.intuit.core (ns auto-ap.intuit.core
(:require (:require [amazonica.aws.s3 :as s3]
[amazonica.aws.s3 :as s3] [clj-http.client :as client]
[clj-http.client :as client] [clj-time.coerce :as c]
[clojure.core.memoize :as m] [clojure.core.memoize :as m]
[clojure.java.io :as io] [clojure.java.io :as io]
[clojure.string :as str] [clojure.string :as str]
[config.core :as cfg :refer [env]]) [config.core :as cfg :refer [env]])
(:import (:import (org.apache.commons.codec.binary Base64)))
(org.apache.commons.codec.binary Base64)))
;; (def authorization-code "AB11638463964I0tYPR3A1inog2HL407u2bZBXHg6LEqCbILRO") ;; (def authorization-code "AB11638463964I0tYPR3A1inog2HL407u2bZBXHg6LEqCbILRO")
;; (def realm-id "4620816365202617680") ;; (def realm-id "4620816365202617680")
@@ -98,6 +97,13 @@
{:headers base-headers {:headers base-headers
:as :json}) :as :json})
(defn get-bank-accounts-raw [token]
(->> (:body (client/get (str prod-base-url "/company/" prod-company-id "/query" )
{:headers
(with-auth prod-base-headers token)
:as :json
:query-params {"query" "SELECT * From Account maxresults 1000"}}))
:QueryResponse))
(defn get-bank-accounts [token] (defn get-bank-accounts [token]
@@ -110,10 +116,13 @@
:Account :Account
#_(filter #_(filter
#(#{"Bank" "Credit Card"} (:AccountType %))) #(#{"Bank" "Credit Card"} (:AccountType %)))
(map (juxt :Id :Name)) (map (juxt :Id :Name :CurrentBalance :MetaData))
(map (fn [[id name]] (map (fn [[id name current-balance metadata]]
{:id id {:id id
:name name})))) :name name
:last-updated (c/to-date-time (-> metadata :LastUpdatedTime))
:current-balance current-balance}))))
(defn get-all-transactions [start end] (defn get-all-transactions [start end]
(let [token (get-fresh-access-token)] (let [token (get-fresh-access-token)]

View File

@@ -132,6 +132,7 @@
request request
(com/page {:nav com/company-aside-nav (com/page {:nav com/company-aside-nav
:client-selection (:client-selection request) :client-selection (:client-selection request)
:request request
:client (:client request) :client (:client request)
:clients (:clients request) :clients (:clients request)
:identity (:identity request) :identity (:identity request)