From a9fdf9c340f61b48676052e0d2b7dac521c4bf5f Mon Sep 17 00:00:00 2001 From: Bryce Date: Mon, 15 Apr 2024 20:10:59 -0700 Subject: [PATCH] prepares for fixing square issue --- src/clj/auto_ap/square/core3.clj | 62 ++++++++++++++++++------ src/clj/auto_ap/ssr/admin/clients.fiddle | 0 2 files changed, 47 insertions(+), 15 deletions(-) create mode 100644 src/clj/auto_ap/ssr/admin/clients.fiddle diff --git a/src/clj/auto_ap/square/core3.clj b/src/clj/auto_ap/square/core3.clj index 5c8d3ff1..1c5e82ed 100644 --- a/src/clj/auto_ap/square/core3.clj +++ b/src/clj/auto_ap/square/core3.clj @@ -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"))) ) \ No newline at end of file diff --git a/src/clj/auto_ap/ssr/admin/clients.fiddle b/src/clj/auto_ap/ssr/admin/clients.fiddle new file mode 100644 index 00000000..e69de29b