working on ezcater
ezcater other. dajusments. migration for square2
This commit is contained in:
63
scratch-sessions/dynamo-replica.clj
Normal file
63
scratch-sessions/dynamo-replica.clj
Normal file
@@ -0,0 +1,63 @@
|
||||
;; This buffer is for Clojure experiments and evaluation.
|
||||
|
||||
;; Press C-j to evaluate the last expression.
|
||||
|
||||
;; You can also press C-u C-j to evaluate the expression and pretty-print its result.
|
||||
|
||||
(ns dynamo-replica
|
||||
(:require [amazonica.aws.dynamodbv2 :as ddb]
|
||||
[datomic.api :as d]
|
||||
[auto-ap.datomic :refer [conn]]))
|
||||
|
||||
(ddb/delete-table :table-name "sales-replica")
|
||||
|
||||
(ddb/create-table
|
||||
:table-name "sales-replica"
|
||||
:key-schema [{:attribute-name "id" :key-type "HASH"}
|
||||
{:attribute-name "date" :key-type "RANGE"}]
|
||||
:attribute-definitions
|
||||
[{:attribute-name "id" :attribute-type "S"}
|
||||
{:attribute-name "date" :attribute-type "S"}
|
||||
{:attribute-name "client" :attribute-type "N"}]
|
||||
:global-secondary-indexes
|
||||
[{:index-name "client_date"
|
||||
:key-schema [{:attribute-name "client" :key-type "HASH"}
|
||||
{:attribute-name "date" :key-type "RANGE"}]
|
||||
:projection {:projection-type "ALL"}
|
||||
:provisioned-throughput
|
||||
{:read-capacity-units 500
|
||||
:write-capacity-units 500}}]
|
||||
:provisioned-throughput
|
||||
{:read-capacity-units 500
|
||||
:write-capacity-units 500})
|
||||
|
||||
(user/init-repl)
|
||||
|
||||
(doseq [client ["NGAK"]
|
||||
batch (->> (d/q '[:find [?s ...]
|
||||
:in $ ?c
|
||||
:where
|
||||
[?s :sales-order/client ?c]]
|
||||
(d/db conn)
|
||||
[:client/code client])
|
||||
|
||||
(partition-all 25)
|
||||
(map (fn [batch]
|
||||
(for [o (d/pull-many (d/db conn) '[* {:sales-order/charges [*] :sales-order/line-items [*]}] batch)]
|
||||
{:id (str (:db/id o))
|
||||
:client (:db/id (:sales-order/client o))
|
||||
:date (str (:sales-order/date o))
|
||||
:total (:sales-order/total o)
|
||||
#_#_:line-items (into-array (for [i (:sales-order/line-items o)]
|
||||
(java.util.HashMap. {:total (:order-line-item/total i)})))}))))]
|
||||
(println "Adding 25 ... " (first batch))
|
||||
(ddb/batch-write-item :request-items
|
||||
{"sales-replica"
|
||||
(for [item batch]
|
||||
{:put-request {:item item}})})
|
||||
(Thread/sleep 50)
|
||||
#_(ddb/put-item :table-name "sales-replica"
|
||||
:item item))
|
||||
|
||||
(doc d/pull-many)
|
||||
|
||||
235
scratch-sessions/working-on-ezcater-square-v2.clj
Normal file
235
scratch-sessions/working-on-ezcater-square-v2.clj
Normal file
@@ -0,0 +1,235 @@
|
||||
;; This buffer is for Clojure experiments and evaluation.
|
||||
|
||||
;; Press C-j to evaluate the last expression.
|
||||
|
||||
;; You can also press C-u C-j to evaluate the expression and pretty-print its result.
|
||||
(ns working-on-ezcater-square-v2
|
||||
(:require [auto-ap.square.core :as sc]
|
||||
[clj-time.core :as time]
|
||||
[auto-ap.ezcater.core :as ez])
|
||||
)
|
||||
|
||||
(auto-ap.routes.queries/put-query
|
||||
"ec3bae96-95cd-40aa-b0b1-342ab58efed2"
|
||||
" [:find ?d4 ?type ?p2 (sum ?total) (sum ?tip)
|
||||
:with ?charge
|
||||
:in $
|
||||
:where
|
||||
[?charge :charge/date ?date]
|
||||
[(ground (clj-time.coerce/to-date (clj-time.core/minus (auto-ap.time/local-now) (clj-time.core/days 50)))) ?min-d]
|
||||
[(>= ?date ?min-d)]
|
||||
[?charge :charge/client ?c]
|
||||
[?c :client/code \"NGOP2\"]
|
||||
[?charge :charge/type-name ?type]
|
||||
[?charge :charge/total ?total]
|
||||
[?charge :charge/tip ?tip]
|
||||
(or
|
||||
|
||||
(and [_ :expected-deposit/charges ?charge ]
|
||||
[(ground :settlement) ?ccp]
|
||||
[(ground :settlement) ?p])
|
||||
(and
|
||||
(not [_ :expected-deposit/charges ?charge])
|
||||
[(get-else $ ?charge :charge/processor :na) ?ccp]
|
||||
[(get-else $ ?ccp :db/ident :na) ?p]
|
||||
))
|
||||
[(name ?p) ?p2]
|
||||
[(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]]
|
||||
", "")
|
||||
|
||||
(user/init-repl)
|
||||
|
||||
(in-ns 'auto-ap.square.core)
|
||||
(require '[auto-ap.square.core :as sc])
|
||||
|
||||
(require '[auto-ap.ezcater.core :as ez])
|
||||
|
||||
(def square-client (first (sc/get-square-clients "NGOP2")))
|
||||
|
||||
|
||||
(def square-location (first (for [client (sc/get-square-clients "NGOP2")
|
||||
square-location (:client/square-locations client)
|
||||
:when (:square-location/client-location square-location)]
|
||||
square-location)))
|
||||
|
||||
|
||||
(sc/upsert square-client square-location (time/plus (time/now) (time/days -45)) (time/now))
|
||||
|
||||
(sc/upsert-settlements square-client square-location)
|
||||
|
||||
(sc/get-order square-client square-location "EYIVOtQj8FgdpgNlpUQP9S51uNbZY" )
|
||||
(sc/get-payment square-client "vhnZ67vi7BIO6mZ6R609Vsih7nDZY")
|
||||
k
|
||||
(sc/get-order square-client square-location "ggjaHEikb81AKjrJC7H4RRqjDXZZY")
|
||||
|
||||
(sc/get-payment square-client "zhEgwmQL4cI0P00NGBAzqX5gnX6YY")
|
||||
|
||||
(sc/get-order square-client square-location "CdzNsHRryhGNQ9fh4tdYcEBwA4PZY")
|
||||
|
||||
(sc/get-order square-client square-location "hipr01buRJcFg2NFeFTjuJ4eV")
|
||||
|
||||
|
||||
(user/start-db)
|
||||
|
||||
(def my-search (doall (search (first (get-square-clients "NGOP2"))
|
||||
{:db/id 17592186106155,
|
||||
:square-location/name "Oyster Point",
|
||||
:square-location/square-id "L3GMNBFARX9GG",
|
||||
:square-location/client-location "OP"}
|
||||
#clj-time/date-time "2022-06-30T00:00:00-08:00"
|
||||
#clj-time/date-time "2022-07-01T00:00:00-08:00"
|
||||
|
||||
)))
|
||||
|
||||
(def my-search (doall (search (first (get-square-clients "NGOP2"))
|
||||
{:db/id 17592186106155,
|
||||
:square-location/name "Oyster Point",
|
||||
:square-location/square-id "L3GMNBFARX9GG",
|
||||
:square-location/client-location "OP"}
|
||||
#clj-time/date-time "2022-07-13T00:00:00-08:00"
|
||||
#clj-time/date-time "2022-07-14T00:00:00-08:00"
|
||||
|
||||
)))
|
||||
|
||||
(set/difference
|
||||
|
||||
|
||||
(filter
|
||||
|
||||
(comp (set/difference
|
||||
(set (map :id
|
||||
(let [search-results my-search
|
||||
koala-production-ids (->> search-results
|
||||
(filter #(= "koala-production" (:name (:source %))))
|
||||
(map :id)
|
||||
(into #{}))]
|
||||
(let [search-results my-search]
|
||||
(->> search-results
|
||||
(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"}))))))
|
||||
(filter (fn [order]
|
||||
(not= "Koala" (:name (:source order)))))
|
||||
(filter (fn has-linked-koala-production? [order]
|
||||
;; if a POS order is linked (via note) to a koala-production order, we want
|
||||
;; to keep the koala-production order, because it has taxes correct
|
||||
(not (and (:line_items order) ;; returns do not have line items, so they should be allowed
|
||||
(->> (:line_items order)
|
||||
(map :note)
|
||||
(every? koala-production-ids))))))))))
|
||||
)
|
||||
(set (map :id (->> my-search
|
||||
(filter (fn [order]
|
||||
(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"})))
|
||||
(not= ["CUSTOM_AMOUNT"]
|
||||
(mapv :item_type (:line_items order )))
|
||||
))))
|
||||
)))
|
||||
:id
|
||||
)
|
||||
my-search))
|
||||
|
||||
|
||||
(doseq [p (->>
|
||||
(d/query {:query {:find ['?e]
|
||||
:in ['$]
|
||||
:where ['(or [?e :sales-order/client [:client/code "NGOP2"]]
|
||||
[?e :sales-refund/client [:client/code "NGOP2"]]
|
||||
[?e :expected-deposit/client [:client/code "NGOP2"]])]}
|
||||
:args [(d/db conn)]})
|
||||
(map first)
|
||||
(map (fn [x] [:db/retractEntity x]))
|
||||
(partition-all 100))]
|
||||
@(d/transact conn p))
|
||||
|
||||
|
||||
(def weird-order
|
||||
{:total_service_charge_money {:amount 0, :currency "USD"},
|
||||
:closed_at "2022-07-14T02:50:43Z",
|
||||
:total_discount_money {:amount 0, :currency "USD"},
|
||||
:total_money {:amount 120533, :currency "USD"},
|
||||
:total_tip_money {:amount 0, :currency "USD"},
|
||||
:taxes
|
||||
[{:uid "64a788f3-13c6-45a8-9333-c7e4ed4b45f2",
|
||||
:catalog_object_id "4XTWECYYOZWTGRJ475C3QOQL",
|
||||
:catalog_version 1655153159309,
|
||||
:name "9.875%",
|
||||
:percentage "9.875",
|
||||
:type "ADDITIVE",
|
||||
:applied_money {:amount 10833, :currency "USD"},
|
||||
:scope "LINE_ITEM"}],
|
||||
:net_amounts
|
||||
{:total_money {:amount 120533, :currency "USD"},
|
||||
:tax_money {:amount 10833, :currency "USD"},
|
||||
:discount_money {:amount 0, :currency "USD"},
|
||||
:tip_money {:amount 0, :currency "USD"},
|
||||
:service_charge_money {:amount 0, :currency "USD"}},
|
||||
:total_tax_money {:amount 10833, :currency "USD"},
|
||||
:location_id "L3GMNBFARX9GG",
|
||||
:tenders
|
||||
[{:id "pQgHRVNc3WzBDZVGpORONh5YvaB",
|
||||
:location_id "L3GMNBFARX9GG",
|
||||
:transaction_id "XBo0x9zb7rkpWLAJ79cgihweV",
|
||||
:created_at "2022-07-14T02:50:42Z",
|
||||
:note "ezcater 7\\13",
|
||||
:amount_money {:amount 120533, :currency "USD"},
|
||||
:processing_fee_money {:amount 0, :currency "USD"},
|
||||
:type "OTHER"}],
|
||||
:state "COMPLETED",
|
||||
:ticket_name "Ezcater 7-13",
|
||||
:updated_at "2022-07-14T02:50:43Z",
|
||||
:net_amount_due_money {:amount 0, :currency "USD"},
|
||||
:return_amounts
|
||||
{:total_money {:amount 0, :currency "USD"},
|
||||
:tax_money {:amount 0, :currency "USD"},
|
||||
:discount_money {:amount 0, :currency "USD"},
|
||||
:tip_money {:amount 0, :currency "USD"},
|
||||
:service_charge_money {:amount 0, :currency "USD"}},
|
||||
:line_items
|
||||
[{:total_discount_money {:amount 0, :currency "USD"},
|
||||
:total_money {:amount 120533, :currency "USD"},
|
||||
:total_tax_money {:amount 10833, :currency "USD"},
|
||||
:uid "6a293751-027e-45a0-9f5d-e9f4e7cb62fd",
|
||||
:variation_total_price_money {:amount 109700, :currency "USD"},
|
||||
:item_type "CUSTOM_AMOUNT",
|
||||
:gross_sales_money {:amount 109700, :currency "USD"},
|
||||
:applied_taxes
|
||||
[{:uid "64a788f3-13c6-45a8-9333-c7e4ed4b45f2",
|
||||
:tax_uid "64a788f3-13c6-45a8-9333-c7e4ed4b45f2",
|
||||
:applied_money {:amount 10833, :currency "USD"}}],
|
||||
:base_price_money {:amount 109700, :currency "USD"},
|
||||
:quantity "1"}],
|
||||
:id "XBo0x9zb7rkpWLAJ79cgihweV",
|
||||
:created_at "2022-07-14T02:50:43Z"})
|
||||
|
||||
(order->sales-order "a" "b" weird-order)
|
||||
|
||||
|
||||
(doseq [n ["185431988" "186982950" "186344682" "185281242" "184313395" "185477889" "185043055" "184552573" "185042091" "182674641" "184083782" "184200746" "181197904"]]
|
||||
(clojure.pprint/pprint
|
||||
@(d/transact auto-ap.datomic/conn [(-> {"id" "bf3dcf5c-a68f-42d9-9084-049133e03d3d", "parent_type" "Caterer", "parent_id" "ef505599-947f-42da-a36c-4b569e33a747", "entity_type" "Order", "entity_id" "178289110", "key" "accepted", "occurred_at" "2022-07-21T19:21:07.549Z"}
|
||||
(assoc "entity_id" n)
|
||||
(ez/lookup-order)
|
||||
(ez/order->sales-order)
|
||||
(update :sales-order/date coerce/to-date)
|
||||
(update-in [:sales-order/charges 0 :charge/date] coerce/to-date))])))
|
||||
|
||||
;;
|
||||
(clojure.pprint/pprint [(-> {"id" "bf3dcf5c-a68f-42d9-9084-049133e03d3d", "parent_type" "Caterer", "parent_id" "91541331-d7ae-4634-9e8b-ccbbcfb2ce70", "entity_type" "Order", "entity_id" "178289110", "key" "accepted", "occurred_at" "2022-07-21T19:21:07.549Z"}
|
||||
(lookup-order)
|
||||
#_(order->sales-order)
|
||||
#_(update :sales-order/date coerce/to-date)
|
||||
#_(update-in [:sales-order/charges 0 :charge/date] coerce/to-date))])
|
||||
Reference in New Issue
Block a user