no need for transact-with-ledger.
This commit is contained in:
@@ -17,8 +17,6 @@
|
||||
assert-power-user
|
||||
attach-tracing-resolvers
|
||||
enum->keyword]]
|
||||
[auto-ap.ledger
|
||||
:refer [transact-batch-with-ledger]]
|
||||
[auto-ap.rule-matching :as rm]
|
||||
[auto-ap.utils :refer [dollars=]]
|
||||
[clj-time.coerce :as coerce]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
(ns auto-ap.graphql.transactions
|
||||
(:require
|
||||
[auto-ap.datomic :refer [conn pull-attr pull-many pull-ref remove-nils]]
|
||||
[auto-ap.datomic :refer [conn pull-attr pull-many pull-ref remove-nils audit-transact audit-transact-batch]]
|
||||
[auto-ap.datomic.accounts :as a]
|
||||
[auto-ap.datomic.checks :as d-checks]
|
||||
[auto-ap.datomic.invoices :as d-invoices]
|
||||
@@ -19,8 +19,6 @@
|
||||
ident->enum-f
|
||||
snake->kebab]]
|
||||
[auto-ap.import.transactions :as i-transactions]
|
||||
[auto-ap.ledger
|
||||
:refer [transact-batch-with-ledger transact-with-ledger]]
|
||||
[auto-ap.rule-matching :as rm]
|
||||
[auto-ap.utils :refer [dollars=]]
|
||||
[clj-time.coerce :as coerce]
|
||||
@@ -28,7 +26,7 @@
|
||||
[clojure.string :as str]
|
||||
[clojure.tools.logging :as log]
|
||||
[datomic.client.api :as dc]
|
||||
[iol-ion.tx :refer [random-tempid upsert-entity]]
|
||||
[iol-ion.tx :refer [random-tempid upsert-transaction]]
|
||||
[com.brunobonacci.mulog :as mu]))
|
||||
|
||||
(def approval-status->graphql (ident->enum-f :transaction/approval-status))
|
||||
@@ -91,11 +89,11 @@
|
||||
all-ids-not-locked)]
|
||||
|
||||
(log/info "Unapproving " (count all-ids) args)
|
||||
(transact-batch-with-ledger
|
||||
(audit-transact-batch
|
||||
(->> all-ids
|
||||
(mapv (fn [t]
|
||||
{:db/id t
|
||||
:transaction/approval-status (enum->keyword (:status args) "transaction-approval-status")})))
|
||||
`(upsert-transaction ~{:db/id t
|
||||
:transaction/approval-status (enum->keyword (:status args) "transaction-approval-status")}))))
|
||||
|
||||
(:id context))
|
||||
{:message (str "Succesfully changed " (count all-ids) " transactions to be " (name (:status args) ) ".")}))
|
||||
@@ -172,12 +170,12 @@
|
||||
(throw (ex-info err {:validation-error err}) ))))
|
||||
|
||||
(log/info "Bulk coding " (count all-ids) args)
|
||||
(transact-batch-with-ledger
|
||||
(audit-transact-batch
|
||||
(map (fn [i]
|
||||
`(upsert-entity ~(cond-> i
|
||||
(:approval_status args) (assoc :transaction/approval-status (enum->keyword (:approval_status args) "transaction-approval-status"))
|
||||
(:vendor args) (assoc :transaction/vendor (:vendor args))
|
||||
(seq (:accounts args)) (assoc :transaction/accounts (maybe-code-accounts i (:accounts args) locations)))))
|
||||
`(upsert-transaction ~(cond-> i
|
||||
(:approval_status args) (assoc :transaction/approval-status (enum->keyword (:approval_status args) "transaction-approval-status"))
|
||||
(:vendor args) (assoc :transaction/vendor (:vendor args))
|
||||
(seq (:accounts args)) (assoc :transaction/accounts (maybe-code-accounts i (:accounts args) locations)))))
|
||||
transactions)
|
||||
(:id context))
|
||||
{:message (str "Successfully coded " (count all-ids) " transactions.")}))
|
||||
@@ -190,7 +188,7 @@
|
||||
db (dc/db conn)]
|
||||
|
||||
(log/info "Deleting " (count all-ids) args)
|
||||
(transact-batch-with-ledger
|
||||
(audit-transact-batch
|
||||
(mapcat (fn [i]
|
||||
(let [transaction (dc/pull db [:transaction/payment
|
||||
:transaction/expected-deposit
|
||||
@@ -272,46 +270,36 @@
|
||||
(when (not= :payment-status/cleared (-> payment :payment/status :db/ident))
|
||||
(throw (ex-info "Payment can't be undone because it isn't cleared." {:validation-error "Payment can't be undone because it isn't cleared."})))
|
||||
(if is-autopay-payment?
|
||||
(transact-with-ledger
|
||||
(cond-> [{:db/id (:db/id payment)
|
||||
:payment/status :payment-status/pending}
|
||||
{:db/id transaction-id
|
||||
:transaction/approval-status :transaction-approval-status/unapproved}
|
||||
(audit-transact
|
||||
(-> [{:db/id (:db/id payment)
|
||||
:payment/status :payment-status/pending}
|
||||
`(upsert-transaction
|
||||
~{:db/id transaction-id
|
||||
:transaction/approval-status :transaction-approval-status/unapproved
|
||||
:transaction/payment nil
|
||||
:transaction/vendor nil
|
||||
:transaction/location nil
|
||||
:transaction/accounts nil})
|
||||
|
||||
[:db/retractEntity (:db/id payment) ]
|
||||
[:db/retract transaction-id :transaction/payment (:db/id payment)]
|
||||
[:db/retract transaction-id :transaction/vendor (:db/id (:transaction/vendor transaction))]]
|
||||
[:db/retractEntity (:db/id payment) ]]
|
||||
|
||||
(:transaction/location transaction)
|
||||
(conj [:db/retract transaction-id :transaction/location (:transaction/location transaction)])
|
||||
|
||||
(seq (:transaction/accounts transaction))
|
||||
(into (map (fn [a]
|
||||
[:db/retract transaction-id :transaction/accounts (:db/id a)])
|
||||
(:transaction/accounts transaction)))
|
||||
|
||||
true
|
||||
(into (map (fn [[invoice-payment]]
|
||||
[:db/retractEntity invoice-payment])
|
||||
(dc/q {:query {:find ['?ip]
|
||||
:in ['$ '?p]
|
||||
:where ['[?ip :invoice-payment/payment ?p]]}
|
||||
:args [(dc/db conn) (:db/id payment)]} ))))
|
||||
(into (map (fn [[invoice-payment]]
|
||||
[:db/retractEntity invoice-payment])
|
||||
(dc/q {:query {:find ['?ip]
|
||||
:in ['$ '?p]
|
||||
:where ['[?ip :invoice-payment/payment ?p]]}
|
||||
:args [(dc/db conn) (:db/id payment)]} ))))
|
||||
(:id context))
|
||||
(transact-with-ledger
|
||||
(into (cond-> [{:db/id (:db/id payment)
|
||||
:payment/status :payment-status/pending}
|
||||
{:db/id transaction-id
|
||||
:transaction/approval-status :transaction-approval-status/unapproved}
|
||||
[:db/retract transaction-id :transaction/payment (:db/id payment)]
|
||||
[:db/retract transaction-id :transaction/vendor (:db/id (:transaction/vendor transaction))]
|
||||
]
|
||||
(:transaction/location transaction)
|
||||
(conj [:db/retract transaction-id :transaction/location (:transaction/location transaction)]))
|
||||
|
||||
(map (fn [a]
|
||||
[:db/retract transaction-id :transaction/accounts (:db/id a)])
|
||||
(:transaction/accounts transaction)))
|
||||
(audit-transact
|
||||
[{:db/id (:db/id payment)
|
||||
:payment/status :payment-status/pending}
|
||||
`(upsert-transaction
|
||||
~{:db/id transaction-id
|
||||
:transaction/approval-status :transaction-approval-status/unapproved
|
||||
:transaction/payment nil
|
||||
:transaction/vendor nil
|
||||
:transaction/location nil
|
||||
:transaction/accounts nil})]
|
||||
(:id context)))
|
||||
(-> (d-transactions/get-by-id transaction-id)
|
||||
approval-status->graphql
|
||||
@@ -372,14 +360,14 @@
|
||||
(when missing-locations
|
||||
(throw (ex-info (str "Location '" (str/join ", " missing-locations) "' not found on client.") {})) )
|
||||
|
||||
(transact-with-ledger [`(upsert-entity ~{: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 [`(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})]
|
||||
(:id context))
|
||||
(-> (d-transactions/get-by-id id)
|
||||
approval-status->graphql
|
||||
@@ -398,22 +386,22 @@
|
||||
(when-not (dollars= (- (:transaction/amount transaction))
|
||||
(:payment/amount payment))
|
||||
(throw (ex-info "Amounts don't match" {:validation-error "Amounts don't match"})))
|
||||
(transact-with-ledger (into
|
||||
(audit-transact (into
|
||||
[{:db/id (:db/id payment)
|
||||
:payment/status :payment-status/cleared
|
||||
:payment/date (coerce/to-date (first (sort [(:payment/date payment)
|
||||
(:transaction/date transaction)])))}
|
||||
|
||||
{:db/id (:db/id transaction)
|
||||
:transaction/payment (:db/id payment)
|
||||
:transaction/vendor (:db/id (:payment/vendor payment))
|
||||
:transaction/location "A"
|
||||
:transaction/approval-status :transaction-approval-status/approved
|
||||
:transaction/accounts [{:transaction-account/account (:db/id (a/get-account-by-numeric-code-and-sets 21000 ["default"]))
|
||||
:transaction-account/location "A"
|
||||
:transaction-account/amount (Math/abs (:transaction/amount transaction))}]}]
|
||||
(map (fn [x] [:db/retractEntity (:db/id x)] )
|
||||
(:transaction/accounts transaction)))
|
||||
`(upsert-transaction
|
||||
~{:db/id (:db/id transaction)
|
||||
:transaction/payment (:db/id payment)
|
||||
:transaction/vendor (:db/id (:payment/vendor payment))
|
||||
:transaction/location "A"
|
||||
:transaction/approval-status :transaction-approval-status/approved
|
||||
:transaction/accounts [{:db/id (random-tempid)
|
||||
:transaction-account/account (:db/id (a/get-account-by-numeric-code-and-sets 21000 ["default"]))
|
||||
:transaction-account/location "A"
|
||||
:transaction-account/amount (Math/abs (:transaction/amount transaction))}]})])
|
||||
(:id context)))
|
||||
(-> (d-transactions/get-by-id transaction_id)
|
||||
approval-status->graphql
|
||||
@@ -447,7 +435,7 @@
|
||||
(:db/id (:transaction/bank-account transaction))
|
||||
(:db/id (:transaction/client transaction)))]
|
||||
(log/info "Adding a new payment" payment-tx)
|
||||
(transact-with-ledger payment-tx (:id context)))
|
||||
(audit-transact payment-tx (:id context)))
|
||||
|
||||
(-> (d-transactions/get-by-id transaction_id)
|
||||
approval-status->graphql
|
||||
@@ -484,8 +472,7 @@
|
||||
unpaid_invoice_ids)
|
||||
(:db/id (:transaction/bank-account transaction))
|
||||
(:db/id (:transaction/client transaction)))]
|
||||
(log/info "Adding a new payment" payment-tx)
|
||||
(transact-with-ledger payment-tx (:id context)))
|
||||
(audit-transact payment-tx (:id context)))
|
||||
|
||||
(-> (d-transactions/get-by-id transaction_id)
|
||||
approval-status->graphql
|
||||
@@ -521,19 +508,15 @@
|
||||
(when (:transaction/payment transaction)
|
||||
|
||||
(throw (ex-info "Transaction already associated with a payment" {:validation-error "Transaction already associated with a payment"}))))
|
||||
(transact-with-ledger (transduce
|
||||
(map #(into
|
||||
[(remove-nils (rm/apply-rule {:db/id (:db/id %)
|
||||
:transaction/amount (:transaction/amount %)}
|
||||
transaction-rule
|
||||
(audit-transact (mapv (fn [t]
|
||||
`(upsert-transaction
|
||||
~(remove-nils (rm/apply-rule {:db/id (:db/id t)
|
||||
:transaction/amount (:transaction/amount t)}
|
||||
transaction-rule
|
||||
|
||||
(or (-> % :transaction/bank-account :bank-account/locations)
|
||||
(-> % :transaction/client :client/locations))))]
|
||||
(map (fn [x] [:db/retractEntity (:db/id x)] )
|
||||
(:transaction/accounts %))))
|
||||
into
|
||||
[]
|
||||
transactions)
|
||||
(or (-> t :transaction/bank-account :bank-account/locations)
|
||||
(-> t :transaction/client :client/locations))))))
|
||||
transactions)
|
||||
(:id context))
|
||||
)
|
||||
(transduce
|
||||
|
||||
Reference in New Issue
Block a user