Balance sheets work multiple clients

This commit is contained in:
2023-09-02 21:37:12 -07:00
parent a891046084
commit 1d87687949
3 changed files with 204 additions and 89 deletions

View File

@@ -489,14 +489,20 @@
pnl-datas)
)]
(into (for [{:keys [numeric-code name]} account-codes]
(into [{:value name}]
(into [{:value (str name ":" numeric-code)}]
(map
(fn [p]
(let [pnl-data (-> p (filter-numeric-code numeric-code numeric-code))]
(let [pnl-data (-> p (filter-numeric-code numeric-code numeric-code))
this-name-exists? (->> (:data p)
(filter (comp #{name} :name))
seq)]
(merge
{:format :dollar
:filters (:filters pnl-data)
:value (aggregate-accounts pnl-data)}
(if this-name-exists?
{:format :dollar
:filters (:filters pnl-data)
:value (aggregate-accounts pnl-data)}
{:filters (:filters pnl-data)
:value ""})
(:cell-args p))))
pnl-datas))))
@@ -780,9 +786,17 @@
(defn balance-sheet-headers [pnl-data]
[(cond-> [{:value "Period Ending"}
{:value (date->str (:date (:args pnl-data)))}]
(:include-comparison (:args pnl-data)) (into [{:value (date->str (:comparison-date (:args pnl-data)))} {:value "+/-"}]))])
(doto
[(into [{:value "Period Ending"}]
(mapcat identity
(for [client (set (map :client-id (:data pnl-data))) ]
(cond-> [{:value (date->str (:date (:args pnl-data)))}]
(:include-comparison (:args pnl-data))
(into [{:value (date->str (:comparison-date (:args pnl-data)))}
{:value "+/-"}])))))]
println))
(defn append-deltas [table]
(->> table
@@ -793,31 +807,80 @@
:value (- (or (:value a) 0.0)
(or (:value b) 0.0))})]))))
#_(defn summarize-balance-sheet [pnl-data]
(reduce
(fn [result table]
(-> result
(update :header into (:header table))
(update :rows
(fn [current-rows]
(if (seq current-rows)
(map
concat
current-rows
(:rows table))
(:rows table))))))
{:header []
:rows []}
(for [client-id (set (map :client-id (:data pnl-data)))]
(let [pnl-datas (map (fn [p]
(-> pnl-data
(filter-client client-id)
(filter-period p)))
(:periods (:args pnl-data)))
table (-> []
(into (detail-rows pnl-datas
:assets
"Assets"))
(into (detail-rows pnl-datas
:liabilities
"Liabilities"))
(into (detail-rows pnl-datas
:equities
"Owner's Equity"))
(conj (subtotal-by-column-row
(map #(-> %
(filter-categories [:sales :cogs :payroll :controllable :fixed-overhead :ownership-controllable])
(negate #{:cogs :payroll :controllable :fixed-overhead :ownership-controllable}))
pnl-datas)
"Retained Earnings")))
table (if (:include-comparison (:args pnl-data))
(append-deltas table)
table)]
{:header (balance-sheet-headers pnl-data)
:rows table})))
)
(defn summarize-balance-sheet [pnl-data]
(let [pnl-datas (map (fn [p]
(filter-period pnl-data p))
(:periods (:args pnl-data)))
table (-> []
(into (detail-rows pnl-datas
:assets
"Assets"))
(into (detail-rows pnl-datas
:liabilities
"Liabilities"))
(into (detail-rows pnl-datas
:equities
"Owner's Equity"))
(conj (subtotal-by-column-row
(map #(-> %
(filter-categories [:sales :cogs :payroll :controllable :fixed-overhead :ownership-controllable])
(negate #{:cogs :payroll :controllable :fixed-overhead :ownership-controllable}))
pnl-datas)
"Retained Earnings")))
table (if (:include-comparison (:args pnl-data))
(append-deltas table)
table)]
{:header (balance-sheet-headers pnl-data)
:rows table}))
(let [pnl-datas (for [client-id (set (map :client-id (:data pnl-data)))
p (:periods (:args pnl-data))]
(-> pnl-data
(filter-client client-id)
(filter-period p))
)]
(let [table (-> []
(into (detail-rows pnl-datas
:assets
"Assets"))
(into (detail-rows pnl-datas
:liabilities
"Liabilities"))
(into (detail-rows pnl-datas
:equities
"Owner's Equity"))
(conj (subtotal-by-column-row
(map #(-> %
(filter-categories [:sales :cogs :payroll :controllable :fixed-overhead :ownership-controllable])
(negate #{:cogs :payroll :controllable :fixed-overhead :ownership-controllable}))
pnl-datas)
"Retained Earnings")))
table (if (:include-comparison (:args pnl-data))
(append-deltas table)
table)]
{:header (balance-sheet-headers pnl-data)
:rows table}))
)
(defn journal-detail-report [args data client-codes]