Sales summaries in slightly more detail
This commit is contained in:
@@ -44,9 +44,20 @@
|
||||
:size :small}))]])
|
||||
|
||||
(def default-read '[:db/id
|
||||
|
||||
*
|
||||
[:sales-summary/date :xform clj-time.coerce/from-date]
|
||||
{:sales-summary/client [:client/code :client/name]}
|
||||
*]) ;; TODO
|
||||
{:sales-summary/total-tax [{[:ledger-mapped/ledger-side :xform iol-ion.query/ident] [:db/ident]}
|
||||
:ledger-mapped/amount]}
|
||||
{:sales-summary/total-tip [{[:ledger-mapped/ledger-side :xform iol-ion.query/ident] [:db/ident]}
|
||||
:ledger-mapped/amount]}
|
||||
{:sales-summary/sales-items [{[:ledger-mapped/ledger-side :xform iol-ion.query/ident] [:db/ident]}
|
||||
:ledger-mapped/amount
|
||||
:sales-summary-item/category]}
|
||||
{:sales-summary/payment-items [{[:ledger-mapped/ledger-side :xform iol-ion.query/ident] [:db/ident]}
|
||||
:ledger-mapped/amount
|
||||
:sales-summary-item/category]}]) ;; TODO
|
||||
|
||||
(defn fetch-ids [db request]
|
||||
(let [query-params (:parsed-query-params request)
|
||||
@@ -96,7 +107,7 @@
|
||||
[(->> (hydrate-results ids-to-retrieve db request))
|
||||
matching-count]))
|
||||
|
||||
(defn get-debits [ss]
|
||||
#_(defn get-debits [ss]
|
||||
{:card-payments (+ (:sales-summary/total-card-payments ss 0.0)
|
||||
(:sales-summary/total-card-fees ss 0.0)
|
||||
(- (:sales-summary/total-card-refunds ss 0.0)))
|
||||
@@ -117,6 +128,11 @@
|
||||
:discounts (+ (:sales-summary/discount ss 0.0))
|
||||
:returns (+ (:sales-summary/total-returns ss 0.0))})
|
||||
|
||||
(defn all-items [ss]
|
||||
(->> [(:sales-summary/total-tax ss) (:sales-summary/total-tip ss)]
|
||||
(into (:sales-summary/payment-items ss))
|
||||
(into (:sales-summary/sales-items ss))))
|
||||
|
||||
(def grid-page
|
||||
(helper/build {:id "entity-table"
|
||||
:id-fn :db/id
|
||||
@@ -159,25 +175,25 @@
|
||||
:name "credits"
|
||||
:sort-key "credits"
|
||||
:render (fn [ss]
|
||||
(let [total-debits (reduce + 0.0 (vals (get-debits ss)))
|
||||
total-credits (+ (- (+ (reduce + 0.0 (map :sales-summary-item/total (:sales-summary/sales-items ss)))
|
||||
|
||||
(reduce + 0.0 (map :sales-summary-item/discount (:sales-summary/sales-items ss))))
|
||||
(reduce + 0.0 (map :sales-summary-item/tax (:sales-summary/sales-items ss))))
|
||||
|
||||
(:sales-summary/total-tax ss 0.0)
|
||||
(:sales-summary/total-tip ss 0.0))]
|
||||
(let [total-debits (->> (all-items ss)
|
||||
(filter #(= :ledger-side/debit (:ledger-mapped/ledger-side %)))
|
||||
(map #(:ledger-mapped/amount % 0.0))
|
||||
(reduce + 0.0))
|
||||
total-credits (->> (all-items ss)
|
||||
(filter #(= :ledger-side/credit (:ledger-mapped/ledger-side %)))
|
||||
(map #(:ledger-mapped/amount % 0.0))
|
||||
(reduce + 0.0))]
|
||||
[:ul
|
||||
(for [[n x] (group-by :sales-summary-item/category (:sales-summary/sales-items ss))]
|
||||
[:li n ": " (format "$%,.2f" (- (+ (reduce + 0.0 (map :sales-summary-item/total x))
|
||||
(reduce + 0.0 (map :sales-summary-item/discount x)))
|
||||
(reduce + 0.0 (map :sales-summary-item/tax x))))])
|
||||
[:li "Sales subtotal: " (format "$%,.2f" (- (+ (reduce + 0.0 (map :sales-summary-item/total (:sales-summary/sales-items ss)))
|
||||
(reduce + 0.0 (map :sales-summary-item/discount (:sales-summary/sales-items ss))))
|
||||
|
||||
(reduce + 0.0 (map :sales-summary-item/tax (:sales-summary/sales-items ss)))))]
|
||||
[:li "Tax: " (format "$%,.2f" (:sales-summary/total-tax ss))]
|
||||
[:li "Tips: " (format "$%,.2f" (:sales-summary/total-tip ss))]
|
||||
(for [si (:sales-summary/sales-items ss)
|
||||
:when (= :ledger-side/credit (:ledger-mapped/ledger-side si))]
|
||||
[:li (:sales-summary-item/category si) ": " (format "$%,.2f" (:ledger-mapped/amount si))])
|
||||
[:li "Sales subtotal: " (format "$%,.2f" (reduce + 0.0 (map :ledger-mapped/amount (:sales-summary/sales-items ss))))]
|
||||
(for [si (:sales-summary/payment-items ss)
|
||||
:when (= :ledger-side/credit (:ledger-mapped/ledger-side si))]
|
||||
[:li (:sales-summary-item/category si) ": " (format "$%,.2f" (:ledger-mapped/amount si))])
|
||||
|
||||
[:li "Tax: " (format "$%,.2f" (:ledger-mapped/amount (:sales-summary/total-tax ss)))]
|
||||
[:li "Tips: " (format "$%,.2f" (:ledger-mapped/amount (:sales-summary/total-tip ss)))]
|
||||
[:li (com/pill {:color (if (dollars= total-debits total-credits)
|
||||
:primary
|
||||
:red)} "Total: " (format "$%,.2f" total-credits))]])
|
||||
@@ -188,51 +204,22 @@
|
||||
:name "debits"
|
||||
:sort-key "debits"
|
||||
:render (fn [ss]
|
||||
(let [{:keys [card-payments food-app-payments
|
||||
cash-payments discounts fees
|
||||
gift-card-payments
|
||||
returns refunds total-unknown-processor-payments] :as debits} (get-debits ss)
|
||||
|
||||
total-debits (reduce + 0.0 (vals debits))
|
||||
total-credits (+ (- (+ (reduce + 0.0 (map :sales-summary-item/total (:sales-summary/sales-items ss)))
|
||||
|
||||
(reduce + 0.0 (map :sales-summary-item/discount (:sales-summary/sales-items ss))))
|
||||
(reduce + 0.0 (map :sales-summary-item/tax (:sales-summary/sales-items ss))))
|
||||
|
||||
(:sales-summary/total-tax ss 0.0)
|
||||
(:sales-summary/total-tip ss 0.0))]
|
||||
(let [ total-debits (->> (all-items ss)
|
||||
(filter #(= :ledger-side/debit (:ledger-mapped/ledger-side %)))
|
||||
(map #(:ledger-mapped/amount % 0.0))
|
||||
(reduce + 0.0))
|
||||
total-credits (->> (all-items ss)
|
||||
(filter #(= :ledger-side/credit (:ledger-mapped/ledger-side %)))
|
||||
(map #(:ledger-mapped/amount % 0.0))
|
||||
(reduce + 0.0))]
|
||||
[:ul
|
||||
[:li "Card Payments: "
|
||||
(format "$%,.2f" card-payments)]
|
||||
|
||||
[:li "Food App Payments: "
|
||||
(format "$%,.2f" food-app-payments)]
|
||||
[:li "Gift Card Payments"
|
||||
(format "$%,.2f" gift-card-payments)]
|
||||
[:li "Unknown Processor Payments: "
|
||||
|
||||
(format "$%,.2f" total-unknown-processor-payments)]
|
||||
[:li "Cash Payments: "
|
||||
|
||||
(format "$%,.2f" cash-payments)]
|
||||
[:li "Discounts: "
|
||||
|
||||
(format "$%,.2f" discounts)]
|
||||
|
||||
[:li "Fees: "
|
||||
(format "$%,.2f" fees)]
|
||||
[:li "Returns: "
|
||||
(format "$%,.2f" returns)]
|
||||
#_[:li "Refunds: "
|
||||
(format "$%,.2f" refunds)]
|
||||
|
||||
|
||||
|
||||
|
||||
(for [si (:sales-summary/payment-items ss)
|
||||
:when (= :ledger-side/debit (:ledger-mapped/ledger-side si))]
|
||||
[:li (:sales-summary-item/category si) ": " (format "$%,.2f" (:ledger-mapped/amount si))])
|
||||
[:li (com/pill {:color (if (dollars= total-debits total-credits)
|
||||
:primary
|
||||
:red)} "Total: " (format "$%,.2f" total-debits))]])
|
||||
|
||||
|
||||
#_(count))}]}))
|
||||
|
||||
;; TODO schema cleanup
|
||||
|
||||
Reference in New Issue
Block a user