Creates daily sales summaries
This commit is contained in:
@@ -17,16 +17,16 @@
|
|||||||
|
|
||||||
(defn potential-duplicate-ids [db args]
|
(defn potential-duplicate-ids [db args]
|
||||||
(when (and (:potential-duplicates args)
|
(when (and (:potential-duplicates args)
|
||||||
(:bank-account-id args))
|
(:bank-account-id args))
|
||||||
(->> (dc/q '[:find ?tx ?amount ?date
|
(->> (dc/q '[:find ?tx ?amount ?date
|
||||||
:in $ ?ba
|
:in $ ?ba
|
||||||
:where
|
:where
|
||||||
[?tx :transaction/bank-account ?ba]
|
[?tx :transaction/bank-account ?ba]
|
||||||
[?tx :transaction/amount ?amount]
|
[?tx :transaction/amount ?amount]
|
||||||
[?tx :transaction/date ?date]
|
[?tx :transaction/date ?date]
|
||||||
(not [?tx :transaction/approval-status :transaction-approval-status/suppressed])]
|
(not [?tx :transaction/approval-status :transaction-approval-status/suppressed])]
|
||||||
db
|
db
|
||||||
(:bank-account-id args))
|
(:bank-account-id args))
|
||||||
(group-by (fn [[_ amount date]]
|
(group-by (fn [[_ amount date]]
|
||||||
[amount date]))
|
[amount date]))
|
||||||
(filter (fn [[_ txes]]
|
(filter (fn [[_ txes]]
|
||||||
@@ -146,21 +146,21 @@
|
|||||||
:args [(clojure.string/lower-case (:description args))]})
|
:args [(clojure.string/lower-case (:description args))]})
|
||||||
|
|
||||||
(:sort args) (add-sorter-fields {"client" ['[?e :transaction/client ?c]
|
(:sort args) (add-sorter-fields {"client" ['[?e :transaction/client ?c]
|
||||||
'[?c :client/name ?sort-client]]
|
'[?c :client/name ?sort-client]]
|
||||||
"account" ['[?e :transaction/date]
|
"account" ['[?e :transaction/date]
|
||||||
'(or-join [?e ?sort-account]
|
'(or-join [?e ?sort-account]
|
||||||
(and [?e :transaction/bank-account ?c]
|
(and [?e :transaction/bank-account ?c]
|
||||||
[?c :bank-account/name ?sort-account])
|
[?c :bank-account/name ?sort-account])
|
||||||
(and
|
(and
|
||||||
(not [?e :transaction/bank-account])
|
(not [?e :transaction/bank-account])
|
||||||
[(ground "") ?sort-account]))]
|
[(ground "") ?sort-account]))]
|
||||||
"description-original" ['[?e :transaction/description-original ?sort-description-original]]
|
"description-original" ['[?e :transaction/description-original ?sort-description-original]]
|
||||||
"date" ['[?e :transaction/date ?sort-date]]
|
"date" ['[?e :transaction/date ?sort-date]]
|
||||||
"vendor" ['(or-join [?e ?sort-vendor]
|
"vendor" ['(or-join [?e ?sort-vendor]
|
||||||
(and [(missing? $ ?e :transaction/vendor)]
|
(and [(missing? $ ?e :transaction/vendor)]
|
||||||
[?e :transaction/description-original ?sort-vendor])
|
[?e :transaction/description-original ?sort-vendor])
|
||||||
(and [?e :transaction/vendor ?v]
|
(and [?e :transaction/vendor ?v]
|
||||||
[?v :vendor/name ?sort-vendor]))]
|
[?v :vendor/name ?sort-vendor]))]
|
||||||
"amount" ['[?e :transaction/amount ?sort-amount]]
|
"amount" ['[?e :transaction/amount ?sort-amount]]
|
||||||
"status" ['[?e :transaction/status ?sort-status]]}
|
"status" ['[?e :transaction/status ?sort-status]]}
|
||||||
args)
|
args)
|
||||||
@@ -194,8 +194,8 @@
|
|||||||
:transaction/payment [:db/id :payment/date]
|
:transaction/payment [:db/id :payment/date]
|
||||||
:transaction/expected-deposit [:db/id :expected-deposit/date]
|
:transaction/expected-deposit [:db/id :expected-deposit/date]
|
||||||
:transaction/accounts [:transaction-account/amount
|
:transaction/accounts [:transaction-account/amount
|
||||||
:db/id
|
:db/id
|
||||||
:transaction-account/location
|
:transaction-account/location
|
||||||
{:transaction-account/account [:account/name :db/id
|
{:transaction-account/account [:account/name :db/id
|
||||||
:account/location
|
:account/location
|
||||||
{:account/client-overrides [:account-client-override/name
|
{:account/client-overrides [:account-client-override/name
|
||||||
@@ -209,14 +209,13 @@
|
|||||||
(map #(update % :transaction/accounts
|
(map #(update % :transaction/accounts
|
||||||
(fn [tas]
|
(fn [tas]
|
||||||
(map
|
(map
|
||||||
(fn [ta]
|
(fn [ta]
|
||||||
(update ta :transaction-account/account d-accounts/clientize (:db/id (:transaction/client %))))
|
(update ta :transaction-account/account d-accounts/clientize (:db/id (:transaction/client %))))
|
||||||
tas))))
|
tas))))
|
||||||
(map (fn [transaction]
|
(map (fn [transaction]
|
||||||
(cond-> transaction
|
(cond-> transaction
|
||||||
(:transaction/payment transaction) (update-in [:transaction/payment :payment/date] coerce/from-date)
|
(:transaction/payment transaction) (update-in [:transaction/payment :payment/date] coerce/from-date)
|
||||||
(:transaction/expected-deposit transaction) (update-in [:transaction/expected-deposit :expected-deposit/date] coerce/from-date))
|
(:transaction/expected-deposit transaction) (update-in [:transaction/expected-deposit :expected-deposit/date] coerce/from-date))))
|
||||||
))
|
|
||||||
(map #(dissoc % :transaction/id))
|
(map #(dissoc % :transaction/id))
|
||||||
(group-by :db/id))]
|
(group-by :db/id))]
|
||||||
|
|
||||||
@@ -244,22 +243,22 @@
|
|||||||
(defn get-by-id [id]
|
(defn get-by-id [id]
|
||||||
(->
|
(->
|
||||||
(dc/pull (dc/db conn)
|
(dc/pull (dc/db conn)
|
||||||
'[* {:transaction/client [:client/name :db/id :client/code :client/locations :client/groups]
|
'[* {:transaction/client [:client/name :db/id :client/code :client/locations :client/groups]
|
||||||
:transaction/approval-status [:db/ident :db/id]
|
:transaction/approval-status [:db/ident :db/id]
|
||||||
:transaction/bank-account [:bank-account/name :bank-account/code :bank-account/yodlee-account-id :db/id :bank-account/locations :bank-account/current-balance]
|
:transaction/bank-account [:bank-account/name :bank-account/code :bank-account/yodlee-account-id :db/id :bank-account/locations :bank-account/current-balance]
|
||||||
:transaction/vendor [:db/id :vendor/name]
|
:transaction/vendor [:db/id :vendor/name]
|
||||||
:transaction/matched-rule [:db/id :transaction-rule/note]
|
:transaction/matched-rule [:db/id :transaction-rule/note]
|
||||||
:transaction/forecast-match [:db/id :forecasted-transaction/identifier]
|
:transaction/forecast-match [:db/id :forecasted-transaction/identifier]
|
||||||
:transaction/accounts [:transaction-account/amount
|
:transaction/accounts [:transaction-account/amount
|
||||||
:db/id
|
:db/id
|
||||||
:transaction-account/location
|
:transaction-account/location
|
||||||
{ :transaction-account/account [:account/name :db/id
|
{:transaction-account/account [:account/name :db/id
|
||||||
:account/location
|
:account/location
|
||||||
{:account/client-overrides [:account-client-override/name
|
{:account/client-overrides [:account-client-override/name
|
||||||
{:account-client-override/client [:db/id]}]}]}]
|
{:account-client-override/client [:db/id]}]}]}]
|
||||||
:transaction/yodlee-merchant [:db/id :yodlee-merchant/yodlee-id :yodlee-merchant/name]
|
:transaction/yodlee-merchant [:db/id :yodlee-merchant/yodlee-id :yodlee-merchant/name]
|
||||||
:transaction/plaid-merchant [:db/id :plaid-merchant/name]}]
|
:transaction/plaid-merchant [:db/id :plaid-merchant/name]}]
|
||||||
id)
|
id)
|
||||||
(update :transaction/date coerce/from-date)
|
(update :transaction/date coerce/from-date)
|
||||||
(update :transaction/post-date coerce/from-date)
|
(update :transaction/post-date coerce/from-date)
|
||||||
(dissoc :transaction/id)))
|
(dissoc :transaction/id)))
|
||||||
|
|||||||
@@ -32,6 +32,15 @@
|
|||||||
(apply mark-dirty c (last-n-days days))))
|
(apply mark-dirty c (last-n-days days))))
|
||||||
|
|
||||||
|
|
||||||
|
(defn delete-all []
|
||||||
|
@(dc/transact conn
|
||||||
|
(->>
|
||||||
|
(dc/q '[:find ?ss
|
||||||
|
:where [?ss :sales-summary/date]]
|
||||||
|
(dc/db conn))
|
||||||
|
(map (fn [[ ss]]
|
||||||
|
[:db/retractEntity ss])))))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
(defn dirty-sales-summaries [c]
|
(defn dirty-sales-summaries [c]
|
||||||
@@ -58,7 +67,7 @@
|
|||||||
:in $ [?clients ?start-date ?end-date]
|
:in $ [?clients ?start-date ?end-date]
|
||||||
:where [(iol-ion.query/scan-sales-orders $ ?clients ?start-date ?end-date) [[?e _ ?sort-default] ...]]
|
:where [(iol-ion.query/scan-sales-orders $ ?clients ?start-date ?end-date) [[?e _ ?sort-default] ...]]
|
||||||
[?e :sales-order/line-items ?li]
|
[?e :sales-order/line-items ?li]
|
||||||
[?li :order-line-item/item-name ?item-name]
|
[(get-else $ ?li :order-line-item/item-name "Unknown") ?item-name]
|
||||||
[?li :order-line-item/category ?category]
|
[?li :order-line-item/category ?category]
|
||||||
[?li :order-line-item/total ?total]
|
[?li :order-line-item/total ?total]
|
||||||
[?li :order-line-item/tax ?tax]
|
[?li :order-line-item/tax ?tax]
|
||||||
@@ -259,9 +268,12 @@
|
|||||||
:db/valueType :db.type/double
|
:db/valueType :db.type/double
|
||||||
:db/cardinality :db.cardinality/one}])
|
:db/cardinality :db.cardinality/one}])
|
||||||
|
|
||||||
(apply mark-dirty [:client/code "NGCL"] (last-n-days 12))
|
(apply mark-dirty [:client/code "NGCL"] (last-n-days 14))
|
||||||
|
(apply mark-dirty [:client/code "NGDG"] (last-n-days 14))
|
||||||
|
(apply mark-dirty [:client/code "NGPG"] (last-n-days 14))
|
||||||
|
|
||||||
(mark-all-dirty 50)
|
(mark-all-dirty 50)
|
||||||
|
(delete-all)
|
||||||
|
|
||||||
(sales-summaries)
|
(sales-summaries)
|
||||||
|
|
||||||
@@ -284,6 +296,15 @@
|
|||||||
(dc/db conn)
|
(dc/db conn)
|
||||||
[[(auto-ap.datomic/pull-attr (dc/db conn) :db/id [:client/code "NGHW"])] #inst "2024-04-11T00:00:00-07:00" #inst "2024-04-11T00:00:00-07:00"])
|
[[(auto-ap.datomic/pull-attr (dc/db conn) :db/id [:client/code "NGHW"])] #inst "2024-04-11T00:00:00-07:00" #inst "2024-04-11T00:00:00-07:00"])
|
||||||
|
|
||||||
|
(dc/q '[:find ?n
|
||||||
|
:in $ [?clients ?start-date ?end-date]
|
||||||
|
:where [(iol-ion.query/scan-sales-orders $ ?clients ?start-date ?end-date) [[?e _ ?sort-default] ...]]
|
||||||
|
[?e :sales-order/line-items ?li]
|
||||||
|
[?li :order-line-item/item-name ?n] ]
|
||||||
|
(dc/db conn)
|
||||||
|
[[(auto-ap.datomic/pull-attr (dc/db conn) :db/id [:client/code "NGCL"])] #inst "2024-04-11T00:00:00-07:00" #inst "2024-04-24T00:00:00-07:00"])
|
||||||
|
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,7 @@
|
|||||||
(de/chain
|
(de/chain
|
||||||
(de/loop [attempt 0]
|
(de/loop [attempt 0]
|
||||||
(-> (de/chain (de/future-with (ex/execute-pool)
|
(-> (de/chain (de/future-with (ex/execute-pool)
|
||||||
(log/info ::request-started
|
#_(log/info ::request-started
|
||||||
:url (:url request)
|
:url (:url request)
|
||||||
:attempt attempt
|
:attempt attempt
|
||||||
:source "Square 3"
|
:source "Square 3"
|
||||||
@@ -1008,6 +1008,7 @@
|
|||||||
|
|
||||||
|
|
||||||
(require 'auto-ap.time-reader)
|
(require 'auto-ap.time-reader)
|
||||||
|
@(upsert-all "NGPG")
|
||||||
|
|
||||||
(clojure.pprint/pprint (let [[c [l]] (get-square-client-and-location "NGHW")]
|
(clojure.pprint/pprint (let [[c [l]] (get-square-client-and-location "NGHW")]
|
||||||
|
|
||||||
|
|||||||
@@ -223,9 +223,7 @@
|
|||||||
|
|
||||||
(defn cell [params]
|
(defn cell [params]
|
||||||
(apply r/create-element "td" #js {:className (:class params) :style (some-> (:style params) clj->js)}
|
(apply r/create-element "td" #js {:className (:class params) :style (some-> (:style params) clj->js)}
|
||||||
(map r/as-element (r/children (r/current-component))))
|
(map r/as-element (r/children (r/current-component)))))
|
||||||
|
|
||||||
)
|
|
||||||
|
|
||||||
(defn body []
|
(defn body []
|
||||||
(let [children (r/children (r/current-component))
|
(let [children (r/children (r/current-component))
|
||||||
|
|||||||
Reference in New Issue
Block a user