customized transactions.

This commit is contained in:
Bryce Covert
2020-04-30 07:22:39 -07:00
parent 8043fb0b81
commit 4a6aeaab8f
18 changed files with 184 additions and 126 deletions

View File

@@ -16,33 +16,71 @@
(sort-by :name (vals (:clients db))))))
(re-frame/reg-sub
::accounts
::all-accounts
(fn [db]
(:accounts db)))
(re-frame/reg-sub
::all-accounts-by-id
(fn [db]
(by :id (:accounts db))))
(defn clientize-account [account client]
(let [override (->>
(:client-overrides account)
(filter (fn [co]
(= (:id (:client co)) (:id client))))
first)]
(condp = (:applicability account)
nil
(assoc account :name (or (:name override) (:name account)))
:global
(assoc account :name (or (:name override) (:name account)))
:optional
(when override
(assoc account :name (or (:name override) (:name account))))
:customized
(when override
(assoc account :name (or (:name override) (:name account)))))))
(re-frame/reg-sub
::accounts
:<- [::all-accounts]
:<- [::client]
(fn [[accounts client] [_ client-override]]
(transduce
(comp
(map
#(clientize-account % (or client-override client)))
(filter identity))
conj
[]
accounts)))
(re-frame/reg-sub
::account
(fn [[_ client]]
[(re-frame/subscribe [::accounts-by-id client])])
(fn [[as] [_ _ i]]
(as i)))
(defn accounts-by-id [accounts client]
(by :id
(map
#(clientize-account % client)
accounts)))
(re-frame/reg-sub
::accounts-by-id
:<- [::accounts]
(fn [as [_ i]]
(first (filter
#(= (:id %) i)
as))))
(re-frame/reg-sub
::accounts-for-client
(fn [db client]
(:accounts db)))
(re-frame/reg-sub
::accounts-for-client-by-id
(fn [db client]
(by :id (:accounts db))))
(re-frame/reg-sub
::accounts-for-current-client
(fn [db]
(:accounts db)))
:<- [::client]
(fn [[accounts client] [_ client-override]]
(accounts-by-id accounts (or client-override client))))
(re-frame/reg-sub
::bank-accounts
@@ -132,7 +170,8 @@
(re-frame/reg-sub
::vendor-default-account
(fn [db [_ v client]]
(let [vendor (if (:default-account v)
(let [accounts (accounts-by-id (:accounts db) client)
vendor (if (:default-account v)
v
(-> (:vendors db) (get v)))
client-override (->> (:account-overrides vendor)
@@ -143,9 +182,7 @@
:id)
default-id (:id (:default-account v))
i (or client-override default-id)]
(first (filter
#(= (:id %) i)
(:accounts db))))))
(accounts i))))
(re-frame/reg-sub
::sorted-vendors
@@ -202,12 +239,6 @@
(fn [db]
(:query-params db)))
(re-frame/reg-sub
::chooseable-expense-accounts
:<- [::accounts-for-current-client]
(fn [accounts]
accounts))
(re-frame/reg-sub
::page-failure
(fn [db]