added payment status and made checks sort correctly.
This commit is contained in:
@@ -1,8 +1,7 @@
|
||||
(ns auto-ap.datomic.checks
|
||||
(:require [datomic.api :as d]
|
||||
[auto-ap.datomic :refer [uri merge-query apply-sort-3 apply-pagination add-sorter-fields conn]]
|
||||
[auto-ap.datomic :refer [merge-query apply-sort-3 apply-pagination add-sorter-fields conn]]
|
||||
[auto-ap.graphql.utils :refer [limited-clients]]
|
||||
[auto-ap.utils :refer [dollars=]]
|
||||
[clojure.set :refer [rename-keys]]
|
||||
[clj-time.coerce :as c]
|
||||
[clojure.tools.logging :as log]))
|
||||
@@ -29,22 +28,22 @@
|
||||
{:transaction/_payment [:db/id :transaction/date]}])
|
||||
|
||||
(defn raw-graphql-ids [db args]
|
||||
(let [check-number-like (try (Long/parseLong (:check-number-like args)) (catch Exception e nil))
|
||||
(let [check-number-like (try (Long/parseLong (:check-number-like args)) (catch Exception _ nil))
|
||||
query (cond-> {:query {:find []
|
||||
:in ['$]
|
||||
:where []}
|
||||
:args [db]}
|
||||
(:sort args) (add-sorter-fields {"client" ['[?e :payment/client ?c]
|
||||
'[?c :client/name ?sort-client]]
|
||||
"vendor" ['[?e :payment/vendor ?v]
|
||||
'[?v :vendor/name ?sort-vendor]]
|
||||
"bank-account" ['[?e :payment/bank-account ?ba]
|
||||
'[?ba :bank-account/name ?sort-bank-account]]
|
||||
"check-number" ['[?e :payment/check-number ?sort-check-number]]
|
||||
"date" ['[?e :payment/date ?sort-date]]
|
||||
"amount" ['[?e :payment/amount ?sort-amount]]
|
||||
"status" ['[?e :payment/status ?sort-status]]}
|
||||
args)
|
||||
(:sort args) (add-sorter-fields {"client" ['[?e :payment/client ?c]
|
||||
'[?c :client/name ?sort-client]]
|
||||
"vendor" ['[?e :payment/vendor ?v]
|
||||
'[?v :vendor/name ?sort-vendor]]
|
||||
"bank-account" ['[?e :payment/bank-account ?ba]
|
||||
'[?ba :bank-account/name ?sort-bank-account]]
|
||||
"check-number" ['[(get-else $ ?e :payment/check-number 0) ?sort-check-number]]
|
||||
"date" ['[?e :payment/date ?sort-date]]
|
||||
"amount" ['[?e :payment/amount ?sort-amount]]
|
||||
"status" ['[?e :payment/status ?sort-status]]}
|
||||
args)
|
||||
(:exact-match-id args)
|
||||
(merge-query {:query {:in ['?e]
|
||||
:where []}
|
||||
@@ -151,7 +150,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
|
||||
@@ -161,7 +160,7 @@
|
||||
payments))
|
||||
|
||||
(defn get-graphql [args]
|
||||
(let [db (d/db (d/connect uri))
|
||||
(let [db (d/db conn)
|
||||
{ids-to-retrieve :ids matching-count :count} (raw-graphql-ids db args)]
|
||||
|
||||
[(->> (graphql-results ids-to-retrieve db args))
|
||||
@@ -169,5 +168,5 @@
|
||||
|
||||
(defn get-by-id [id]
|
||||
(->>
|
||||
(d/pull (d/db (d/connect uri)) default-read id)
|
||||
(d/pull (d/db conn) default-read id)
|
||||
(<-datomic)))
|
||||
|
||||
@@ -375,7 +375,10 @@
|
||||
|
||||
(defn get-payment-page [context args value]
|
||||
(let [args (assoc args :id (:id context))
|
||||
[payments checks-count] (d-checks/get-graphql (update (<-graphql args) :payment-type enum->keyword "payment-type"))]
|
||||
[payments checks-count] (d-checks/get-graphql (-> args
|
||||
(<-graphql)
|
||||
(update :payment-type enum->keyword "payment-type")
|
||||
(update :status enum->keyword "payment-status")))]
|
||||
|
||||
[{:payments (->> payments
|
||||
(map (fn [payment]
|
||||
@@ -511,6 +514,7 @@
|
||||
:args {:client_id {:type :id}
|
||||
:vendor_id {:type :id}
|
||||
:payment_type {:type :payment_type}
|
||||
:status {:type :payment_status}
|
||||
:exact_match_id {:type :id}
|
||||
:date_range {:type :date_range}
|
||||
:amount_lte {:type :money}
|
||||
@@ -550,7 +554,11 @@
|
||||
{:payment_type {:values [{:enum-value :check}
|
||||
{:enum-value :cash}
|
||||
{:enum-value :debit}
|
||||
{:enum-value :credit}]}})
|
||||
{:enum-value :credit}]}
|
||||
:payment_status {:values [{:enum-value :voided}
|
||||
{:enum-value :pending}
|
||||
{:enum-value :cleared}]}})
|
||||
|
||||
|
||||
(def resolvers
|
||||
{:get-potential-payments get-potential-payments
|
||||
|
||||
@@ -345,3 +345,18 @@
|
||||
(range)
|
||||
group)))))
|
||||
|
||||
(defn add-single-transaction [bank-account-code tx]
|
||||
(let [bank-account (d/pull (d/db conn)
|
||||
[:bank-account/code
|
||||
:db/id
|
||||
:bank-account/locations
|
||||
:bank-account/start-date
|
||||
{:client/_bank-accounts [:client/code :client/locations :db/id]} ]
|
||||
[:bank-account/code bank-account-code])]
|
||||
|
||||
(transaction->txs (-> (merge {:transaction/amount 100.0 :transaction/description-original "boring" :transaction/approval-status :transaction-approval-status/approved :transaction/status "POSTED"}
|
||||
tx)
|
||||
(assoc :transaction/bank-account (:db/id bank-account)))
|
||||
bank-account
|
||||
(rm/rule-applying-fn (tr/get-all)))))
|
||||
|
||||
|
||||
@@ -38,6 +38,7 @@
|
||||
:client-id (:id @(re-frame/subscribe [::subs/client]))
|
||||
:vendor-id (:id (:vendor params))
|
||||
:payment-type (:payment-type params)
|
||||
:status (:status params)
|
||||
:exact-match-id (some-> (:exact-match-id params) str)
|
||||
:date-range (:date-range params)
|
||||
:amount-gte (:amount-gte (:amount-range params))
|
||||
|
||||
@@ -67,6 +67,27 @@
|
||||
(dispatch-event [::data-page/filter-changed data-page :payment-type nil])}
|
||||
"All"]]]
|
||||
|
||||
[:p.menu-label "Status"]
|
||||
[:div.field.has-addons
|
||||
[:p.control [:a.button.is-small {:on-click
|
||||
(dispatch-event [::data-page/filter-changed data-page :status :voided])
|
||||
:class (when (= :voided @(re-frame/subscribe [::data-page/filter data-page :status]))
|
||||
["is-selected" "is-success"])}
|
||||
"Voided" ]]
|
||||
[:p.control [:a.button.is-small {:on-click
|
||||
(dispatch-event [::data-page/filter-changed data-page :status :pending])
|
||||
:class (when (= :pending @(re-frame/subscribe [::data-page/filter data-page :status]))
|
||||
["is-selected" "is-success"])}
|
||||
"Pending" ]]
|
||||
[:p.control [:a.button.is-small {:on-click
|
||||
(dispatch-event [::data-page/filter-changed data-page :status :cleared])
|
||||
:class (when (= :cleared @(re-frame/subscribe [::data-page/filter data-page :status]))
|
||||
["is-selected" "is-success"])}
|
||||
"Cleared"]]
|
||||
[:p.control [:a.button.is-small {:on-click
|
||||
(dispatch-event [::data-page/filter-changed data-page :status nil])}
|
||||
"All"]]]
|
||||
|
||||
(when-let [exact-match-id @(re-frame/subscribe [::data-page/filter data-page :exact-match-id])]
|
||||
[:div
|
||||
[:p.menu-label "Specific Payment"]
|
||||
|
||||
Reference in New Issue
Block a user