adding automatic rule feature.

This commit is contained in:
Bryce Covert
2019-05-15 19:18:51 -07:00
parent 5f810ac2c4
commit 31aee76e61
4 changed files with 25 additions and 9 deletions

View File

@@ -12,9 +12,9 @@
[clj-time.core :as time]
[clj-time.coerce :as coerce]))
#_(def uri "datomic:sql://invoices?jdbc:postgresql://database:5432/datomic?user=datomic&password=datomic")
(def uri "datomic:sql://invoices?jdbc:postgresql://database:5432/datomic?user=datomic&password=datomic")
(def uri "datomic:mem://datomic-transactor:4334/invoice")
#_(def uri "datomic:mem://datomic-transactor:4334/invoice")
(defn create-database []
(d/create-database uri))

View File

@@ -384,6 +384,11 @@
:db/cardinality :db.cardinality/one
:db/doc "Status of a transaction"}
{:db/ident :transaction/matched-rule
:db/valueType :db.type/ref
:db/cardinality :db.cardinality/one
:db/doc "The rule that this transaction matched"}
{:db/ident :transaction-rule/transaction-approval-status
:db/valueType :db.type/ref
:db/cardinality :db.cardinality/one

View File

@@ -77,3 +77,10 @@
(->>
(d/pull (d/db (d/connect uri)) default-read id)
(<-datomic)))
(defn get-all []
(mapv first
(d/query {:query {:find [(list 'pull '?e default-read )]
:in ['$]
:where ['[?e :transaction-rule/description]]}
:args [(d/db (d/connect uri))]})))

View File

@@ -9,7 +9,8 @@
[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]))
[auto-ap.time :as time]
[auto-ap.datomic.transaction-rules :as tr]))
@@ -107,8 +108,8 @@
:location "A"
:amount (Math/abs (double amount))}])}
remove-nils
apply-rules))))
apply-rules
remove-nils))))
(defn batch-transact [transactions]
@@ -125,6 +126,7 @@
:transaction-rule/dom-gte :transaction-rule/dom-lte
:transaction-rule/amount-gte :transaction-rule/amount-lte
:transaction-rule/client :transaction-rule/bank-account]} ]
(println transaction description)
(let [transaction-dom (some-> transaction
:transaction/date
.toInstant
@@ -180,11 +182,12 @@
true])))
(defn rule-applying-fn [rules]
(let [rules (transduce (map (fn [r] (update r :transaction-rule/description #(some-> % re-pattern))))
(let [rules (transduce (map (fn [r]
(update r :transaction-rule/description #(some-> % re-pattern))))
conj
[]
(sort prioritize-rule rules))]
(println rules)
(fn [transaction]
(let [matching-rules (->> rules
@@ -233,6 +236,7 @@
(:client/bank-accounts c)))
(d-clients/get-all))
transaction->client (comp (by :yodlee-account-id :client-id all-bank-accounts) :accountId)
transaction->bank-account-id (comp (by :yodlee-account-id :bank-account-id all-bank-accounts) :accountId)]
(batch-transact (transactions->txs transactions transaction->client transaction->bank-account-id (rule-applying-fn []))))))
transaction->bank-account-id (comp (by :yodlee-account-id :bank-account-id all-bank-accounts) :accountId)
all-rules (tr/get-all)]
(batch-transact (transactions->txs transactions transaction->client transaction->bank-account-id (rule-applying-fn all-rules))))))