minor tweak.

This commit is contained in:
2022-02-07 19:17:47 -08:00
parent 24cc03ccd2
commit 72b31fe6bd

View File

@@ -19,135 +19,132 @@
(defn <-datomic [x] (defn <-datomic [x]
(-> x (-> x
(update :invoice/date c/from-date) (update :invoice/date coerce/from-date)
(update :invoice/due c/from-date) (update :invoice/due coerce/from-date)
(update :invoice/scheduled-payment c/from-date) (update :invoice/scheduled-payment coerce/from-date)
(update :invoice/status :db/ident) (update :invoice/status :db/ident)
(rename-keys {:invoice-payment/_invoice :invoice/payments}))) (rename-keys {:invoice-payment/_invoice :invoice/payments})))
(defn raw-graphql-ids [db args] (defn raw-graphql-ids [db args]
(->> (doto (cond-> {:query {:find [] (->> (cond-> {:query {:find []
:in ['$] :in ['$]
:where ['[?e :invoice/client]]} :where ['[?e :invoice/client]]}
:args [(d/db (d/connect uri))]} :args [(d/db (d/connect uri))]}
(:exact-match-id args) (:exact-match-id args)
(merge-query {:query {:in ['?e] (merge-query {:query {:in ['?e]
:where []} :where []}
:args [(:exact-match-id args)]}) :args [(:exact-match-id args)]})
(limited-clients (:id args)) (limited-clients (:id args))
(merge-query {:query {:in ['[?xx ...]] (merge-query {:query {:in ['[?xx ...]]
:where ['[?e :invoice/client ?xx]]} :where ['[?e :invoice/client ?xx]]}
:args [ (set (map :db/id (limited-clients (:id args))))]}) :args [ (set (map :db/id (limited-clients (:id args))))]})
(:client-id args) (:client-id args)
(merge-query {:query {:in ['?client-id] (merge-query {:query {:in ['?client-id]
:where ['[?e :invoice/client ?client-id]]} :where ['[?e :invoice/client ?client-id]]}
:args [ (:client-id args)]}) :args [ (:client-id args)]})
(:client-code args) (:client-code args)
(merge-query {:query {:in ['?client-code] (merge-query {:query {:in ['?client-code]
:where ['[?e :invoice/client ?client-id] :where ['[?e :invoice/client ?client-id]
'[?client-id :client/code ?client-code]]} '[?client-id :client/code ?client-code]]}
:args [ (:client-code args)]}) :args [ (:client-code args)]})
(:original-id args) (:original-id args)
(merge-query {:query {:in ['?original-id] (merge-query {:query {:in ['?original-id]
:where [ :where [
'[?e :invoice/client ?c] '[?e :invoice/client ?c]
'[?c :client/original-id ?original-id]]} '[?c :client/original-id ?original-id]]}
:args [ (cond-> (:original-id args) :args [ (cond-> (:original-id args)
(string? (:original-id args)) Long/parseLong )]}) (string? (:original-id args)) Long/parseLong )]})
(:start (:date-range args)) (merge-query {:query {:in '[?start-date] (:start (:date-range args)) (merge-query {:query {:in '[?start-date]
:where ['[?e :invoice/date ?date] :where ['[?e :invoice/date ?date]
'[(>= ?date ?start-date)]]} '[(>= ?date ?start-date)]]}
:args [(c/to-date (:start (:date-range args)))]}) :args [(coerce/to-date (:start (:date-range args)))]})
(:end (:date-range args)) (merge-query {:query {:in '[?end-date] (:end (:date-range args)) (merge-query {:query {:in '[?end-date]
:where ['[?e :invoice/date ?date] :where ['[?e :invoice/date ?date]
'[(<= ?date ?end-date)]]} '[(<= ?date ?end-date)]]}
:args [(c/to-date (:end (:date-range args)))]}) :args [(coerce/to-date (:end (:date-range args)))]})
(:start (:due-range args)) (merge-query {:query {:in '[?start-due] (:start (:due-range args)) (merge-query {:query {:in '[?start-due]
:where ['[?e :invoice/due ?due] :where ['[?e :invoice/due ?due]
'[(>= ?due ?start-due)]]} '[(>= ?due ?start-due)]]}
:args [(c/to-date (:start (:due-range args)))]}) :args [(coerce/to-date (:start (:due-range args)))]})
(:end (:due-range args)) (merge-query {:query {:in '[?end-due] (:end (:due-range args)) (merge-query {:query {:in '[?end-due]
:where ['[?e :invoice/due ?due] :where ['[?e :invoice/due ?due]
'[(<= ?due ?end-due)]]} '[(<= ?due ?end-due)]]}
:args [(c/to-date (:end (:due-range args)))]}) :args [(coerce/to-date (:end (:due-range args)))]})
(:import-status args) (:import-status args)
(merge-query {:query {:in ['?import-status] (merge-query {:query {:in ['?import-status]
:where ['[?e :invoice/import-status ?import-status]]} :where ['[?e :invoice/import-status ?import-status]]}
:args [ (keyword "import-status" (:import-status args))]}) :args [ (keyword "import-status" (:import-status args))]})
(:status args) (:status args)
(merge-query {:query {:in ['?status] (merge-query {:query {:in ['?status]
:where ['[?e :invoice/status ?status]]} :where ['[?e :invoice/status ?status]]}
:args [ (:status args)]}) :args [ (:status args)]})
(:vendor-id args) (:vendor-id args)
(merge-query {:query {:in ['?vendor-id] (merge-query {:query {:in ['?vendor-id]
:where ['[?e :invoice/vendor ?vendor-id]]} :where ['[?e :invoice/vendor ?vendor-id]]}
:args [ (:vendor-id args)]}) :args [ (:vendor-id args)]})
(:amount-gte args) (:amount-gte args)
(merge-query {:query {:in ['?amount-gte] (merge-query {:query {:in ['?amount-gte]
:where ['[?e :invoice/total ?total-filter] :where ['[?e :invoice/total ?total-filter]
'[(>= ?total-filter ?amount-gte)]]} '[(>= ?total-filter ?amount-gte)]]}
:args [(:amount-gte args)]}) :args [(:amount-gte args)]})
(:amount-lte args) (:amount-lte args)
(merge-query {:query {:in ['?amount-lte] (merge-query {:query {:in ['?amount-lte]
:where ['[?e :invoice/total ?total-filter] :where ['[?e :invoice/total ?total-filter]
'[(<= ?total-filter ?amount-lte)]]} '[(<= ?total-filter ?amount-lte)]]}
:args [(:amount-lte args)]}) :args [(:amount-lte args)]})
(seq (:invoice-number-like args)) (seq (:invoice-number-like args))
(merge-query {:query {:in ['?invoice-number-like] (merge-query {:query {:in ['?invoice-number-like]
:where ['[?e :invoice/invoice-number ?invoice-number] :where ['[?e :invoice/invoice-number ?invoice-number]
'[(.contains ^String ?invoice-number ?invoice-number-like)]]} '[(.contains ^String ?invoice-number ?invoice-number-like)]]}
:args [(:invoice-number-like args)]}) :args [(:invoice-number-like args)]})
(:scheduled-payments args) (:scheduled-payments args)
(merge-query {:query {:in [] (merge-query {:query {:in []
:where ['[?e :invoice/scheduled-payment]]} :where ['[?e :invoice/scheduled-payment]]}
:args []}) :args []})
(:unresolved args) (:unresolved args)
(merge-query {:query {:in [] (merge-query {:query {:in []
:where ['(or-join [?e] :where ['(or-join [?e]
(not [?e :invoice/expense-accounts ]) (not [?e :invoice/expense-accounts ])
(and [?e :invoice/expense-accounts ?ea] (and [?e :invoice/expense-accounts ?ea]
(not [?ea :invoice-expense-account/account])))]} (not [?ea :invoice-expense-account/account])))]}
:args []}) :args []})
(seq (:location args))
(merge-query {:query {:in ['?location]
:where ['[?e :invoice/expense-accounts ?eas]
'[?eas :invoice-expense-account/location ?location]]}
:args [(:location args)]})
(:sort args) (add-sorter-fields {"client" ['[?e :invoice/client ?c]
'[?c :client/name ?sort-client]]
"vendor" ['[?e :invoice/vendor ?v]
'[?v :vendor/name ?sort-vendor]]
"description-original" ['[?e :transaction/description-original ?sort-description-original]]
"location" ['[?e :invoice/expense-accounts ?iea]
'[?iea :invoice-expense-account/location ?sort-location]]
"date" ['[?e :invoice/date ?sort-date]]
"due" ['[(get-else $ ?e :invoice/due #inst "2050-01-01") ?sort-due]]
"invoice-number" ['[?e :invoice/invoice-number ?sort-invoice-number]]
"total" ['[?e :invoice/total ?sort-total]]
"outstanding-balance" ['[?e :invoice/outstanding-balance ?sort-outstanding-balance]]}
args)
true
(merge-query {:query {:find ['?sort-default '?e ]
:where ['[?e :invoice/client]
'[?e :invoice/date ?sort-default]]}}) )
(#(log/info %)))
(seq (:location args))
(merge-query {:query {:in ['?location]
:where ['[?e :invoice/expense-accounts ?eas]
'[?eas :invoice-expense-account/location ?location]]}
:args [(:location args)]})
(:sort args) (add-sorter-fields {"client" ['[?e :invoice/client ?c]
'[?c :client/name ?sort-client]]
"vendor" ['[?e :invoice/vendor ?v]
'[?v :vendor/name ?sort-vendor]]
"description-original" ['[?e :transaction/description-original ?sort-description-original]]
"location" ['[?e :invoice/expense-accounts ?iea]
'[?iea :invoice-expense-account/location ?sort-location]]
"date" ['[?e :invoice/date ?sort-date]]
"due" ['[(get-else $ ?e :invoice/due #inst "2050-01-01") ?sort-due]]
"invoice-number" ['[?e :invoice/invoice-number ?sort-invoice-number]]
"total" ['[?e :invoice/total ?sort-total]]
"outstanding-balance" ['[?e :invoice/outstanding-balance ?sort-outstanding-balance]]}
args)
true
(merge-query {:query {:find ['?sort-default '?e ]
:where ['[?e :invoice/client]
'[?e :invoice/date ?sort-default]]}}) )
(d/query) (d/query)
(apply-sort-3 args) (apply-sort-3 args)
(apply-pagination args))) (apply-pagination args)))
@@ -166,12 +163,12 @@
(defn sum-outstanding [ids] (defn sum-outstanding [ids]
(->> (->>
(d/query {:query {:find ['?id '?o] (d/query {:query {:find ['?id '?o]
:in ['$ '[?id ...]] :in ['$ '[?id ...]]
:where ['[?id :invoice/outstanding-balance ?o]] :where ['[?id :invoice/outstanding-balance ?o]]
} }
:args [(d/db conn) :args [(d/db conn)
ids]}) ids]})
(map last) (map last)
(reduce (reduce
+ +