minor tweak.
This commit is contained in:
@@ -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))
|
(seq (:location args))
|
||||||
(merge-query {:query {:in ['?location]
|
(merge-query {:query {:in ['?location]
|
||||||
:where ['[?e :invoice/expense-accounts ?eas]
|
:where ['[?e :invoice/expense-accounts ?eas]
|
||||||
'[?eas :invoice-expense-account/location ?location]]}
|
'[?eas :invoice-expense-account/location ?location]]}
|
||||||
:args [(:location args)]})
|
: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 %)))
|
|
||||||
|
|
||||||
|
|
||||||
|
(: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
|
||||||
+
|
+
|
||||||
|
|||||||
Reference in New Issue
Block a user