From 4429fa384ac1e182fe820d9a2650356354d4f61b Mon Sep 17 00:00:00 2001 From: Bryce Covert Date: Thu, 21 May 2020 06:17:58 -0700 Subject: [PATCH] Simple account export --- src/clj/auto_ap/datomic/clients.clj | 9 +++++++++ src/clj/auto_ap/routes/exports.clj | 28 ++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/src/clj/auto_ap/datomic/clients.clj b/src/clj/auto_ap/datomic/clients.clj index d42a8f9a..e6bc6702 100644 --- a/src/clj/auto_ap/datomic/clients.clj +++ b/src/clj/auto_ap/datomic/clients.clj @@ -35,6 +35,15 @@ #_(first))) +(defn code->id [code] + (->> + (d/query (-> {:query {:find ['?e] + :in ['$ '?code] + :where [['?e :client/code '?code ]]} + :args [(d/db (d/connect uri)) code]})) + (first) + (first))) + (defn assoc-image [code image] @(d/transact (d/connect uri) [{ :client/code code diff --git a/src/clj/auto_ap/routes/exports.clj b/src/clj/auto_ap/routes/exports.clj index 196e0fcb..57cc5a8a 100644 --- a/src/clj/auto_ap/routes/exports.clj +++ b/src/clj/auto_ap/routes/exports.clj @@ -65,6 +65,34 @@ (first (d-ledger/get-graphql {:count Integer/MAX_VALUE :client-code (query-params "client-code")})))) + (GET "/accounts/export" {:keys [query-params identity]} + (assert-admin identity) + + (let [client-id (d-clients/code->id (query-params "client-code")) + query [[:accounts + [:id :numeric_code :type :applicability :location :name [:client_overrides [:name [:client [:id :code :name]]]]]]] + all-accounts (graphql/query identity (venia/graphql-query {:venia/queries (->graphql query)}))] + + (list (transduce + (comp + (filter (fn [a] + (let [overriden-clients (set (map (comp :id :client) (:client-overrides a)))] + (or (= :global (:applicability a)) + (overriden-clients (str client-id)))))) + (map (fn [a] + (let [client->name (reduce + (fn [override co] + (assoc override (str (:id (:client co))) (:name co))) + {} + (:client-overrides a))] + (-> a + (assoc :global-name (:name a)) + (assoc :client-name (client->name (str client-id) (:name a))) + (dissoc :client-overrides)))))) + conj + [] + (:accounts (:data all-accounts)))))) + (GET "/transactions/export" {:keys [query-params identity]} (assert-admin identity) (let [[transactions] (d-transactions/get-graphql {:client-code (query-params "client-code")