Minor tweaks for performance
This commit is contained in:
@@ -18,11 +18,16 @@
|
||||
(def bucket (:data-bucket env))
|
||||
|
||||
(defn s3->csv [url]
|
||||
(->> (-> (s3/get-object {:bucket-name bucket
|
||||
:key (str "bulk-import/" url)})
|
||||
:input-stream
|
||||
io/reader
|
||||
csv/read-csv)))
|
||||
(try
|
||||
(->> (-> (s3/get-object {:bucket-name bucket
|
||||
:key (str "bulk-import/" url)})
|
||||
:input-stream
|
||||
io/reader
|
||||
csv/read-csv))
|
||||
(catch Exception e
|
||||
(log/error (str "Could not read the file " url ". Are you sure you uploaded it?"))
|
||||
(log/error e)
|
||||
(throw e))))
|
||||
|
||||
(defn register-invoice-import* [data]
|
||||
(let [db (d/db conn)
|
||||
|
||||
@@ -281,38 +281,6 @@
|
||||
(throw x)
|
||||
x))
|
||||
|
||||
(defn get-settlement-sales-date [client settlement]
|
||||
(let [concurrent 4
|
||||
output-chan (async/chan)]
|
||||
(async/pipeline-blocking concurrent
|
||||
output-chan
|
||||
(map (fn [p]
|
||||
(lc/with-context {:source "Square settlements loading "}
|
||||
(log/trace "looking up payment " p " for settlement " (:id settlement))
|
||||
(or
|
||||
(-> (get-payment client p)
|
||||
:created_at
|
||||
coerce/to-date)
|
||||
(coerce/to-date (time/now))))))
|
||||
(async/to-chan! (->> settlement
|
||||
:entries
|
||||
(filter #(= "CHARGE" (:type %)))
|
||||
(map :payment_id)
|
||||
(filter identity)
|
||||
(set)
|
||||
(take 20)
|
||||
))
|
||||
true
|
||||
(fn [e]
|
||||
(lc/with-context {:source "Square settlements loading "}
|
||||
(log/warn "Error loading sales date details" e)
|
||||
e)))
|
||||
(->> (async/<!! (async/into [] output-chan))
|
||||
(map halt-if-error)
|
||||
sort
|
||||
(drop 2)
|
||||
first)))
|
||||
|
||||
(defn get-settlement-details [client location settlements] ;; pairs of [location settlement]
|
||||
(log/info "getting settlement details for " settlements)
|
||||
(let [concurrent 4
|
||||
@@ -322,14 +290,10 @@
|
||||
(map (fn [s]
|
||||
(lc/with-context {:source "Square settlements loading "}
|
||||
(log/info "Looking up settlement " s " for location " (:square-location/client-location location))
|
||||
(let [settlement (:body (retry #(client/get (str "https://connect.squareup.com/v1/" (:square-location/square-id location) "/settlements/" s)
|
||||
{:headers (client-base-headers client)
|
||||
:as :json
|
||||
:retry-handler retry-4})))
|
||||
sales-date (get-settlement-sales-date client settlement)]
|
||||
|
||||
(log/info "sales date for " s " is " sales-date)
|
||||
(assoc settlement :sales-date sales-date)))))
|
||||
(:body (retry #(client/get (str "https://connect.squareup.com/v1/" (:square-location/square-id location) "/settlements/" s)
|
||||
{:headers (client-base-headers client)
|
||||
:as :json
|
||||
:retry-handler retry-4}))))))
|
||||
(async/to-chan! settlements)
|
||||
true
|
||||
(fn [e]
|
||||
@@ -352,8 +316,7 @@
|
||||
"end_time" end-date}
|
||||
:as :json
|
||||
:retry-handler retry-4}))
|
||||
:body
|
||||
(map :id))]
|
||||
:body)]
|
||||
settlements)))
|
||||
set
|
||||
seq
|
||||
@@ -361,7 +324,23 @@
|
||||
|
||||
(defn daily-settlements
|
||||
([client location]
|
||||
(->> (for [settlement (settlements client location)]
|
||||
(->> (for [settlement (settlements client location)
|
||||
:let [best-sales-date (->> (d/q '[:find ?s4 (count ?s)
|
||||
:in $ ?settlement-id
|
||||
:where
|
||||
[?settlement :expected-deposit/external-id ?settlement-id]
|
||||
[?settlement :expected-deposit/charges ?c]
|
||||
[?s :sales-order/charges ?c]
|
||||
[?s :sales-order/date ?sales-date]
|
||||
[(clj-time.coerce/to-date-time ?sales-date) ?s2]
|
||||
[(auto-ap.time/localize ?s2) ?s3]
|
||||
[(clj-time.coerce/to-local-date ?s3) ?s4]]
|
||||
(d/db conn)
|
||||
(str "square/settlement/" (:id settlement)))
|
||||
(sort-by last)
|
||||
last
|
||||
first
|
||||
coerce/to-date)]]
|
||||
#:expected-deposit {:external-id (str "square/settlement/" (:id settlement))
|
||||
:vendor :vendor/ccp-square
|
||||
:status :expected-deposit-status/pending
|
||||
@@ -375,7 +354,7 @@
|
||||
(:entries settlement))))
|
||||
:date (-> (:initiated_at settlement)
|
||||
(coerce/to-date))
|
||||
:sales-date (or (:sales-date settlement)
|
||||
:sales-date (or best-sales-date
|
||||
(-> (:initiated_at settlement)
|
||||
(coerce/to-date)))
|
||||
:charges (->> (:entries settlement)
|
||||
|
||||
Reference in New Issue
Block a user