new locations

This commit is contained in:
Bryce Covert
2021-09-29 18:04:07 -07:00
parent 4abbcdd170
commit c22c5ba9fe
4 changed files with 356 additions and 27 deletions

View File

@@ -95,6 +95,10 @@
{:square-location "ACNTYY8WVZ6DV", {:square-location "ACNTYY8WVZ6DV",
:location "NP", :location "NP",
:token "EAAAEO2xSqesDutZz71hz3eulKmrlKTiEqG3uZ4j25x5GYlOluQ2cj2JxNUXqXD7"}, :token "EAAAEO2xSqesDutZz71hz3eulKmrlKTiEqG3uZ4j25x5GYlOluQ2cj2JxNUXqXD7"},
"NGVO"
{:square-location "LTGBD7NDCFD36",
:location "VO",
:token "EAAAEO2xSqesDutZz71hz3eulKmrlKTiEqG3uZ4j25x5GYlOluQ2cj2JxNUXqXD7"}
"NGAK" "NGAK"
{:square-location "2RVBYER6QSV7W", {:square-location "2RVBYER6QSV7W",
:location "MH", :location "MH",
@@ -106,5 +110,4 @@
"20TY" "20TY"
{:square-location "L2579ATQ0X1ET", {:square-location "L2579ATQ0X1ET",
:location "WG", :location "WG",
:token "EAAAEEr749Ea6AdPTdngsmUPwIM3ETbPwcx3QQl_NS0KWuIL-JNzAg4f3W9DGQhb"}} :token "EAAAEEr749Ea6AdPTdngsmUPwIM3ETbPwcx3QQl_NS0KWuIL-JNzAg4f3W9DGQhb"}}}
}

View File

@@ -467,3 +467,217 @@ sx
(d/pull (d/db conn) '[* {:invoice/status [:db/ident]} ] 17592240679462) (d/pull (d/db conn) '[* {:invoice/status [:db/ident]} ] 17592240679462)
(def my-other-set
(set
["Bsj8zSJLhYfBGYl42u9onKkeV"
"vBQ3tOGdjj6KIVapfuMMNkleV"
"CBFtMr7cPqrvq3LFqF1lcbcr0zbZY"
"BGwIDJQcuIPVp2GLu30leFAfV"
"DV1nf3Lx78HCiG4fMGzhuBoeV"
"RAtIC1Kz3MrojHxrUNROkHyeV"
"1W7Caow6Aynr6FIg6OjhZtzeV"
"6vMokGcoHp2lKeN2gG0ZfVWHZAUZY"
"gkVqvQB0idwG9E3e9jCzhzaUxhJZY"
"4MD2BW5Qoodfy2TEhrhDmxJeWfOZY"
"yPeoYCJztU3hOj4IIMfgeZqjnIfZY"
"oUB5nJQnb1RRkYvFy6b5WSHBDQZZY"
"yfwdGRT9ZKzCBSGRdsBTtqXZ9jWZY"
"Rcx70uv8SVR1dz5JkI8YZCleV"
"0oobKSaRtgpoIk6DFUHWnNiE1Y6YY"
"ydhE5PHyxfHRM9Zig7z1clHC0CKZY"
"Sp9Jy6iklgEC8wHld7WwdY1A8sLZY"
"JclkCNxqm0MbngUyvGD4O1keV"
"WbvGqOoGWUsoy2FA44EDv6YrU0UZY"
"doQZOXfWgbKomwPSuHSUsUreV"
"1ASPapG6bV5dbEDjAkCHgi0eV"
"CtNSISjjj2y9D5h4oa1ClJ8QFhWZY"
"ytx2QbZmOh1wA56K9RjGCsCOl65YY"
"E4g7hAZDso6RHQf5rTj7YYAxQkCZY"
"c8UhaSbWAoCkVI9AMHBvroqIKcUZY"
"2DNlbJwLVH1Zhtnuex5KYZJgJWIZY"
"mJUdRyKMU4yanZNnPzI4KbAQ9mcZY"
"ZEfTvPs0Ojhyl1mVtiD4iLmeV"
"JodDdbMbZbhH7cjipbshElmeV"
"RchpFNzbpnmurZNvEMfqqT7eV"
"HXZHsWbN7oM1Ad2XrYG7TgneV"
"5GgnDDXVahiPkxlCiRhwhEseV"
"UOxmIQCicTCzu4iXhipk3ATO4rBZY"
"A6CfxlWcCKYoqYOoZKXsxIb1LtGZY"
"qJff1DJyMkdOO3w8CQtyk8JBVkDZY"
"l2Tuh7tuzwlcXR9RMznlaKneV"
"rbQu4ahKIPYZEswUaxdTYPmeV"
"dYWe7mTaTL21OVHqTHlpkoveV"
"6HQwOES3M3sebg7aHA2kBBKdzOfZY"
"EGPjtFhk3ZfrXGLlrqcU4ATsdHQZY"
"jfwoeIa1tSyEJGaKO66nLtleV"
"2ftQGWeatEKQuq4kYo0s5UOJf8QZY"
"L32oDHTooH04nVee4KxUOs1eV"
"2Fs2ILclotx4urEF6nbnZkBvC0AZY"
"tEW7O0u7WYrpWs8cRJIi7HAfV"
"Rq83DL5RaUo8F3ssZOEdTRzeV"
"YEBDzdA9Q7MnoKB2QZUUBgSwL9SZY"
"AekV8pJUj0IUnyhSLhdoMEV3ZgSZY"
"C9XLY0V2iQolQCw2ZDPR1NKcd2aZY"
"OVeOuUUZM74n3FNhLAMtANo7qRMZY"
"alZzXCYuEQ3CwpIdb3tJWNr6lIZZY"
"AKkw9cLXB3ElcRJC0uMUqIugbHeZY"
"rvAZeRm2ndIXGyR25c1FmI3eV"
"ipvUAHfqno17qMkSbyvPZ9UnIsXZY"
"Bmgwp2G71UAxoIPVbHyASjqeV"
"tY8fzdqgUuIrHKKn553Z9w9eV"
"WZg7Gpqt1BngUoidbj94vM0BjD8YY"
"1qrvlraW5eULeUAwVlwTXOAfV"
"Jw1h9kt66Su4SH2unKC13M0eV"
"sYQmuTeKq2ZmwbyKihLyHaMhbYTZY"
"MKVWBj3V6wzCMXdlQ6GjWciNppBZY"
"RgDn8f4BH8P6zOHURueOnZzeV"
"CHYxKp6RNtLNivoBuw8SAWmVJwYZY"
"R8hrw6UdXFSAAbzlfVrQWwreV"
"vRGWNAUf9zwPeiUIGnBXM57eV"
"wSIuZ01BD8q21ldGRxngbm7IrbXZY"
"lUe2KBtFGNvmtqRJ5lH3wF2eV"
"rrGzZBGYeupr1N66SpiKVR6eV"
"kyZ70CTvLJZYy2JBgQHrrP9TdKCZY"
"hoPT5Q6FGFyMU0u7uYxdbaseV"
"kIENLF39suSOks9SGjTJ1xMOWDfZY"
"bFnrxD7MjkUvJRGYOpE6GNgeV"
"ntQ5KD5MWfdDe1pnVgVQtM0eV"
"Pxgdmp58TJGUeE3GGm7KNHveV"
"vRkdz1GmZt0cscQB9ho4hj9eV"
"Im0EC0G4no6f0RnkASLcXh8mcR9YY"
"zPwM9UOeXqLPvU1oa3mRCz3eV"
"sEaE8dO4HX8ksHs6hdMyPal43D9YY"
"tAimSXtgI8Eh1rH9PX0eSvjeV"
"ZQdXrz4cdYFUu8Jz20kAPf9eV"
"16vV9PDy1Curw4SOid45avmeV"
"YIvRzxJdPH7zRbMr7J1C4oP5MLRZY"
"f9iRwhZoM4NbdWWbj18hBj5eV"
"N4uIjsHvio7zGTdfD57zoTzeV"
"jLwZEk8DwnzRH3D8moMKpvmeV"
"xUhz7xcT837WgUSGHAtvM9neV"
"ztdtsd7I9DtsJXQWTDIGfJ0eV"
"vNyfGGzDAwtV3n7UyyjC4CneV"
"Jo5x7G4a4NGQ1loxqA0rGOueV"
"vjLyqZHtSnEzNa1TsEscc5heV"
"UufTPUwjmczvLUXdqGJKDMsclfTZY"
"Vk0L0SzC4VJSIJpmLisLU76eV"
"k2PX9irWoxgUSRF8xzBzm2iPtODZY"
"kOZ2pyYxDsER8Wk5uaMaW6tO4cCZY"
"X5qdSCAlqnISsnib6uGprH3eV"
"jDANpM0VYDMLnwbgE0RTo90eV"
"idxqrmyKpLBLmxIyvIc61LuaiNTZY"
"dCveEvPFYJXTJNkiP0kVmrneV"
"in0rGzWrEWVefaB6RAqm3Ry8ukdZY"
"hauaBHwn1lsOaLvGzn63mEueV"
"9upOpnryJcdzFfzpvMd4m17eV"
"NeLvGBlVagiitD3f8k1PQA5eV"
"TxL9j1v1ofhsb94PUDMJyKleV"
"9ImWb0TEPB1hYwiFHVst4g2eV"
"BiKMirH38kSQ5o3jPIWOy4weV"
"fzHAx5m8Ch9weMEMGQbARhheV"
"JANt7ex4eBmmjZ9Wi1vpILgeV"
"65DtGODM81tOo2c4S5LgdICHJWdZY"
"rPILFhv1tT4SfkmO6YKXD80eV"
"qVB3cqIoM5TL9K1PCfXm6vVXFScZY"
"DTuiQYzGPVZA0LqacYfnZFveV"
"XjzvSAoyxwUPAHxyCB56jHueV"
"d8gaBzmbHWLMynPCvVOSViteV"
"Yq2KkuRdNHFp4yh4FlS4Zz3m1WJZY"
"HfRjhczw7EibYA8CnDhTpnueV"
"nfhpKujldjFhHW0PRRhpKureV"
"p4tZ6uM7u6vSkQ1mtgrh7I2eV"
"SHWolfXO0MMF5CPsiK2dD50CDl7YY"
"7DYuemUQl4zDeQqwIR3i2greV"
"nHHWqrAXH0z9ICUTuKaHrE0eV"
"nPvqpIfnLN5Ja6sESGWWzM7eV"
"bZ5rHVyqEP6IjnmaVaosRMjeV"
"qJ7Vzqi41jaIgTUOtLXNPHJxOTcZY"
"0QugWhClLiHkr96m8M06hlS4d4BZY"
"KlToOBjxOyddwGIRfXgViyfut8WZY"
"lQmRZdEWg2Ip9gcS5MEgj7eeV"
"TbgDirp4ugkPUN1c8AZpBx0eV"
"TBD9pa9KTXDojJeRI5La0bweV"
"WnRaHxLgvTMijfrgL13XyREYK3eZY"
"Rcx1TRs6WbA2YBuaJ4agq2peV"
"6tV52gMQYdo45NoJQXwpkfOV9RCZY"
"xUHoo5BhX9PoMN2SeDNqbekeV"
"1UcplezXuW0BixA5JSVOcQoeV"
"hueFrQFdXvbarFwttJIHnJpeV"
"L74QHTT903E37Zgu48kI64qeV"
"McgzDxRo3UF2WjhoMzJwrRM4jkcZY"
"79PpJ0kqZE7C3Uu1U2EGWT8eV"
"HRMkJOwawAFNbjfDhUCSgO5eV"
"7RptH2ZN0rZId7sAfWScQc2eV"
"Sd3f3tnn1XRM0Z7McXz31nrqYSYZY"
"rvohcJVk1ddcbAFeGjIRGHoeV"
"ByuKSnr7zwUtAcxk1Cx4XjheV"
"M6z1FGrvsmzaM1c2BWWx3nhlO6QZY"
"FiFu2q2FkoTYDd2O7aBRBYveV"
"WRI5ixKmHAl14NSqaxvPdK8mUvcZY"
"HTLlGG1fAuPMAzEg5r3dBKueV"
"37fb62AyNagTKba75PtZ5uueV"
"h4pkh8Fkh7MgM9tLh9UP0xheV"
"CdL3xoGOosCKM29ufZDimEneGIHZY"
"9qBrllh8izz5pORbeEe508teV"
"CNLPz0wBVVWUoGxED1LUv3m2irWZY"
"jfa5AEfdZALtkJ1NgIBPN5neV"
"nlgNTP8vi86UIwjgYsHkAzgeV"
"2XTX30n8oIo5CIWDUaybBSIRGoFZY"
"Y8j0ulnTpZO4nIvSeR0KidXpSzLZY"
"CpPocrDqcP5Ipke249hlbCC4hmAZY"
"yfuu1W0X152bc3JRSP5kKOsBkdAZY"
"40jAlPDdzEvsj78dpGqXkVtG7THZY"
"LFbbtrPe80pVrg7AnSdj5yjeV"
"R2EMjYIch4pC3v6rUW55n5yeV"
"yLSL6l92hHVrtRBth0qoLSyI1veZY"
"cyrtbxISed5RQccxaxn7ElpeR9OZY"
"lUYHwJY8RwJ9BcsJIY4O6LreV"
"OlWkVmNcuhtRSyuiyFa2Zkya23UZY"
"3dWYpB3cSqO4DKjpQBSS6N9eV"
"c6duaM91lGGNQ5Mv5Y3z6I9QkeQZY"
"GV8sWQyJalTFqwSTMunz9ayBE9OZY"
"vXHz4kDUJ2330VBdtMHa4soeV"
"TpBUg9ZW11f529Hk3HBtaJseV"
"8WprF5WnadpQbl1pYREGuEz3LxFZY"
"PXbj9eoSJk0TxiNlBoAvViveV"
"Wx4JIAaRG261xio8yNEbPhaMbL6YY"
"qdngYY7eeqkEn4OsQWZ2YXvboXFZY"
"d2x2sGHout5s0T7Ovmmfq3teV"
"vL1dKZtH3i76B6I1xq2Q4CweV"
"LTWt7GoNyi9GsUKxocssORAfV"
"088a70M6EISmGmAQWZ70iUKH7pAZY"
"2H7l6i6j49Wtl0KIdApPNfQm1e8YY"
]))
(clojure.set/difference
my-other-set
(->> (d/q '[:find ?ext-id
:with ?s
:in $
:where
[?s :sales-order/client [:client/code "NGVZ"]]
[?s :sales-order/date ?d]
[(clj-time.coerce/to-date-time ?d) ?d2]
[(auto-ap.time/localize ?d2) ?d3]
[(auto-ap.time/unparse-local ?d3 auto-ap.time/normal-date) ?d4]
[(= "09/16/2021" ?d4)]
[?s :sales-order/external-id ?ext-id]]
(d/db conn))
(map first)
(map (fn [d] (last (str/split d #"-"))))
set)
)
(clojure.pprint/pprint (seq (:returns (:order (order "jfwoeIa1tSyEJGaKO66nLtleV")))))
(lc/with-context {:source "Historical loading data"}
(doseq [d (clj-time.periodic/periodic-seq (time/plus (time/now) (time/days -20))
(time/now)
(time/days 1))]
(upsert d))
(log/info "Done loading historical data"))

View File

@@ -53,37 +53,28 @@
(into [(d/db conn)] (clojure.edn/read-string (get query-params "args" "[]"))))))))) (into [(d/db conn)] (clojure.edn/read-string (get query-params "args" "[]")))))))))
(defn put-query [id body note]
(s3/put-object :bucket-name (:data-bucket env)
:key (str "queries/" id)
:input-stream (io/make-input-stream (.getBytes body) {})
:metadata {:content-type "application/text"
:user-metadata {:note note}})
{:body {:query body
:id id
:results-url (str "/api/queries/" id "/results")
:csv-results-url (str "/api/queries/" id "/results/csv")
:json-results-url (str "/api/queries/" id "/results/json")}})
(def json-routes (def json-routes
(context "/queries" [] (context "/queries" []
(POST "/" {:keys [query-params identity] :as request} (POST "/" {:keys [query-params identity] :as request}
(assert-admin identity) (assert-admin identity)
(let [uuid (str (UUID/randomUUID)) (log/info "Note" (query-params "note"))
body (body-string request)] (put-query (str (UUID/randomUUID)) (body-string request) (query-params "note")))
(s3/put-object :bucket-name (:data-bucket env)
:key (str "queries/" uuid)
:input-stream (io/make-input-stream (.getBytes body) {})
:metadata {:content-type "application/text"
:user-metadata {:note (query-params "note")}})
{:body {:query body
:id uuid
:results-url (str "/api/queries/" uuid "/results")
:csv-results-url (str "/api/queries/" uuid "/results/csv")
:json-results-url (str "/api/queries/" uuid "/results/json")}})
)
(PUT "/:query-id" {:keys [query-params identity params] :as request} (PUT "/:query-id" {:keys [query-params identity params] :as request}
(assert-admin identity) (assert-admin identity)
(log/info "Note" (query-params "note")) (log/info "Note" (query-params "note"))
(let [body (body-string request)] (put-query (:query-id params) (body-string request) (query-params "note")))
(s3/put-object :bucket-name (:data-bucket env)
:key (str "queries/" (:query-id params))
:input-stream (io/make-input-stream (.getBytes body) {})
:metadata {:content-type "application/text"
:user-metadata {:note (query-params "note")}})
{:body {:query body
:id (:query-id params)
:csv-results-url (str "/api/queries/" (:query-id params) "/results/csv")
:json-results-url (str "/api/queries/" (:query-id params) "/results/json")}}))
(GET "/:query-id" {:keys [query-params identity params]} (GET "/:query-id" {:keys [query-params identity params]}
(assert-admin identity) (assert-admin identity)
(let [{:keys [query-id]} params (let [{:keys [query-id]} params

View File

@@ -12,8 +12,10 @@
[clj-time.core :as t] [clj-time.core :as t]
[clojure.java.io :as io] [clojure.java.io :as io]
[clojure.string :as str] [clojure.string :as str]
[auto-ap.routes.queries :as q]
[amazonica.aws.s3 :as s3]) [amazonica.aws.s3 :as s3])
(:import [org.apache.commons.io.input BOMInputStream])) (:import [org.apache.commons.io.input BOMInputStream]
java.util.UUID))
(defn mark-until-date [client end] (defn mark-until-date [client end]
(let [conn (d/connect uri)] (let [conn (d/connect uri)]
@@ -472,3 +474,122 @@
(fn [e] (fn [e]
(println "failed " e))) (println "failed " e)))
(async/<!! (async/into [] output-chan))))) (async/<!! (async/into [] output-chan)))))
(def sales-summary-query
"[:find ?d4 (sum ?total) (sum ?tax) (sum ?tip) (sum ?service-charge) (sum ?discount) (sum ?returns)
:with ?s
:in $
:where
[?s :sales-order/client [:client/code \"%s\"]]
[?s :sales-order/date ?d]
[?s :sales-order/total ?total]
[?s :sales-order/tax ?tax]
[?s :sales-order/tip ?tip]
[?s :sales-order/service-charge ?service-charge]
[?s :sales-order/returns ?returns]
[?s :sales-order/discount ?discount]
[(clj-time.coerce/to-date-time ?d) ?d2]
[(auto-ap.time/localize ?d2) ?d3]
[(auto-ap.time/unparse-local ?d3 auto-ap.time/normal-date) ?d4]
]")
(def sales-category-query
"[:find ?d4 ?n ?n2 (sum ?total) (sum ?tax) (sum ?discount)
:with ?s ?li
:in $
:where
[?s :sales-order/client [:client/code \"%s\"]]
[?s :sales-order/date ?d]
[?s :sales-order/line-items ?li]
[?li :order-line-item/category ?n]
[(get-else $ ?li :order-line-item/item-name "") ?n2]
[?li :order-line-item/total ?total]
[?li :order-line-item/tax ?tax]
[?li :order-line-item/discount ?discount]
[(clj-time.coerce/to-date-time ?d) ?d2]
[(auto-ap.time/localize ?d2) ?d3]
[(auto-ap.time/unparse-local ?d3 auto-ap.time/normal-date) ?d4]
]")
(def expected-deposits-query
"[:find ?d4 ?t ?f
:in $
:where
[?c :client/code \"%s\"]
[?s :expected-deposit/client ?c]
[?s :expected-deposit/total ?t]
[?s :expected-deposit/fee ?f]
[?s :expected-deposit/sales-date ?date]
[(clj-time.coerce/to-date-time ?date) ?d2]
[(auto-ap.time/localize ?d2) ?d3]
[(auto-ap.time/unparse-local ?d3 auto-ap.time/normal-date) ?d4]
]")
(def tenders-query
"[:find ?d4 ?type ?p2 (sum ?total) (sum ?tip)
:with ?charge
:in $
:where
[?c :client/code \"%s\"]
[?s :sales-order/client ?c]
[?s :sales-order/charges ?charge]
[?charge :charge/type-name ?type]
[?charge :charge/total ?total]
[?charge :charge/tip ?tip]
[(get-else $ ?charge :charge/processor :na) ?ccp]
[(get-else $ ?ccp :db/ident :na) ?p]
[(name ?p) ?p2]
[?s :sales-order/date ?date]
[(clj-time.coerce/to-date-time ?date) ?d2]
[(auto-ap.time/localize ?d2) ?d3]
[(auto-ap.time/unparse-local ?d3 auto-ap.time/normal-date) ?d4]
]")
(def refunds-query
"[:find ?d4 ?t (sum ?total) (sum ?fee)
:with ?r
:in $
:where
[?r :sales-refund/client [:client/code \"%s\"]]
[?r :sales-refund/total ?total]
[?r :sales-refund/fee ?fee]
[?r :sales-refund/date ?date]
[?r :sales-refund/type ?t]
[(clj-time.coerce/to-date-time ?date) ?d2]
[(auto-ap.time/localize ?d2) ?d3]
[(auto-ap.time/unparse-local ?d3 auto-ap.time/normal-date) ?d4]]")
(defn setup-sales-queries [client-code]
(let [sales-summary-id (or (first (find-queries [client-code "service-charge"]))
(str (UUID/randomUUID)))
sales-category-id (or (first (find-queries [client-code "item-name"]))
(str (UUID/randomUUID)))
expected-deposit-id (or (first (find-queries [client-code "expected-deposit"]))
(str (UUID/randomUUID)))
tender-id (or (first (find-queries [client-code "charge"]))
(str (UUID/randomUUID)))
refund-id (or (first (find-queries [client-code "sales-refund"]))
(str (UUID/randomUUID)))]
(map (comp :json-results-url :body)
[(q/put-query sales-summary-id
(format sales-summary-query client-code)
(str "sales query for " client-code)
)
(q/put-query sales-category-id
(format sales-category-query client-code)
(str "sales category query for " client-code)
)
(q/put-query expected-deposit-id
(format expected-deposits-query client-code)
(str "expected deposit query for " client-code)
)
(q/put-query tender-id
(format tenders-query client-code)
(str "tender query for " client-code))
(q/put-query refund-id
(format refunds-query client-code)
(str "refunds query for " client-code)
)])))