From 39572866241decf6ff959441caf901822da0027e Mon Sep 17 00:00:00 2001 From: Bryce Date: Mon, 1 Apr 2024 16:06:34 -0700 Subject: [PATCH] Adds gift cards to sales summaries --- resources/schema.edn | 7 ++- src/clj/auto_ap/jobs/sales_summaries.clj | 26 ++++++++--- src/clj/auto_ap/ssr/admin/sales_summaries.clj | 45 ++++++++++++------- 3 files changed, 55 insertions(+), 23 deletions(-) diff --git a/resources/schema.edn b/resources/schema.edn index 660cef0a..d2216645 100644 --- a/resources/schema.edn +++ b/resources/schema.edn @@ -1898,7 +1898,7 @@ :db/cardinality :db.cardinality/one :db/index true} -{:db/ident :sales-summary/discount + {:db/ident :sales-summary/discount :db/noHistory true, :db/valueType :db.type/double :db/cardinality :db.cardinality/one} @@ -1922,6 +1922,11 @@ :db/noHistory true, :db/valueType :db.type/double :db/cardinality :db.cardinality/one} +{:db/ident :sales-summary/total-gift-card-payments + :db/noHistory true, + :db/valueType :db.type/double + :db/cardinality :db.cardinality/one} + {:db/ident :sales-summary/total-card-refunds :db/noHistory true, :db/valueType :db.type/double diff --git a/src/clj/auto_ap/jobs/sales_summaries.clj b/src/clj/auto_ap/jobs/sales_summaries.clj index 0277e5ac..91431949 100644 --- a/src/clj/auto_ap/jobs/sales_summaries.clj +++ b/src/clj/auto_ap/jobs/sales_summaries.clj @@ -82,12 +82,12 @@ :in $ [?clients ?start-date ?end-date] :where [(iol-ion.query/scan-sales-orders $ ?clients ?start-date ?end-date) [[?e _ ?sort-default] ...]] [?e :sales-order/returns ?r] - + #_[?e :sales-order/charges ?c] #_[?c :charge/tax ?tax]] - (dc/db conn) - [[c] date date])) - 0.0) + (dc/db conn) + [[c] date date])) + 0.0) :sales-summary/sales-items @@ -168,6 +168,20 @@ [[c] date date])) 0.0) + :sales-summary/total-gift-card-payments + (or (ffirst (dc/q '[:find (sum ?total) + :with ?c + :in $ [?clients ?start-date ?end-date] + :where [(iol-ion.query/scan-sales-orders $ ?clients ?start-date ?end-date) [[?e _ ?sort-default] ...]] + [?e :sales-order/charges ?c] + [?c :charge/total ?total] + (or [?c :charge/type-name "SQUARE_GIFT_CARD"] + [?c :charge/type-name "WALLET"] + [?c :charge/type-name "GIFT_CARD"])] + (dc/db conn) + [[c] date date])) + 0.0) + :sales-summary/total-cash-refunds (or (ffirst (dc/q '[:find (sum ?t) :in $ [?clients ?start-date ?end-date] @@ -200,10 +214,8 @@ :sales-summary/total-food-app-refunds (or (ffirst (dc/q '[:find (sum ?t) :in $ [?clients ?start-date ?end-date] - :where :where [(iol-ion.query/scan-sales-refunds $ ?clients ?start-date ?end-date) [[?e _ ?sort-default] ...]] - (not [?e :sales-refund/type "CASH"]) - (not [?e :sales-refund/type "CARD"]) + [?e :sales-refund/type "EXTERNAL"] [?e :sales-refund/total ?t]] (dc/db conn) [[c] date date])) diff --git a/src/clj/auto_ap/ssr/admin/sales_summaries.clj b/src/clj/auto_ap/ssr/admin/sales_summaries.clj index ad99ae4d..e324ab5c 100644 --- a/src/clj/auto_ap/ssr/admin/sales_summaries.clj +++ b/src/clj/auto_ap/ssr/admin/sales_summaries.clj @@ -95,13 +95,20 @@ [(->> (hydrate-results ids-to-retrieve db request)) matching-count])) -(defn get-credits [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))) :food-app-payments (+ (:sales-summary/total-food-app-payments ss 0.0) (:sales-summary/total-food-app-fees ss 0.0) (- (:sales-summary/total-food-app-refunds ss 0.0))) + :gift-card-payments (+ (:sales-summary/total-gift-card-payments ss 0.0) + (:sales-summary/total-gift-card-fees ss 0.0) + (- (:sales-summary/total-gift-card-refunds ss 0.0))) + #_#_:refunds (+ (:sales-summary/total-food-app-refunds ss 0.0) + (:sales-summary/total-card-refunds ss 0.0) + (:sales-summary/total-cash-refunds ss 0.0)) + :fees (- (:sales-summary/total-card-fees ss 0.0)) :cash-payments (+ (:sales-summary/total-cash-payments ss 0.0) (- (:sales-summary/total-cash-refunds ss 0.0))) @@ -138,11 +145,11 @@ :sort-key "date" :render #(some-> % :sales-summary/date (atime/unparse-local atime/normal-date))} {:key "credits" - :name "Credits" + :name "credits" :sort-key "credits" :render (fn [ss] - (let [total-credits (reduce + 0.0 (vals (get-credits ss))) - total-debits (+ (- (+ (reduce + 0.0 (map :sales-summary-item/total (:sales-summary/sales-items 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)))) @@ -160,9 +167,9 @@ (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))] - [:li (com/pill {:color (if (dollars= total-credits total-debits) + [:li (com/pill {:color (if (dollars= total-debits total-credits) :primary - :red)} "Total: " (format "$%,.2f" total-debits))]]) + :red)} "Total: " (format "$%,.2f" total-credits))]]) #_(count))} @@ -172,21 +179,25 @@ :render (fn [ss] (let [{:keys [card-payments food-app-payments cash-payments discounts fees - returns] :as credits} (get-credits ss) - total-credits (reduce + 0.0 (vals credits)) - total-debits (+ (- (+ (reduce + 0.0 (map :sales-summary-item/total (:sales-summary/sales-items ss))) + gift-card-payments + returns refunds] :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)))) + (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))] + (:sales-summary/total-tax ss 0.0) + (:sales-summary/total-tip ss 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 "Cash Payments: " (format "$%,.2f" cash-payments)] @@ -198,11 +209,15 @@ (format "$%,.2f" fees)] [:li "Returns: " (format "$%,.2f" returns)] + #_[:li "Refunds: " + (format "$%,.2f" refunds)] - [:li (com/pill {:color (if (dollars= total-credits total-debits) + + + [:li (com/pill {:color (if (dollars= total-debits total-credits) :primary - :red)} "Total: " (format "$%,.2f" total-credits))]]) + :red)} "Total: " (format "$%,.2f" total-debits))]]) #_(count))}]}))