customized transactions.
This commit is contained in:
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user