makes expected deposit linking work.

This commit is contained in:
2022-01-13 08:08:20 -08:00
parent f27e5aacdf
commit d6211c778b
9 changed files with 181 additions and 93 deletions

View File

@@ -1,18 +1,22 @@
(ns auto-ap.datomic.expected-deposit
(:require [auto-ap.datomic :refer [add-sorter-fields apply-pagination apply-sort-3 merge-query conn]]
[auto-ap.graphql.utils :refer [limited-clients]]
[auto-ap.utils :refer [dollars=]]
[clj-time.coerce :as c]
[datomic.api :as d]
[clojure.tools.logging :as log]))
[datomic.api :as d]))
(defn <-datomic [result]
(-> result
(update :expected-deposit/date c/from-date)))
(let [transaction (first (:transaction/_expected-deposit result))
transaction (when transaction
(update transaction :transaction/date c/from-date))]
(cond-> result
true (update :expected-deposit/date c/from-date)
transaction (assoc :transaction transaction))))
(def default-read '[*
{:expected-deposit/client [:client/name :db/id :client/code]}])
{:expected-deposit/client [:client/name :db/id :client/code]
:expected-deposit/status [:db/ident]
:transaction/_expected-deposit [:transaction/date :db/id]}])
(defn raw-graphql-ids [db args]
(let [query (cond-> {:query {:find []
@@ -87,7 +91,7 @@
true (apply-sort-3 args)
true (apply-pagination args))))
(defn graphql-results [ids db args]
(defn graphql-results [ids db _]
(let [results (->> (d/pull-many db default-read ids)
(group-by :db/id))
payments (->> ids
@@ -97,7 +101,6 @@
payments))
(defn get-graphql [args]
(log/info "ARGS" args)
(let [db (d/db conn)
{ids-to-retrieve :ids matching-count :count} (raw-graphql-ids db args)]

View File

@@ -1,6 +1,27 @@
(ns auto-ap.datomic.migrate.sales
(:require [datomic.api :as d]
[auto-ap.datomic :refer [uri]]))
(:require [datomic.api :as d]))
(defn backfill-status [conn]
(let [db (d/db conn)
pendings (->>
(d/q '[:find [?ed ...]
:where [?ed :expected-deposit/date]
(not [_ :transaction/expected-deposit ?ed])
(not [?ed :expected-deposit/status])]
db)
(map (fn [ed]
{:db/id ed
:expected-deposit/status :expected-deposit-status/pending})))
cleared (->>
(d/q '[:find [?ed ...]
:where [?ed :expected-deposit/date]
[_ :transaction/expected-deposit ?ed]
(not [?ed :expected-deposit/status])]
db)
(map (fn [ed]
{:db/id ed
:expected-deposit/status :expected-deposit-status/cleared})))]
[(into pendings cleared)]))
(def norms-map {:add-orders {:txes [[{:db/ident :sales-order/external-id
:db/doc "The client for the sale"
@@ -206,6 +227,7 @@
: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
@@ -218,6 +240,12 @@
:db/doc "Which vendor is this refund for? CCP Square?"
:db/valueType :db.type/ref
:db/cardinality :db.cardinality/one}]]}
:backfill-status {:txes-fn `backfill-status
:requires [:add-expected-deposit-status
:add-expected-deposits
:add-sales-date
:add-vendor-for-sales-stuff
:add-orders]}
:add-refund-type {:txes [[{:db/ident :sales-refund/type
:db/doc "The type of refund"
:db/valueType :db.type/string