diff --git a/src/clj/auto_ap/yodlee/import.clj b/src/clj/auto_ap/yodlee/import.clj index 1010ce41..334161e4 100644 --- a/src/clj/auto_ap/yodlee/import.clj +++ b/src/clj/auto_ap/yodlee/import.clj @@ -196,6 +196,14 @@ (assoc transaction :transaction/matched-rule (:db/id top-match) :transaction/approval-status (:transaction-rule/transaction-approval-status top-match) + :transaction/accounts (map + (fn [tra] + {:transaction-account/account (:db/id (:transaction-rule-account/account tra)) + :transaction-account/amount (Math/abs (* (:transaction-rule-account/percentage tra) + (:transaction/amount transaction))) + :transaction-account/location (:transaction-rule-account/location tra)} + ) + (:transaction-rule/accounts top-match)) :transaction/vendor (:db/id (:transaction-rule/vendor top-match))) transaction))))) diff --git a/test/clj/auto_ap/yodlee/import.clj b/test/clj/auto_ap/yodlee/import.clj index 9b382b50..455e6b1d 100644 --- a/test/clj/auto_ap/yodlee/import.clj +++ b/test/clj/auto_ap/yodlee/import.clj @@ -143,23 +143,39 @@ (let [apply-rules (sut/rule-applying-fn [{:db/id 1 :transaction-rule/description "XXX039" :transaction-rule/transaction-approval-status :transaction-approval-status/approved - :transaction-rule/vendor {:db/id 123}} + :transaction-rule/vendor {:db/id 123} + :transaction-rule/accounts [{:transaction-rule-account/account {:db/id 9} + :transaction-rule-account/location "Z" + :transaction-rule-account/percentage 1.0}]} {:db/id 2 :transaction-rule/description "OtherMatch" :transaction-rule/transaction-approval-status :transaction-approval-status/requires-feedback - :transaction-rule/vendor {:db/id 456}}])] + :transaction-rule/vendor {:db/id 456} + :transaction-rule/accounts [{:transaction-rule-account/account {:db/id 9} + :transaction-rule-account/location "Z" + :transaction-rule-account/percentage 1.0}]}])] (t/is (= {:transaction/description-original "Hello XXX039", :transaction/vendor 123 :transaction/approval-status :transaction-approval-status/approved - :transaction/matched-rule 1} - (-> {:transaction/description-original "Hello XXX039"} + :transaction/accounts [{:transaction-account/account 9 + :transaction-account/amount 30.0 + :transaction-account/location "Z"}] + :transaction/matched-rule 1 + :transaction/amount 30.0} + (-> {:transaction/description-original "Hello XXX039" + :transaction/amount 30.0} apply-rules))) (t/is (= {:transaction/description-original "OtherMatch", :transaction/approval-status :transaction-approval-status/requires-feedback :transaction/vendor 456 - :transaction/matched-rule 2} - (-> {:transaction/description-original "OtherMatch"} + :transaction/amount 30.0 + :transaction/matched-rule 2 + :transaction/accounts [{:transaction-account/account 9 + :transaction-account/amount 30.0 + :transaction-account/location "Z"}]} + (-> {:transaction/description-original "OtherMatch" + :transaction/amount 30.0} apply-rules))) (t/is (= {:transaction/description-original "Hello Not match"}