Adds transaction->autopay linking
This commit is contained in:
@@ -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)))
|
||||
|
||||
Reference in New Issue
Block a user