236 lines
11 KiB
Clojure
236 lines
11 KiB
Clojure
;; 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))])
|