diff --git a/src/clj/auto_ap/datomic/transactions.clj b/src/clj/auto_ap/datomic/transactions.clj index cc55b4cb..949e5c6e 100644 --- a/src/clj/auto_ap/datomic/transactions.clj +++ b/src/clj/auto_ap/datomic/transactions.clj @@ -256,7 +256,8 @@ :account/location {:account/client-overrides [:account-client-override/name {: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]}] id) (update :transaction/date coerce/from-date) (update :transaction/post-date coerce/from-date) diff --git a/src/clj/auto_ap/graphql/transactions.clj b/src/clj/auto_ap/graphql/transactions.clj index eee972dd..4f1a8882 100644 --- a/src/clj/auto_ap/graphql/transactions.clj +++ b/src/clj/auto_ap/graphql/transactions.clj @@ -361,14 +361,18 @@ (when missing-locations (throw (ex-info (str "Location '" (str/join ", " missing-locations) "' not found on client.") {})) ) - (audit-transact [[:upsert-transaction {:db/id id - :transaction/vendor vendor_id - :transaction/approval-status (some->> approval_status - name - snake->kebab - (keyword "transaction-approval-status")) - :transaction/accounts (map transaction-account->entity accounts) - :transaction/forecast-match forecast_match}]] + (audit-transact (cond-> [[:upsert-transaction {:db/id id + :transaction/vendor vendor_id + :transaction/approval-status (some->> approval_status + name + snake->kebab + (keyword "transaction-approval-status")) + :transaction/accounts (map transaction-account->entity accounts) + :transaction/forecast-match forecast_match}]] + (and (:transaction/plaid-merchant existing-transaction) + (not (pull-attr (dc/db conn) :vendor/plaid-merchant vendor_id))) + (conj {:db/id vendor_id + :vendor/plaid-merchant (-> existing-transaction :transaction/plaid-merchant :db/id)})) (:id context)) (solr/touch-with-ledger id) (-> (d-transactions/get-by-id id)