only one way to change invoices -> datomic!

This commit is contained in:
Bryce Covert
2018-09-03 16:31:37 -07:00
parent 11a9e3c39c
commit 3ea31e8836
4 changed files with 40 additions and 25 deletions

View File

@@ -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))))