prepares for fixing square issue

This commit is contained in:
2024-04-15 20:10:59 -07:00
parent 4e8e5be497
commit a9fdf9c340
2 changed files with 47 additions and 15 deletions

View File

@@ -17,7 +17,8 @@
[manifold.deferred :as de]
[manifold.executor :as ex]
[manifold.stream :as s]
[manifold.time :as mt]))
[manifold.time :as mt]
[clojure.data.csv :as csv]))
(defn client-base-headers
([client] (client-base-headers client "2021-08-18"))
@@ -370,6 +371,16 @@
(fn [e]
(log/error ::failed-to-transform-order
:exception e)))))))
(defn should-import-order? [order]
;; sometimes orders stay open in square. At least one payment
;; is needed to import, in order to avoid importing orders in-progress.
(and
(or (> (count (:tenders order)) 0)
(seq (:returns order)))
(or (= #{} (set (map #(:status (:card_details %)) (:tenders order))))
(not= #{} (set/difference
(set (map #(:status (:card_details %)) (:tenders order)))
#{"FAILED" "VOIDED"})))))
(defn daily-results
([client location]
@@ -381,16 +392,7 @@
(fn [search-results]
(->> (or search-results [])
(s/->source)
(s/filter (fn [order]
;; sometimes orders stay open in square. At least one payment
;; is needed to import, in order to avoid importing orders in-progress.
(and
(or (> (count (:tenders order)) 0)
(seq (:returns order)))
(or (= #{} (set (map #(:status (:card_details %)) (:tenders order))))
(not= #{} (set/difference
(set (map #(:status (:card_details %)) (:tenders order)))
#{"FAILED" "VOIDED"}))))))
(s/filter should-import-order?)
(s/map #(mu/with-context lc (order->sales-order client location %)))
(s/buffer 10)
(s/realize-each)
@@ -890,7 +892,7 @@
:headers (client-base-headers client)
:as :json})
:body)))
(def refs
(def refs
(->>
@(let [[c [l]] (get-square-client-and-location "NGCL")]
@@ -901,9 +903,39 @@
(let [[c [l]] (get-square-client-and-location "NGCL")]
#_(get-payment c l )
#_(get-payment c l)
(map (fn [r] @(get-payment c (:payment_id r))) refs))
(map (fn [r] @(get-payment c (:payment_id r))) refs))
(def my-results
(let [[c [l]] (get-square-client-and-location "NGFA")]))
(clojure.data.csv/write-csv *out*
(for [c (get-square-clients)
l (:client/square-locations c)
:when (:square-location/client-location l)
bad-row (try (->> @(search c l (coerce/to-date-time #inst "2024-04-01T00:00:00-07:00") (coerce/to-date-time #inst "2024-04-15T23:59:00-07:00"))
(filter #(not (should-import-order? %)))
(map #(first (deref (order->sales-order c l %))))
(filter (fn already-exists [o]
(when (:sales-order/external-id o)
(seq (dc/q '[:find ?i
:in $ ?ei
:where [?i :sales-order/external-id ?ei]]
(dc/db conn)
(:sales-order/external-id o)))))))
(catch Exception e
[]))]
[(:client/code c) (atime/unparse-local (clj-time.coerce/to-date-time (:sales-order/date bad-row)) atime/normal-date) (:sales-order/total bad-row) (:sales-order/tax bad-row) (:sales-order/tip bad-row) (:db/id bad-row)])
:separator \tab)
;; =>
(clojure.pprint/pprint (let [[c [l]] (get-square-client-and-location "NGWC")]
(get-order c l "yzmLBYVGhKXUPwGXm482GJb2VX9YY")))
)

View File