Makes cash flow report match closely to ben's recommendations
This commit is contained in:
@@ -233,19 +233,17 @@
|
||||
|
||||
|
||||
(defn find-conflicting [{:keys [:invoice/invoice-number :invoice/vendor :invoice/client :db/id]}]
|
||||
|
||||
|
||||
(->> (d/query
|
||||
(cond-> {:query {:find [(list 'pull '?e default-read)]
|
||||
:in ['$ '?invoice-number '?vendor '?client '?invoice-id]
|
||||
:where '[[?e :invoice/invoice-number ?invoice-number]
|
||||
[?e :invoice/vendor ?vendor]
|
||||
[?e :invoice/client ?client]
|
||||
(not [?e :invoice/status :invoice-status/voided])
|
||||
[(not= ?e ?invoice-id)]]}
|
||||
|
||||
:args [(d/db (d/connect uri)) invoice-number vendor client (or id 0)]}))
|
||||
(cond-> {:query {:find [(list 'pull '?e default-read)]
|
||||
:in ['$ '?invoice-number '?vendor '?client '?invoice-id]
|
||||
:where '[[?e :invoice/invoice-number ?invoice-number]
|
||||
[?e :invoice/vendor ?vendor]
|
||||
[?e :invoice/client ?client]
|
||||
(not [?e :invoice/status :invoice-status/voided])
|
||||
[(not= ?e ?invoice-id)]]}
|
||||
:args [(d/db (d/connect uri)) invoice-number vendor client (or id 0)]}))
|
||||
(map first)
|
||||
|
||||
(map <-datomic)))
|
||||
|
||||
|
||||
|
||||
@@ -73,18 +73,39 @@
|
||||
["97000 Taxes" 97000 97999]
|
||||
["98000 Other Expenses" 98000 98999]]
|
||||
|
||||
:operating-activities [["Accounts Payable" 21000 27999 :add]
|
||||
["Accounts Receivable" 12200 12899 :subtract]
|
||||
["CCP" 12000 12199 :subtract]
|
||||
["Receipts Split" 12900 12999 :subtract]
|
||||
["Depreciation Expense" 96000 96999 :add]
|
||||
["Inventory" 13000 13999 :subtract]
|
||||
:operating-activities [
|
||||
;; BEN EDIT STARTING HERE
|
||||
["21000-24000 Accounts Payable" 21000 23999 :add]
|
||||
["25000-28000 Accounts Payable" 25000 27999 :add]
|
||||
["24000-25000 Accrual Liabilities" 24000 24999 :add]
|
||||
["12000-13000 Accounts Receivable" 12000 13000 :subtract]
|
||||
["96000-97000 Depreciation Expense" 96000 96999 :add]
|
||||
["13000-15000 Inventory" 13000 14999 :subtract]
|
||||
;; BEN ENDING HERE
|
||||
]
|
||||
|
||||
:investment-activities [["14000-18000 Investments" 14000 17999 :subtract]]
|
||||
:financing-activities [["Owner's Distributions" 34000 35999 :subtract]
|
||||
["Owner's Contributions" 33000 33999 :add]
|
||||
["Loans" 28000 28599 :add]]})
|
||||
:investment-activities [
|
||||
|
||||
;; BEN EDIT STARTING HERE
|
||||
["15000-18000 Investments" 15000 17999 :subtract]
|
||||
;; BEN ENDING HERE
|
||||
|
||||
]
|
||||
:financing-activities [
|
||||
;; BEN EDIT STARTING HERE
|
||||
["30000-33000 Other Equity Accounts" 30000 32999 :subtract]
|
||||
["33000-34000 Owner's Contributions" 33000 33999 :subtract]
|
||||
["34000-35000 Owner's Distributions" 34000 34999 :subtract]
|
||||
["35000-36000 Retained Earnings" 35000 35999 :subtract]
|
||||
["28000-29000 Loans (payable)" 28000 28999 :add]
|
||||
;; BEN ENDING HERE
|
||||
]
|
||||
:cash [
|
||||
;; BEN EDIT STARTING HERE
|
||||
["11000-11400 Bank Accounts / Cash" 11000 11399 :add]
|
||||
;; BEN ENDING HERE
|
||||
|
||||
]})
|
||||
|
||||
(def cashflow-aggregation
|
||||
(->> (select-keys groupings [:operating-activities :investment-activities :financing-activities])
|
||||
@@ -530,6 +551,33 @@
|
||||
{:header (headers pnl-datas title)
|
||||
:rows (combine-tables pnl-datas table percent-of-sales deltas)}))
|
||||
|
||||
(defn cash-flow-headers [[pnl-data :as pnl-datas] header-title]
|
||||
(let [big-header (into [{:value header-title
|
||||
:bold true}]
|
||||
(map-indexed (fn [i p]
|
||||
(cond-> {:value
|
||||
(str (date->str (:start p))
|
||||
" - "
|
||||
(date->str (:end p)))
|
||||
:colspan 3
|
||||
:align :center
|
||||
:bold true}
|
||||
(odd? i) (assoc :bg-color [240 240 240])))
|
||||
(:periods (:args pnl-data))))
|
||||
sub-header (into [{:value "Account"}]
|
||||
(mapcat
|
||||
(fn [p]
|
||||
[(merge {:value "Increases"
|
||||
:align :right}
|
||||
(:cell-args p))
|
||||
(merge {:value "Decreases"
|
||||
:align :right}
|
||||
(:cell-args p))
|
||||
(merge {:value "+/- in Cash"
|
||||
:align :right}
|
||||
(:cell-args p))])
|
||||
pnl-datas))]
|
||||
[big-header sub-header]))
|
||||
|
||||
(defn cash-flow-detail-rows
|
||||
[pnl-datas grouping title]
|
||||
@@ -542,9 +590,11 @@
|
||||
account-codes (used-accounts pnl-datas)]
|
||||
:when (seq account-codes)
|
||||
row (-> [(into [{:value (str "---" grouping-name "---")}]
|
||||
(map
|
||||
(mapcat
|
||||
(fn [p]
|
||||
(assoc (:cell-args p) :value "" :format ""))
|
||||
[(assoc (:cell-args p) :value "" :format "")
|
||||
(assoc (:cell-args p) :value "" :format "")
|
||||
(assoc (:cell-args p) :value "" :format "")])
|
||||
pnl-datas)
|
||||
)]
|
||||
(into (for [{:keys [numeric-code name]} account-codes]
|
||||
@@ -592,9 +642,11 @@
|
||||
row)]
|
||||
(-> [(into [{:value title
|
||||
:bold true}]
|
||||
(map
|
||||
(mapcat
|
||||
(fn [p]
|
||||
(assoc (:cell-args p) :value "" :format ""))
|
||||
[(assoc (:cell-args p) :value "" :format "")
|
||||
(assoc (:cell-args p) :value "" :format "")
|
||||
(assoc (:cell-args p) :value "" :format "")])
|
||||
pnl-datas))]
|
||||
(into individual-accounts)
|
||||
(conj (cashflow-subtotal-by-column-row pnl-datas title)))))
|
||||
@@ -616,15 +668,16 @@
|
||||
:financing-activities
|
||||
(str prefix " Financing Activities")))
|
||||
|
||||
(into (cash-flow-detail-rows pnl-datas
|
||||
:cash
|
||||
(str prefix " Bank Accounts / Cash")))
|
||||
|
||||
(conj (cashflow-subtotal-by-column-row (map #(-> %
|
||||
(filter-categories [:operating-activities :investment-activities :financing-activities])
|
||||
(filter-categories [:operating-activities :investment-activities :financing-activities :cash])
|
||||
#_(negate #{:cogs :payroll :controllable :fixed-overhead :ownership-controllable}))
|
||||
pnl-datas)
|
||||
"Change in Cash and Cash Equivalents")))]
|
||||
{:header [[{:value "Account"}
|
||||
{:value "Increases"}
|
||||
{:value "Decreases"}
|
||||
{:value "Total"}]]
|
||||
{:header (cash-flow-headers pnl-datas "Cash Flow")
|
||||
:rows table}))
|
||||
|
||||
(defn warning-message [pnl-data]
|
||||
|
||||
Reference in New Issue
Block a user