Minor tweaks for performance
This commit is contained in:
@@ -18,11 +18,16 @@
|
|||||||
(def bucket (:data-bucket env))
|
(def bucket (:data-bucket env))
|
||||||
|
|
||||||
(defn s3->csv [url]
|
(defn s3->csv [url]
|
||||||
(->> (-> (s3/get-object {:bucket-name bucket
|
(try
|
||||||
:key (str "bulk-import/" url)})
|
(->> (-> (s3/get-object {:bucket-name bucket
|
||||||
:input-stream
|
:key (str "bulk-import/" url)})
|
||||||
io/reader
|
:input-stream
|
||||||
csv/read-csv)))
|
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]
|
(defn register-invoice-import* [data]
|
||||||
(let [db (d/db conn)
|
(let [db (d/db conn)
|
||||||
|
|||||||
@@ -281,38 +281,6 @@
|
|||||||
(throw x)
|
(throw x)
|
||||||
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]
|
(defn get-settlement-details [client location settlements] ;; pairs of [location settlement]
|
||||||
(log/info "getting settlement details for " settlements)
|
(log/info "getting settlement details for " settlements)
|
||||||
(let [concurrent 4
|
(let [concurrent 4
|
||||||
@@ -322,14 +290,10 @@
|
|||||||
(map (fn [s]
|
(map (fn [s]
|
||||||
(lc/with-context {:source "Square settlements loading "}
|
(lc/with-context {:source "Square settlements loading "}
|
||||||
(log/info "Looking up settlement " s " for location " (:square-location/client-location location))
|
(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)
|
(:body (retry #(client/get (str "https://connect.squareup.com/v1/" (:square-location/square-id location) "/settlements/" s)
|
||||||
{:headers (client-base-headers client)
|
{:headers (client-base-headers client)
|
||||||
:as :json
|
:as :json
|
||||||
:retry-handler retry-4})))
|
: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)))))
|
|
||||||
(async/to-chan! settlements)
|
(async/to-chan! settlements)
|
||||||
true
|
true
|
||||||
(fn [e]
|
(fn [e]
|
||||||
@@ -352,8 +316,7 @@
|
|||||||
"end_time" end-date}
|
"end_time" end-date}
|
||||||
:as :json
|
:as :json
|
||||||
:retry-handler retry-4}))
|
:retry-handler retry-4}))
|
||||||
:body
|
:body)]
|
||||||
(map :id))]
|
|
||||||
settlements)))
|
settlements)))
|
||||||
set
|
set
|
||||||
seq
|
seq
|
||||||
@@ -361,7 +324,23 @@
|
|||||||
|
|
||||||
(defn daily-settlements
|
(defn daily-settlements
|
||||||
([client location]
|
([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))
|
#:expected-deposit {:external-id (str "square/settlement/" (:id settlement))
|
||||||
:vendor :vendor/ccp-square
|
:vendor :vendor/ccp-square
|
||||||
:status :expected-deposit-status/pending
|
:status :expected-deposit-status/pending
|
||||||
@@ -375,7 +354,7 @@
|
|||||||
(:entries settlement))))
|
(:entries settlement))))
|
||||||
:date (-> (:initiated_at settlement)
|
:date (-> (:initiated_at settlement)
|
||||||
(coerce/to-date))
|
(coerce/to-date))
|
||||||
:sales-date (or (:sales-date settlement)
|
:sales-date (or best-sales-date
|
||||||
(-> (:initiated_at settlement)
|
(-> (:initiated_at settlement)
|
||||||
(coerce/to-date)))
|
(coerce/to-date)))
|
||||||
:charges (->> (:entries settlement)
|
:charges (->> (:entries settlement)
|
||||||
|
|||||||
Reference in New Issue
Block a user