added arity for being able to load specific settlement ranges.

This commit is contained in:
2023-01-13 10:13:25 -08:00
parent ce01a63797
commit a1cec5959e

View File

@@ -441,29 +441,31 @@
(defn daily-settlements (defn daily-settlements
([client location] ([client location]
(de/chain (settlements client location) (daily-settlements client location (settlements client location)))
([client location settlements]
(de/chain settlements
(fn [settlements] (fn [settlements]
(log/info ::transforming-settlements) (log/info ::transforming-settlements)
(try (try
(->> (for [settlement settlements (->> (for [settlement settlements
:let [best-sales-date (->> (d/q '[:find ?s4 (count ?s) :let [best-sales-date (->> (d/q '[:find ?s4 (count ?s)
:in $ ?settlement-id :in $ ?settlement-id
:where :where
[?settlement :expected-deposit/external-id ?settlement-id] [?settlement :expected-deposit/external-id ?settlement-id]
[?settlement :expected-deposit/charges ?c] [?settlement :expected-deposit/charges ?c]
[?s :sales-order/charges ?c] [?s :sales-order/charges ?c]
[?s :sales-order/date ?sales-date] [?s :sales-order/date ?sales-date]
[(clj-time.coerce/to-date-time ?sales-date) ?s2] [(clj-time.coerce/to-date-time ?sales-date) ?s2]
[(auto-ap.time/localize ?s2) ?s3] [(auto-ap.time/localize ?s2) ?s3]
[(clj-time.coerce/to-local-date ?s3) ?s4]] [(clj-time.coerce/to-local-date ?s3) ?s4]]
(d/db conn) (d/db conn)
(str "square/settlement/" (:id settlement))) (str "square/settlement/" (:id settlement)))
(sort-by last) (sort-by last)
last last
first first
coerce/to-date-time coerce/to-date-time
atime/as-local-time atime/as-local-time
coerce/to-date)]] 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
@@ -471,18 +473,18 @@
:client (:db/id client) :client (:db/id client)
:location (:square-location/client-location location) :location (:square-location/client-location location)
:fee (- (reduce + 0.0 (map (fn [entry] :fee (- (reduce + 0.0 (map (fn [entry]
(if (= (:type entry) "REFUND") (if (= (:type entry) "REFUND")
(- (amount->money (:fee_money entry))) (- (amount->money (:fee_money entry)))
(amount->money (:fee_money entry)))) (amount->money (:fee_money entry))))
(:entries settlement)))) (:entries settlement))))
:date (-> (:initiated_at settlement) :date (-> (:initiated_at settlement)
(coerce/to-date)) (coerce/to-date))
:sales-date (or best-sales-date :sales-date (or best-sales-date
(-> (:initiated_at settlement) (-> (:initiated_at settlement)
(coerce/to-date))) (coerce/to-date)))
:charges (->> (:entries settlement) :charges (->> (:entries settlement)
(filter :payment_id) (filter :payment_id)
(map (fn [p] {:charge/external-id (str "square/charge/" (:payment_id p))})))}) (map (fn [p] {:charge/external-id (str "square/charge/" (:payment_id p))})))})
(filter :expected-deposit/date) (filter :expected-deposit/date)
(into [])) (into []))
(catch Exception e (catch Exception e