From 14b1847a90e1836dcad238da4a348ca6a3ab607e Mon Sep 17 00:00:00 2001 From: Bryce Covert Date: Sun, 15 Jan 2023 05:06:38 -0800 Subject: [PATCH] hopefully faster 1099 load. --- src/clj/auto_ap/ssr/company/company_1099.clj | 71 +++++++++++--------- 1 file changed, 39 insertions(+), 32 deletions(-) diff --git a/src/clj/auto_ap/ssr/company/company_1099.clj b/src/clj/auto_ap/ssr/company/company_1099.clj index c1d21633..ef37c13b 100644 --- a/src/clj/auto_ap/ssr/company/company_1099.clj +++ b/src/clj/auto_ap/ssr/company/company_1099.clj @@ -16,38 +16,45 @@ (:vendor/legal-entity-tin-type vendor)))) (defn get-1099-companies [user] - (->> (d/q '[:find - (pull ?c [:client/code]) - (pull ?v [:db/id - :vendor/name - {:vendor/legal-entity-1099-type [:db/ident]} - {:vendor/legal-entity-tin-type [:db/ident]} - {:vendor/address [:address/street1 - :address/city - :address/state - :address/zip]} - :vendor/legal-entity-first-ein - :vendor/legal-entity-first-name - :vendor/legal-entity-middle-name - :vendor/legal-entity-last-name]) - (sum ?a) - :with ?p - :in $ ?user - :where [?p :payment/date ?d ] - [(>= ?d #inst "2018-01-01T08:00")] - [(< ?d #inst "2023-01-01T08:00")] - [?p :payment/client ?c] - [(auto-ap.graphql.utils/can-see-client? ?user ?c)] - [?p :payment/amount ?a] - [?p :payment/type :payment-type/check] - [?p :payment/vendor ?v]] - (d/db conn) - user) - (filter (fn [[_ _ a]] - (>= a 600.0))) - - (sort-by (fn [[client _ amount]] - [(:client/code client) amount]) ))) + (let [clients (->> (d/q '[:find ?c + :in $ ?user + :where [?c :client/code] + [(auto-ap.graphql.utils/can-see-client? ?user ?c)]] + (d/db conn) user) + (map first) + set)] + (->> (d/q '[:find + (pull ?c [:client/code]) + (pull ?v [:db/id + :vendor/name + {:vendor/legal-entity-1099-type [:db/ident]} + {:vendor/legal-entity-tin-type [:db/ident]} + {:vendor/address [:address/street1 + :address/city + :address/state + :address/zip]} + :vendor/legal-entity-first-ein + :vendor/legal-entity-first-name + :vendor/legal-entity-middle-name + :vendor/legal-entity-last-name]) + (sum ?a) + :with ?p + :in $ [?c ...] + :where + [?p :payment/client ?c] + [?p :payment/date ?d ] + [(>= ?d #inst "2018-01-01T08:00")] + [(< ?d #inst "2023-01-01T08:00")] + [?p :payment/amount ?a] + [?p :payment/type :payment-type/check] + [?p :payment/vendor ?v]] + (d/db conn) + clients) + (filter (fn [[_ _ a]] + (>= a 600.0))) + + (sort-by (fn [[client _ amount]] + [(:client/code client) amount]) )))) (defn dialog [header content footer] [:div.modal.is-active