From deef4eb4a409a5ce3e94f5b54bf5749c04ee70a2 Mon Sep 17 00:00:00 2001 From: Bryce Covert Date: Wed, 24 Apr 2019 06:54:29 -0700 Subject: [PATCH] adding some safety checks to not continue matching indefinitely. --- src/clj/auto_ap/graphql/checks.clj | 2 +- src/clj/auto_ap/yodlee/import.clj | 16 ++++++++++------ src/cljs/auto_ap/views/pages/checks.cljs | 2 +- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/clj/auto_ap/graphql/checks.clj b/src/clj/auto_ap/graphql/checks.clj index 9e5c0e79..f0b7dea9 100644 --- a/src/clj/auto_ap/graphql/checks.clj +++ b/src/clj/auto_ap/graphql/checks.clj @@ -359,7 +359,7 @@ (defn void-check [context {id :payment_id} value] (let [check (d-checks/get-by-id id)] (assert (or (= :payment-status/pending (:payment/status check)) - (#{:payment-type/cash :payment-type/debit} (:payment/type check)))) + (#{:payment-type/cash} (:payment/type check)))) (assert-can-see-client (:id context) (:db/id (:payment/client check))) (let [removing-payments (mapcat (fn [x] (let [invoice (:invoice-payment/invoice x) diff --git a/src/clj/auto_ap/yodlee/import.clj b/src/clj/auto_ap/yodlee/import.clj index 9c84cd4c..2a7599c2 100644 --- a/src/clj/auto_ap/yodlee/import.clj +++ b/src/clj/auto_ap/yodlee/import.clj @@ -7,14 +7,18 @@ [clj-time.coerce :as coerce] [digest :refer [sha-256]] [auto-ap.datomic.checks :as d-checks] + [auto-ap.datomic.transactions :as d-transactions] [auto-ap.datomic.clients :as d-clients] [auto-ap.time :as time])) -(defn transaction->payment [_ check-number client-id bank-account-id amount] +(defn transaction->payment [_ check-number client-id bank-account-id amount id] - (cond (and check-number client-id bank-account-id) + (cond (:transaction/payment (d-transactions/get-by-id [:transaction/id (sha-256 (str id))])) + nil + + (and check-number client-id bank-account-id) (-> (d-checks/get-graphql {:client-id client-id :bank-account-id bank-account-id :check-number check-number @@ -25,9 +29,9 @@ (and client-id bank-account-id amount) (let [matching-checks (d-checks/get-graphql {:client-id client-id - :bank-account-id bank-account-id - :amount (- amount) - :status :payment-status/pending})] + :bank-account-id bank-account-id + :amount (- amount) + :status :payment-status/pending})] (if (= 1 (count matching-checks)) (first matching-checks) nil)) @@ -65,7 +69,7 @@ check-number (extract-check-number transaction) client-id (transaction->client transaction) bank-account-id (transaction->bank-account-id transaction) - check (transaction->payment transaction check-number client-id bank-account-id amount)]] + check (transaction->payment transaction check-number client-id bank-account-id amount id)]] (try (when client-id @(->> [(remove-nils #:transaction diff --git a/src/cljs/auto_ap/views/pages/checks.cljs b/src/cljs/auto_ap/views/pages/checks.cljs index a211cece..bd45149e 100644 --- a/src/cljs/auto_ap/views/pages/checks.cljs +++ b/src/cljs/auto_ap/views/pages/checks.cljs @@ -214,7 +214,7 @@ [:td status] [:td (when (or (= :pending status) - (and (#{":cash" ":debit" :cash :debit} type) + (and (#{":cash" :cash } type) (not= :voided status))) [:button.button.is-warning.is-outlined {:on-click (dispatch-event [::void-check i])} [:span [:span.icon [:i.fa.fa-minus-circle]]]]) (if s3-url