only one way to change invoices -> datomic!
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
(ns auto-ap.graphql.invoices
|
||||
(:require [auto-ap.graphql.utils :refer [->graphql assert-can-see-company]]
|
||||
[auto-ap.db.invoices :as invoices]
|
||||
|
||||
[auto-ap.db.vendors :as vendors]
|
||||
[auto-ap.datomic.vendors :as d-vendors]
|
||||
[auto-ap.datomic.invoices :as d-invoices]
|
||||
@@ -20,8 +20,8 @@
|
||||
|
||||
(defn add-invoice [context {{:keys [total invoice_number location client_id vendor_id vendor_name date] :as in} :invoice} value]
|
||||
(when (seq (d-invoices/find-conflicting {:invoice/invoice-number invoice_number
|
||||
:invoice/vendor vendor_id
|
||||
:invoice/client client_id}))
|
||||
:invoice/vendor (Long/parseLong vendor_id)
|
||||
:invoice/client (Long/parseLong client_id)}))
|
||||
(throw (ex-info (str "Invoice '" invoice_number "' already exists.") {:invoice-number invoice_number})))
|
||||
(let [_ (assert-can-see-company (:id context) client_id)
|
||||
vendor (d-vendors/get-by-id vendor_id)
|
||||
@@ -48,19 +48,24 @@
|
||||
(->graphql))))
|
||||
|
||||
|
||||
(defn edit-invoice [context {{:keys [id invoice_number vendor_id company_id] :as in} :invoice} value]
|
||||
(defn edit-invoice [context {{:keys [id invoice_number total vendor_id date company_id] :as in} :invoice} value]
|
||||
|
||||
(let [invoice (invoices/get-by-id id)
|
||||
_ (when (seq (invoices/find-conflicting {:id id
|
||||
:invoice-number invoice_number
|
||||
:vendor-id (:vendor-id invoice)
|
||||
:company-id (:company-id invoice)}))
|
||||
|
||||
(let [invoice (d-invoices/get-by-id id)
|
||||
|
||||
_ (when (seq (doto (d-invoices/find-conflicting {:db/id (Long/parseLong id)
|
||||
:invoice/invoice-number invoice_number
|
||||
:invoice/vendor (:db/id (:invoice/vendor invoice))
|
||||
:invoice/client (:db/id (:invoice/client invoice))})
|
||||
println))
|
||||
(throw (ex-info (str "Invoice '" invoice_number "' already exists.") {:invoice-number invoice_number})))
|
||||
paid-amount (- (:total invoice) (:outstanding-balance invoice))
|
||||
_ (assert-can-see-company (:id context) (:company-id invoice))
|
||||
updated-invoice (invoices/update (-> in
|
||||
(update :date parse iso-date)
|
||||
(assoc :outstanding-balance (- (:total in) paid-amount))))]
|
||||
paid-amount (- (:invoice/total invoice) (:invoice/outstanding-balance invoice))
|
||||
_ (assert-can-see-company (:id context) (:db/id (:client invoice)))
|
||||
updated-invoice (d-invoices/update {:db/id (Long/parseLong id)
|
||||
:invoice/invoice-number invoice_number
|
||||
:invoice/date (coerce/to-date (parse date iso-date))
|
||||
:invoice/total total
|
||||
:invoice/outstanding-balance (- total paid-amount)})]
|
||||
(-> updated-invoice
|
||||
(->graphql))))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user