diff --git a/src/clj/auto_ap/datomic/invoices.clj b/src/clj/auto_ap/datomic/invoices.clj index a4dcd339..2e967fd9 100644 --- a/src/clj/auto_ap/datomic/invoices.clj +++ b/src/clj/auto_ap/datomic/invoices.clj @@ -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))) diff --git a/src/cljc/auto_ap/ledger/reports.cljc b/src/cljc/auto_ap/ledger/reports.cljc index 2d47a1ae..34558200 100644 --- a/src/cljc/auto_ap/ledger/reports.cljc +++ b/src/cljc/auto_ap/ledger/reports.cljc @@ -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]