intuit import button and sysco importing.

This commit is contained in:
2021-12-18 19:11:02 -08:00
parent fcdc00ed16
commit 64720a4bd6
19 changed files with 297 additions and 24 deletions

View File

@@ -0,0 +1,42 @@
(ns auto-ap.background.requests
(:require
[amazonica.aws.sqs :as sqs]
[config.core :refer [env]]
[mount.core :as mount]
[clojure.tools.logging :as log]
[auto-ap.intuit.import :as i]
[unilog.context :as lc]))
(def stopped? (atom false))
(defn process-1 []
(let [[{:keys [message-id receipt-handle body]}] (:messages (sqs/receive-message {:queue-url (:requests-queue-url env)
:count 1}))]
(when message-id
(log/infof "processing message %s with body %s" message-id body )
(if (= ":intuit" body)
(try
(i/upsert-transactions)
(catch Exception e
(log/error e))))
(sqs/delete-message {:queue-url (:requests-queue-url env)
:receipt-handle receipt-handle} ))))
(defn fake-message []
(sqs/send-message {:queue-url (:requests-queue-url env)
:message-body ":intuit"} ))
(defn listen-sqs []
(lc/with-context {:source "Request poller"}
(loop []
(process-1)
(log/info "Checking SQS....")
(Thread/sleep 5000)
(when-not @stopped?
(log/info "stopping")
(recur)))))
(mount/defstate request-listener
:start (future (listen-sqs))
:stop (reset! stopped? true))

View File

@@ -16,7 +16,9 @@
[config.core :refer [env]]
[datomic.api :as d]
[unilog.context :as lc]
[clj-time.core :as time]))
[clj-time.core :as time]
[mount.core :as mount]
[yang.scheduler :as scheduler]))
(def bucket-name (:data-bucket env))
@@ -130,10 +132,10 @@
))
keys))]
(log/infof "Imported %d invoices" (/ (count (:tempids result)) 2)))
#_(doseq [k keys]
(doseq [k keys]
(mark-key k)))))
(mount/defstate sysco-invoice-importer
:start (scheduler/every (* 1000 60 60) import)
:start (scheduler/every (* 1000 60 60) import-sysco)
:stop (scheduler/stop sysco-invoice-importer))

View File

@@ -12,6 +12,7 @@
[auto-ap.graphql.intuit-bank-accounts :as gq-intuit-bank-accounts]
[auto-ap.graphql.invoices :as gq-invoices]
[auto-ap.graphql.ledger :as gq-ledger]
[auto-ap.graphql.requests :as gq-requests]
[auto-ap.graphql.sales-orders :as gq-sales-orders]
[auto-ap.graphql.transaction-rules :as gq-transaction-rules]
[auto-ap.graphql.transactions :as gq-transactions]
@@ -999,7 +1000,11 @@
{:enum-value :requires_feedback}
{:enum-value :excluded}]}}
:mutations
{:reject_invoices {:type '(list :id)
{:request_intuit_import {:type 'String
:args {}
:resolve :mutation/request-intuit-import}
:reject_invoices {:type '(list :id)
:args {:invoices {:type '(list :id)}}
:resolve :mutation/reject-invoices}
@@ -1408,6 +1413,7 @@
:mutation/void-payment gq-checks/void-check
:mutation/edit-expense-accounts gq-invoices/edit-expense-accounts
:mutation/import-ledger gq-ledger/import-ledger
:mutation/request-intuit-import gq-requests/request-intuit-import
:get-vendor gq-vendors/get-graphql})
schema/compile))

View File

@@ -0,0 +1,11 @@
(ns auto-ap.graphql.requests
(:require
[amazonica.aws.sqs :as sqs]
[auto-ap.graphql.utils :refer [assert-admin]]
[config.core :refer [env]]))
(defn request-intuit-import [context value args]
(assert-admin (:id context))
(:message-id (sqs/send-message {:queue-url (:requests-queue-url env)
:message-body ":intuit"} )))

View File

@@ -55,6 +55,11 @@
:input-stream (io/make-input-stream (.getBytes t) {})
:metadata {:content-type "application/text"}))
(defn copy-prod-refresh-token []
(set-refresh-token (slurp (:object-content (s3/get-object
:bucket-name "data.prod.app.integreatconsult.com"
:key "intuit/refresh-token")))))
(defn init-tokens [access refresh]
(set-access-token access)
(set-refresh-token refresh))

View File

@@ -25,6 +25,18 @@
[?iab :intuit-bank-account/external-id ?external-id]]
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")
@@ -56,7 +68,7 @@
:import-batch/suppressed (count (:suppressed result))}))))))
(y/finish-import (assoc @stats :db/id import-id))))
(def upsert-transactions (allow-once upsert-transactions))
(defn dry-run-upsert-transactions []

View File

@@ -5,6 +5,8 @@
[auto-ap.yodlee.core2 :as yodlee2]
[auto-ap.graphql.clients :as gq-clients]
[auto-ap.background.invoices]
[auto-ap.background.requests :as requests]
[auto-ap.background.sysco :as sysco]
[auto-ap.background.vendor :as vendor]
[auto-ap.square.core :as square]
[auto-ap.datomic.migrate :as migrate]
@@ -40,6 +42,8 @@
#'ledger/touch-broken-ledger-worker
#'ledger/process-txes-worker
#'ledger/ledger-reconciliation-worker
#'requests/request-listener
#'sysco/sysco-invoice-importer
#'auto-ap.background.invoices/close-auto-invoices-worker
#'gq-clients/current-balance-worker
#'yodlee/import-transaction-worker