Files
integreat/src/clj/auto_ap/datomic/migrate/sales.clj
2021-12-27 16:10:05 -08:00

222 lines
14 KiB
Clojure

(ns auto-ap.datomic.migrate.sales
(:require [datomic.api :as d]
[auto-ap.datomic :refer [uri]]))
(def norms-map {:add-orders {:txes [[{:db/ident :sales-order/external-id
:db/doc "The client for the sale"
:db/valueType :db.type/string
:db/cardinality :db.cardinality/one
:db/unique :db.unique/identity}
{:db/ident :sales-order/client
:db/doc "The client for the sale"
:db/valueType :db.type/ref
:db/cardinality :db.cardinality/one}
{:db/ident :sales-order/location
:db/doc "The location of the sale"
:db/valueType :db.type/string
:db/cardinality :db.cardinality/one}
{:db/ident :sales-order/date
:db/doc "The date the order was placed"
:db/valueType :db.type/instant
:db/cardinality :db.cardinality/one}
{:db/ident :sales-order/total
:db/doc "The total amount on the sale"
:db/valueType :db.type/double
:db/cardinality :db.cardinality/one}
{:db/ident :sales-order/tax
:db/doc "The tax on the sale"
:db/valueType :db.type/double
:db/cardinality :db.cardinality/one}
{:db/ident :sales-order/tip
:db/doc "The tip on the sale"
:db/valueType :db.type/double
:db/cardinality :db.cardinality/one}
{:db/ident :sales-order/charges
:db/doc "How the sale was paid"
:db/valueType :db.type/ref
:db/cardinality :db.cardinality/many
:db/isComponent true}
{:db/ident :sales-order/line-items
:db/doc "What the person ordered"
:db/valueType :db.type/ref
:db/cardinality :db.cardinality/many
:db/isComponent true}
{:db/ident :charge/type-name
:db/doc "The type of the charge"
:db/valueType :db.type/string
:db/cardinality :db.cardinality/one}
{:db/ident :charge/total
:db/doc "The total amount on the charge"
:db/valueType :db.type/double
:db/cardinality :db.cardinality/one}
{:db/ident :charge/tax
:db/doc "The tax on the charge"
:db/valueType :db.type/double
:db/cardinality :db.cardinality/one}
{:db/ident :charge/tip
:db/doc "The tip on the charge"
:db/valueType :db.type/double
:db/cardinality :db.cardinality/one}
{:db/ident :order-line-item/item-name
:db/doc "The type of the item"
:db/valueType :db.type/string
:db/cardinality :db.cardinality/one}
{:db/ident :order-line-item/total
:db/doc "The total cost on the item"
:db/valueType :db.type/double
:db/cardinality :db.cardinality/one}
{:db/ident :order-line-item/tax
:db/doc "The tax on the item"
:db/valueType :db.type/double
:db/cardinality :db.cardinality/one}
{:db/ident :order-line-item/tip
:db/doc "The tip on the item"
:db/valueType :db.type/double
:db/cardinality :db.cardinality/one}
]]}
:add-expected-deposits {:txes [[{:db/ident :expected-deposit/external-id
:db/doc "The external id for the deposit"
:db/valueType :db.type/string
:db/cardinality :db.cardinality/one
:db/unique :db.unique/identity}
{:db/ident :expected-deposit/client
:db/doc "The client for the deposit"
:db/valueType :db.type/ref
:db/cardinality :db.cardinality/one}
{:db/ident :expected-deposit/location
:db/doc "The location of the sale"
:db/valueType :db.type/string
:db/cardinality :db.cardinality/one}
{:db/ident :expected-deposit/date
:db/doc "The date the deposit was initiated"
:db/valueType :db.type/instant
:db/cardinality :db.cardinality/one}
{:db/ident :expected-deposit/total
:db/doc "The total amount on the deposit"
:db/valueType :db.type/double
:db/cardinality :db.cardinality/one}
{:db/ident :expected-deposit/fee
:db/doc "The total fee on the deposit"
:db/valueType :db.type/double
:db/cardinality :db.cardinality/one}]]}
:add-discounts {:txes [[{:db/ident :sales-order/discount
:db/doc "The total amount on the sale"
:db/valueType :db.type/double
:db/cardinality :db.cardinality/one}
{:db/ident :order-line-item/discount
:db/doc "The total cost on the item"
:db/valueType :db.type/double
:db/cardinality :db.cardinality/one}]]}
:add-category {:txes [[{:db/ident :order-line-item/category
:db/doc "The item category"
:db/valueType :db.type/string
:db/cardinality :db.cardinality/one}]]}
:add-other-types {:txes [[{:db/ident :sales-order/returns
:db/doc "The returned amount on the sale"
:db/valueType :db.type/double
:db/cardinality :db.cardinality/one}
{:db/ident :sales-order/service-charge
:db/doc "The total cost on the item"
:db/valueType :db.type/double
:db/cardinality :db.cardinality/one}]]}
:add-food-apps {:txes [[{:db/ident :ccp-processor/doordash
:db/doc "Doordash identifier"}
{:db/ident :ccp-processor/grubhub
:db/doc "Grubhub identifier"}
{:db/ident :ccp-processor/uber-eats
:db/doc "Uber eats processor"}
{:db/ident :ccp-processor/na
:db/doc "No specific ccp processor"}
{:db/ident :charge/processor
:db/doc "Which food app processed this order"
:db/valueType :db.type/ref
:db/cardinality :db.cardinality/one}]]}
:add-refunds {:txes [[{:db/ident :sales-refund/external-id
:db/doc "The external id for the refund"
:db/valueType :db.type/string
:db/cardinality :db.cardinality/one
:db/unique :db.unique/identity}
{:db/ident :sales-refund/client
:db/doc "The client for the refund"
:db/valueType :db.type/ref
:db/cardinality :db.cardinality/one}
{:db/ident :sales-refund/location
:db/doc "The location of the refund"
:db/valueType :db.type/string
:db/cardinality :db.cardinality/one}
{:db/ident :sales-refund/date
:db/doc "The date the refund was initiated"
:db/valueType :db.type/instant
:db/cardinality :db.cardinality/one}
{:db/ident :sales-refund/total
:db/doc "The total amount on the deposit"
:db/valueType :db.type/double
:db/cardinality :db.cardinality/one}
{:db/ident :sales-refund/fee
:db/doc "The total fee on the refund"
:db/valueType :db.type/double
:db/cardinality :db.cardinality/one}]]}
:add-sales-date {:txes [[{:db/ident :expected-deposit/sales-date
:db/doc "The date of sales the deposit was for"
:db/valueType :db.type/instant
:db/cardinality :db.cardinality/one}]]}
:add-expected-deposit-status {:txes [[{:db/ident :expected-deposit/status
:db/doc "Whether the deposit has been cleared"
:db/valueType :db.type/ref
:db/cardinality :db.cardinality/one}
{:db/ident :expected-deposit-status/pending}
{:db/ident :expected-deposit-status/cleared}
{:db/ident :transaction/expected-deposit
:db/doc "If this transaction is a deposit, the deposit that we anticipated"
:db/valueType :db.type/ref
:db/cardinality :db.cardinality/one}]]}
:add-vendor-for-sales-stuff {:txes [[{:db/ident :expected-deposit/vendor
:db/doc "Which vendor is this deposit for? CCP Square?"
:db/valueType :db.type/ref
:db/cardinality :db.cardinality/one}
{:db/ident :sales-order/vendor
:db/doc "Which vendor is this sales-order for? CCP Square?"
:db/valueType :db.type/ref
:db/cardinality :db.cardinality/one}
{:db/ident :sales-refund/vendor
:db/doc "Which vendor is this refund for? CCP Square?"
:db/valueType :db.type/ref
:db/cardinality :db.cardinality/one}]]}})