Makes cash flow report match closely to ben's recommendations

This commit is contained in:
2023-02-06 13:25:39 -08:00
parent 9ab70b869b
commit 32b5ff1caa
2 changed files with 81 additions and 30 deletions

View File

@@ -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)))

View File

@@ -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]