Balance sheets work multiple clients
This commit is contained in:
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user