huge number of changes to start making all usages of expense accounts dynamic.
This commit is contained in:
@@ -25,8 +25,8 @@
|
||||
(re-frame/reg-sub
|
||||
::expense-account
|
||||
:<- [::change-expense-accounts]
|
||||
(fn [{{:keys [expense-accounts] :or {expense-accounts [] }} :invoice} [_ expense-account-id]]
|
||||
(first (filter #(= expense-account-id (:id %)) expense-accounts))))
|
||||
(fn [{{:keys [expense-accounts] :or {expense-accounts [] }} :invoice} [_ invoice-expense-account-id]]
|
||||
(first (filter #(= invoice-expense-account-id (:id %)) expense-accounts))))
|
||||
|
||||
(re-frame/reg-event-fx
|
||||
::change-expense-accounts
|
||||
@@ -89,12 +89,12 @@
|
||||
)
|
||||
:amount (:new-amount ea)
|
||||
:location (:location ea)
|
||||
:expense-account-id (:expense-account-id ea)})
|
||||
:account-id (:id (:account ea))})
|
||||
expense-accounts)}
|
||||
[:id :total :outstanding-balance :invoice-number :date :status
|
||||
[:vendor [:name :id]]
|
||||
[:expense_accounts [:amount :id :location :expense_account_id
|
||||
[:expense_account [:id :name [:parent [:id :name]]]]]]
|
||||
[:account [:id :name :numeric-code :location]]]]
|
||||
[:client [:name :id :locations]]
|
||||
[:payments [:amount :id [:payment [:amount :s3_url :check_number ]]]]]]}]}
|
||||
:on-success on-success}})))
|
||||
@@ -104,7 +104,7 @@
|
||||
(fn [db _]
|
||||
(let [{{{:keys [locations]} :client} :invoice} @(re-frame/subscribe [::change-expense-accounts])]
|
||||
(update-in db [::change-expense-accounts :invoice :expense-accounts]
|
||||
conj {:amount "0.0" :id (str "new-" (random-uuid)) :expense-account-id {} :location (first locations)}))))
|
||||
conj {:amount "0.0" :id (str "new-" (random-uuid)) :account {} :location (first locations)}))))
|
||||
|
||||
(re-frame/reg-event-db
|
||||
::remove-expense-account-split
|
||||
@@ -148,21 +148,22 @@
|
||||
[:th {:style {:width "5em"}}]]]
|
||||
[:tbody
|
||||
(doall (for [{:keys [id] :as expense-account} expense-accounts
|
||||
:let [sub @(re-frame/subscribe [::expense-account (:id expense-account)])]]
|
||||
:let [sub @(re-frame/subscribe [::expense-account (:id expense-account)])
|
||||
_ (println "SUBB" sub)]]
|
||||
^{:key id}
|
||||
[:tr
|
||||
[:td.expandable [:div.control
|
||||
[bind-field
|
||||
[typeahead {:matches (map (fn [x] [(:id x) (str (:id x) " - " (:name x))]) chooseable-expense-accounts)
|
||||
[typeahead {:matches (map (fn [x] [(:id x) (str (:numeric-code x) " - " (:name x))]) chooseable-expense-accounts)
|
||||
:type "typeahead"
|
||||
:field [:expense-account-id]
|
||||
:field [:account :id]
|
||||
:event [::change id]
|
||||
:spec ::invoices-expense-accounts/expense-account-id
|
||||
:spec ::invoices-expense-accounts/account-id
|
||||
:subscription sub}]]]]
|
||||
|
||||
(when multi-location?
|
||||
[:td
|
||||
(if-let [forced-location (-> expense-account :expense-account-id expense-accounts/expense-accounts :location)]
|
||||
(if-let [forced-location (:location @(re-frame/subscribe [::subs/account (-> sub :account :id )]))]
|
||||
[:div.select
|
||||
[:select {:disabled "disabled" :value forced-location} [:option {:value forced-location} forced-location]]]
|
||||
[:div.select
|
||||
|
||||
@@ -49,8 +49,8 @@
|
||||
:client-id (:id @(re-frame/subscribe [::subs/client])))
|
||||
[[:invoices [:id :total :outstanding-balance :invoice-number :date :status
|
||||
[:vendor [:name :id]]
|
||||
[:expense_accounts [:amount :id :expense_account_id :location
|
||||
[:expense_account [:id :name :location [:parent [:id :name]]]]]]
|
||||
[:expense_accounts [:amount :id :location
|
||||
[:account [:id :name :numeric-code :location ]]]]
|
||||
[:client [:name :id :locations]]
|
||||
[:payments [:amount :id [:payment [:id :status :amount :s3_url :check_number
|
||||
[:transaction [:post_date]]]]]]]]
|
||||
@@ -182,7 +182,7 @@
|
||||
[:div
|
||||
(for [e expense-accounts]
|
||||
^{:key (:id e)}
|
||||
[:span.dropdown-item (:name (:expense-account e)) " " (gstring/format "$%.2f" (:amount e) ) ])
|
||||
[:span.dropdown-item (:name (:account e)) " " (gstring/format "$%.2f" (:amount e) ) ])
|
||||
|
||||
[:hr.dropdown-divider]
|
||||
|
||||
|
||||
@@ -12,8 +12,8 @@
|
||||
[auto-ap.subs :as subs]))
|
||||
|
||||
(defn vendor-dialog [{:keys [vendor save-event change-event id] {:keys [name]} :vendor}]
|
||||
(println (s/explain ::entity/vendor vendor) )
|
||||
(let [clients-by-id @(re-frame/subscribe [::subs/clients-by-id])]
|
||||
(let [clients-by-id @(re-frame/subscribe [::subs/clients-by-id])
|
||||
chooseable-expense-accounts @(re-frame/subscribe [::subs/chooseable-expense-accounts]) ]
|
||||
[action-modal {:id id
|
||||
:title [:span (if (:id vendor)
|
||||
(str "Edit " (or name "<vendor>"))
|
||||
@@ -51,23 +51,12 @@
|
||||
[horizontal-field
|
||||
[:label.label "Default"]
|
||||
[bind-field
|
||||
[typeahead {:matches (map (fn [[k v]] [k (:name v)]) chooseable-expense-accounts)
|
||||
[typeahead {:matches (map (fn [x] [(:id x) (str (:numeric-code x) " - " (:name x))]) chooseable-expense-accounts)
|
||||
:type "typeahead"
|
||||
:field [:default-expense-account]
|
||||
:spec ::entity/default-expense-account
|
||||
:field [:default-account-id]
|
||||
:event change-event
|
||||
:subscription vendor}]]]
|
||||
#_[horizontal-field
|
||||
[:label.label "Code"]
|
||||
[:div.control
|
||||
|
||||
[bind-field
|
||||
[:input.input.is-expanded {:type "text"
|
||||
:field :code
|
||||
:spec ::entity/code
|
||||
:event change-event
|
||||
:subscription vendor}]]
|
||||
[:p.help "The vendor code is used for invoice parsing. Only one vendor at a time can use a code"]]]
|
||||
|
||||
|
||||
[:h2.subtitle "Address"]
|
||||
[address-field {:field [:address]
|
||||
@@ -163,11 +152,4 @@
|
||||
:event change-event
|
||||
:subscription vendor}]]
|
||||
" Never"]]]
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
(when (:saving? vendor) [:div.is-overlay {:style {"backgroundColor" "rgba(150,150,150, 0.5)"}}])]))
|
||||
|
||||
@@ -54,17 +54,13 @@
|
||||
(take 5))
|
||||
top-5 (vec (take 5 expense-account-stats))
|
||||
rest (drop 5 expense-account-stats)
|
||||
other {:expense-account-id 0 :expense-account-name "Other" :total (reduce + 0 (map :total rest))}]
|
||||
other {:account {:id 0 :name "Other"} :total (reduce + 0 (map :total rest))}]
|
||||
(cond-> db
|
||||
(seq top-5)
|
||||
(assoc ::top-expense-categories (conj top-5 other))
|
||||
|
||||
(seq invoice-stats)
|
||||
(assoc ::invoice-stats invoice-stats)
|
||||
|
||||
|
||||
)
|
||||
)))
|
||||
(assoc ::invoice-stats invoice-stats)))))
|
||||
|
||||
(re-frame/reg-sub
|
||||
::invoice-stats
|
||||
@@ -84,7 +80,7 @@
|
||||
:graphql {:token (-> db :user)
|
||||
:query-obj {:venia/queries [[:expense_account_stats
|
||||
{:client-id (:id @(re-frame/subscribe [::subs/client]))}
|
||||
[:expense-account-id :total :expense-account-name]]
|
||||
[[:account [:id :name]] :total]]
|
||||
[:invoice_stats
|
||||
{:client-id (:id @(re-frame/subscribe [::subs/client]))}
|
||||
[:name :paid :unpaid]]]}
|
||||
@@ -98,7 +94,7 @@
|
||||
[:h1.title.is-4 "Top expense categories"]
|
||||
(let [expense-categories @(re-frame/subscribe [::top-expense-categories])]
|
||||
(make-pie-chart {:width 800 :height 500 :data (clj->js
|
||||
(map (fn [x] {:name (:expense-account-name x) :value (:total x)}) expense-categories))}))
|
||||
(map (fn [x] {:name (:name (:account x)) :value (:total x)}) expense-categories))}))
|
||||
[:h1.title.is-4 "Upcoming Bills"]
|
||||
(make-bar-chart {:width 800 :height 500 :data (clj->js
|
||||
@(re-frame/subscribe [::invoice-stats]))})]}]))
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
(on-params-change (merge @params p)))}]
|
||||
"Showing " (inc start) "-" end "/" total
|
||||
|
||||
[:table.table.is-fullwidth
|
||||
[:table.table.is-fullwidth.compact
|
||||
[:thead
|
||||
[:tr
|
||||
(when-not selected-client
|
||||
|
||||
@@ -35,7 +35,6 @@
|
||||
(fn [{:keys [db]} [_ edit-completed]]
|
||||
(when @(re-frame/subscribe [::can-submit])
|
||||
(let [{{:keys [id vendor-id account-id]} :data :as data} @(re-frame/subscribe [::forms/form ::edit-transaction])]
|
||||
(println "DATA" data)
|
||||
{:db (forms/loading db ::edit-transaction )
|
||||
:graphql
|
||||
{:token (-> db :user)
|
||||
|
||||
@@ -32,9 +32,9 @@
|
||||
[:client [:id :name :locations]]
|
||||
[:payments [:amount [:payment [:amount :s3_url :check_number ]]]]
|
||||
[:vendor [:id :name]]
|
||||
[:expense_accounts [:amount :id :expense_account_id
|
||||
[:expense_accounts [:amount :id
|
||||
:location
|
||||
[:expense_account [:id :name [:parent [:id :name]]]]]]])
|
||||
[:account [:id :numeric-code :name :location]]]]])
|
||||
|
||||
(defn does-amount-exceed-outstanding? [amount outstanding-balance]
|
||||
(let [amount (js/parseFloat amount)
|
||||
@@ -819,10 +819,10 @@
|
||||
[:div
|
||||
[:h2.subtitle "Expense Accounts"]
|
||||
|
||||
(for [[index {:keys [id location expense-account-id] :as expense-account}] (map vector (range) (:expense-accounts data))]
|
||||
(for [[index {:keys [id location] :as expense-account {account-id :id account-numeric-code :numeric-code account-name :name} :account}] (map vector (range) (:expense-accounts data))]
|
||||
^{:key id}
|
||||
[:div.columns
|
||||
[:div.column expense-account-id " - "(-> expense-account-id expense-accounts/expense-accounts :name)]
|
||||
[:div.column account-numeric-code " - " account-name]
|
||||
|
||||
(when multi-location?
|
||||
[:div.column location])
|
||||
|
||||
Reference in New Issue
Block a user