Add unresolved-only and financial account filters to SSR transaction listing

This commit is contained in:
2026-05-20 20:51:22 -07:00
parent b42e2a6a44
commit 065d1182d7

View File

@@ -1,8 +1,9 @@
(ns auto-ap.ssr.transaction.common (ns auto-ap.ssr.transaction.common
(:require (:require
[auto-ap.datomic :refer [add-sorter-fields apply-pagination apply-sort-4 [auto-ap.datomic :refer [add-sorter-fields apply-pagination apply-sort-4
conn merge-query observable-query pull-many]] conn merge-query observable-query pull-many]]
[auto-ap.graphql.utils :refer [extract-client-ids is-admin?]] [auto-ap.datomic.accounts :as d-accounts]
[auto-ap.graphql.utils :refer [extract-client-ids is-admin?]]
[auto-ap.routes.invoice :as invoice-routes] [auto-ap.routes.invoice :as invoice-routes]
[auto-ap.routes.ledger :as ledger-routes] [auto-ap.routes.ledger :as ledger-routes]
[auto-ap.routes.payments :as payment-routes] [auto-ap.routes.payments :as payment-routes]
@@ -39,8 +40,9 @@
:else :else
(boolean %))}}]]] (boolean %))}}]]]
[:description {:optional true} [:maybe [:string {:decode/string strip}]]] [:description {:optional true} [:maybe [:string {:decode/string strip}]]]
[:vendor {:optional true :default nil} [:maybe [:entity-map {:pull [:db/id :vendor/name]}]]] [:vendor {:optional true :default nil} [:maybe [:entity-map {:pull [:db/id :vendor/name]}]]]
[:bank-account {:optional true :default nil} [:maybe [:entity-map {:pull [:db/id :bank-account/numeric-code]}]]] [:bank-account {:optional true :default nil} [:maybe [:entity-map {:pull [:db/id :bank-account/numeric-code]}]]]
[:account {:optional true :default nil} [:maybe [:entity-map {:pull [:db/id :account/name]}]]]
#_[:status {:optional true} [:maybe (ref->enum-schema "transaction-status")]] #_[:status {:optional true} [:maybe (ref->enum-schema "transaction-status")]]
[:exact-match-id {:optional true} [:maybe entity-id]] [:exact-match-id {:optional true} [:maybe entity-id]]
[:all-selected {:optional true :default nil} [:maybe :boolean]] [:all-selected {:optional true :default nil} [:maybe :boolean]]
@@ -150,11 +152,17 @@
:where ['[?e :transaction/bank-account ?ba]]} :where ['[?e :transaction/bank-account ?ba]]}
:args [(:db/id (:bank-account args))]}) :args [(:db/id (:bank-account args))]})
(:vendor args) (:vendor args)
(merge-query {:query {:in ['?vendor-id] (merge-query {:query {:in ['?vendor-id]
:where ['[?e :transaction/vendor ?vendor-id]]} :where ['[?e :transaction/vendor ?vendor-id]]}
:args [(:db/id (:vendor args))]}) :args [(:db/id (:vendor args))]})
(:import-batch-id args)
(:db/id (:account args))
(merge-query {:query {:in ['?account-id]
:where ['[?e :transaction/accounts ?tas]
'[?tas :transaction-account/account ?account-id]]}
:args [(:db/id (:account args))]})
(:import-batch-id args)
(merge-query {:query {:in ['?import-batch-id] (merge-query {:query {:in ['?import-batch-id]
:where ['[?import-batch-id :import-batch/entry ?e]]} :where ['[?import-batch-id :import-batch/entry ?e]]}
:args [(:import-batch-id args)]}) :args [(:import-batch-id args)]})
@@ -249,14 +257,22 @@
(com/hidden {:name "status" (com/hidden {:name "status"
:value (some-> (:status (:query-params request)) name)}) :value (some-> (:status (:query-params request)) name)})
[:fieldset.space-y-6 [:fieldset.space-y-6
(com/field {:label "Vendor"} (com/field {:label "Vendor"}
(com/typeahead {:name "vendor" (com/typeahead {:name "vendor"
:id "vendor" :id "vendor"
:url (bidi/path-for ssr-routes/only-routes :vendor-search) :url (bidi/path-for ssr-routes/only-routes :vendor-search)
:value (:vendor (:query-params request)) :value (:vendor (:query-params request))
:value-fn :db/id :value-fn :db/id
:content-fn :vendor/name})) :content-fn :vendor/name}))
(bank-account-filter* request) (com/field {:label "Financial Account"}
(com/typeahead {:name "account"
:id "account"
:url (bidi/path-for ssr-routes/only-routes :account-search)
:value (:account (:query-params request))
:value-fn :db/id
:content-fn #(:account/name (d-accounts/clientize (dc/pull (dc/db conn) d-accounts/default-read (:db/id %))
(:db/id (:client request))))}))
(bank-account-filter* request)
(date-range-field* request) (date-range-field* request)
(com/field {:label "Description"} (com/field {:label "Description"}