fixes to prevent data issue.

This commit is contained in:
2021-10-29 18:59:52 -07:00
parent edeb1b1f2e
commit 4cef98e3c0

View File

@@ -131,11 +131,18 @@
(throw (ex-info "Expense account is missing account" {:validation-error "Expense account is missing account"})))))
(defn assert-invoice-amounts-add-up [{:keys [expense_accounts total]}]
(let [expense-account-total (reduce + 0 (map (fn [x] (:amount x)) expense_accounts))]
(when-not (dollars= total expense-account-total)
(let [error (str "Expense account total (" expense-account-total ") does not equal invoice total (" total ")")]
(throw (ex-info error {:validation-error error}))))))
(defn add-invoice [context {{:keys [total expense_accounts invoice_number location client_id vendor_id vendor_name date] :as in} :invoice} value]
(assert-no-conflicting in)
(assert-can-see-client (:id context) client_id)
(assert-valid-expense-accounts expense_accounts)
(assert-invoice-amounts-add-up in)
(let [transaction-result (audit-transact [(add-invoice-transaction in)] (:id context))]
(-> (d-invoices/get-by-id (get-in transaction-result [:tempids "invoice"]))
@@ -150,6 +157,7 @@
(assert-can-see-client (:id context) client_id)
(assert-bank-account-belongs client_id bank-account-id)
(assert-valid-expense-accounts (:expense_accounts in))
(assert-invoice-amounts-add-up in)
(let [transaction-result (audit-transact [(add-invoice-transaction in)] (:id context))]
(-> (gq-checks/print-checks [{:invoice-id (get-in transaction-result [:tempids "invoice"])
:amount total}]
@@ -168,14 +176,13 @@
:invoice/client (:db/id (:invoice/client invoice))}))
(throw (ex-info (str "Invoice '" invoice_number "' already exists.") {:invoice-number invoice_number})))
expense-account-total (reduce + 0 (map (fn [x] (:amount x)) expense_accounts))
_ (when-not (dollars= total expense-account-total)
(let [error (str "Expense account total (" expense-account-total ") does not equal invoice total (" total ")")]
(throw (ex-info error {:validation-error error}))))
paid-amount (- (:invoice/total invoice) (:invoice/outstanding-balance invoice))
_ (assert-can-see-client (:id context) (:db/id (:invoice/client invoice)))
deleted (deleted-expense-accounts invoice expense_accounts)
_ (assert-valid-expense-accounts expense_accounts)
_ (assert-invoice-amounts-add-up in)
updated-invoice (cond-> {:db/id id