Simplified forms considerably
This commit is contained in:
@@ -266,24 +266,30 @@
|
||||
(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?
|
||||
(audit-transact
|
||||
(->> [{:db/id (:db/id payment)
|
||||
:payment/status :payment-status/pending}
|
||||
{:db/id transaction-id
|
||||
:transaction/approval-status :transaction-approval-status/unapproved}
|
||||
(cond-> [{:db/id (:db/id payment)
|
||||
:payment/status :payment-status/pending}
|
||||
{:db/id transaction-id
|
||||
:transaction/approval-status :transaction-approval-status/unapproved}
|
||||
|
||||
[: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 ['$ '?p]
|
||||
:where ['[?ip :invoice-payment/payment ?p]]}
|
||||
:args [(d/db conn) (:db/id payment)]} ))))
|
||||
[: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))]]
|
||||
|
||||
(: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])
|
||||
(d/query {:query {:find ['?ip]
|
||||
:in ['$ '?p]
|
||||
:where ['[?ip :invoice-payment/payment ?p]]}
|
||||
:args [(d/db conn) (:db/id payment)]} ))))
|
||||
(:id context))
|
||||
(audit-transact
|
||||
(into (cond-> [{:db/id (:db/id payment)
|
||||
|
||||
@@ -5,12 +5,13 @@
|
||||
[auto-ap.graphql.utils
|
||||
:refer [->graphql
|
||||
<-graphql
|
||||
cleanse-query
|
||||
assert-admin
|
||||
assert-failure
|
||||
cleanse-query
|
||||
enum->keyword
|
||||
is-admin?
|
||||
result->page]]
|
||||
[auto-ap.utils :refer [by]]
|
||||
[clojure.set :as set]
|
||||
[clojure.string :as str]
|
||||
[clojure.tools.logging :as log]
|
||||
@@ -31,9 +32,30 @@
|
||||
(set (map :db/id (:user/clients id)))))))
|
||||
|
||||
(defn upsert-vendor [context {{:keys [id name hidden terms code print_as primary_contact secondary_contact address default_account_id invoice_reminder_schedule schedule_payment_dom terms_overrides account_overrides] :as in} :vendor} value]
|
||||
|
||||
(when (and id (not (can-user-edit-vendor? id (:id context))))
|
||||
(assert-failure "This vendor is managed by Integreat. Please reach out to ben@integreatconsult.com for your changes."))
|
||||
|
||||
(when (->> schedule_payment_dom
|
||||
(group-by :client_id)
|
||||
vals
|
||||
(filter #(> (count %) 1))
|
||||
seq)
|
||||
(assert-failure "Only one schedule payment override allowed per client."))
|
||||
|
||||
(when (->> terms_overrides
|
||||
(group-by :client_id)
|
||||
vals
|
||||
(filter #(> (count %) 1))
|
||||
seq)
|
||||
(assert-failure "Only one terms override allowed per client."))
|
||||
|
||||
(when (->> account_overrides
|
||||
(group-by :client_id)
|
||||
vals
|
||||
(filter #(> (count %) 1))
|
||||
seq)
|
||||
(assert-failure "Only one account override allowed per client."))
|
||||
|
||||
(let [
|
||||
hidden (if (is-admin? (:id context))
|
||||
hidden
|
||||
|
||||
Reference in New Issue
Block a user