Adds transaction->autopay linking

This commit is contained in:
Bryce Covert
2021-01-05 17:57:36 -08:00
parent d3bb1f6cda
commit f0b31fe6d1
12 changed files with 745 additions and 347 deletions

View File

@@ -95,24 +95,57 @@
{:transaction/payment [{:payment/status [:db/ident]} :db/id]} ]
transaction-id)
payment (-> transaction :transaction/payment )
is-autopay-payment? (some->> (doto (d/query {:query {:find ['?sp]
:in ['$ '?payment]
:where ['[?ip :invoice-payment/payment ?payment]
'[?ip :invoice-payment/invoice ?i]
'[(get-else $ ?i :invoice/scheduled-payment "N/A") ?sp]]}
:args [(d/db conn) (:db/id payment)]})
log/info)
seq
(map first)
(every? #(instance? java.util.Date %)))
]
(log/info "Unlinking " transaction-id " from payment " payment)
(log/info (:db/id payment))
(log/info "Unlinking " transaction-id " from payment " payment " - Deleting the payment due to autopay? " is-autopay-payment?)
(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."})))
(audit-transact
(into [{: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))]
[:db/retract transaction-id :transaction/location (:transaction/location transaction)]]
(if is-autopay-payment?
(audit-transact
(->> [{:db/id (:db/id payment)
:payment/status :payment-status/pending}
{:db/id transaction-id
:transaction/approval-status :transaction-approval-status/unapproved}
(map (fn [a]
[:db/retract transaction-id :transaction/accounts (:db/id a)])
(:transaction/accounts transaction)))
(:id context))
[: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/retract transaction-id :transaction/location (:transaction/location transaction)]]
(into (map (fn [a]
[:db/retract transaction-id :transaction/accounts (:db/id a)])
(:transaction/accounts transaction)))
(into (map (fn [[invoice-payment]]
[:db/retractEntity invoice-payment])
(d/query {:query {:find ['?ip]
:in ['$]
:where ['[?ip :invoice-payment/payment ?p]]}
:args [(d/db conn) (:db/id payment)]} ))))
(:id context))
(audit-transact
(into [{: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))]
[:db/retract transaction-id :transaction/location (:transaction/location transaction)]]
(map (fn [a]
[:db/retract transaction-id :transaction/accounts (:db/id a)])
(:transaction/accounts transaction)))
(:id context)))
(-> (d-transactions/get-by-id transaction-id)
approval-status->graphql
->graphql)))