Fix manual transaction validation: require accounts when approving
- Add require-approval schema validation for :manual action - Fix keyword comparison to use :transaction-approval-status/approved - Move require-approval function before schema definition - Also fix save handler validation to use correct keyword
This commit is contained in:
@@ -60,6 +60,12 @@
|
||||
(defn check-vendor-default-account [vendor-id]
|
||||
(some? (:vendor/default-account (get-vendor vendor-id))))
|
||||
|
||||
(defn require-approval [s]
|
||||
[:and s
|
||||
[:fn (fn [{:transaction/keys [accounts approval-status]}]
|
||||
(or (not= approval-status :transaction-approval-status/approved)
|
||||
(seq accounts)))]])
|
||||
|
||||
(def edit-form-schema
|
||||
(mc/schema
|
||||
[:and
|
||||
@@ -99,8 +105,7 @@
|
||||
[:autopay-invoice-ids {:decode/string (fn [x] (edn/read-string x))} [:vector {:coerce? true} entity-id]]]]
|
||||
[:link-payment [:map
|
||||
[:payment-id entity-id]]]
|
||||
[:manual [:map
|
||||
]]]]))
|
||||
[:manual (require-approval [:map])]]]))
|
||||
|
||||
|
||||
(defn clientize-vendor [{:vendor/keys [terms-overrides automatically-paid-when-due default-account account-overrides] :as vendor} client-id]
|
||||
@@ -253,11 +258,6 @@
|
||||
(defn account-balance [request]
|
||||
(html-response (account-balance* request)))
|
||||
|
||||
(defn require-approval [s]
|
||||
[:and s
|
||||
[:fn (fn [{:transaction/keys [accounts approval-status]}]
|
||||
(or (not= approval-status :approved)
|
||||
(seq accounts)))]])
|
||||
(defrecord BasicDetailsStep [linear-wizard]
|
||||
mm/ModalWizardStep
|
||||
(step-name [_]
|
||||
@@ -1058,8 +1058,8 @@
|
||||
(exception->4xx #(assert-can-see-client (:identity request) client-id))
|
||||
(exception->4xx #(assert-not-locked client-id (:transaction/date existing-tx)))
|
||||
|
||||
(when (and (= :approved (keyword (:transaction/approval-status tx-data)))
|
||||
(not (seq (:transaction/accounts tx-data))))
|
||||
(when (and (= :transaction-approval-status/approved (keyword (:transaction/approval-status tx-data)))
|
||||
(not (seq (:transaction/accounts tx-data))))
|
||||
(throw (ex-info "Approved transactions must have accounts assigned."
|
||||
{:validation-error "Approved transactions must have accounts assigned."})))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user