lots of fixes.
This commit is contained in:
@@ -33,7 +33,7 @@
|
||||
:db/fn (d/function '{:lang "clojure"
|
||||
:params [db e a amount]
|
||||
:code [[:db/add e a
|
||||
(-> (d/entity db e) a (+ amount))]] })}]] )
|
||||
(-> (d/entity db e) a (+ amount))]] })}]] )
|
||||
|
||||
(defn fix-pay-function [conn]
|
||||
[[{:db/ident :pay
|
||||
@@ -53,6 +53,24 @@
|
||||
:db/valueType :db.type/string
|
||||
:db/cardinality :db.cardinality/one}]])
|
||||
|
||||
(defn reset-function [conn]
|
||||
[[{:db/ident :reset
|
||||
:db/doc "Resets a relationship to the values specified "
|
||||
:db/fn (d/function '{:lang "clojure"
|
||||
:params [db e a vs]
|
||||
:code (let [ids (when-not (string? e)
|
||||
(->> (d/query {:query {:find ['?z]
|
||||
:in ['$ '?e '?a]
|
||||
:where [['?e '?a '?z]]}
|
||||
:args [db e a]})
|
||||
(map first)))
|
||||
new-id-set (set (map :db/id vs))
|
||||
retract-ids (filter (complement new-id-set) ids)]
|
||||
(cond-> []
|
||||
true (into (map (fn [i] [:db/retractEntity i ]) retract-ids))
|
||||
(seq vs) (conj {:db/id e
|
||||
a vs})))})}]])
|
||||
|
||||
(defn -main [& args]
|
||||
(println "Creating database ..." uri)
|
||||
(doto (d/create-database uri) println)
|
||||
@@ -174,7 +192,7 @@
|
||||
:db/doc "Overrides per-client"
|
||||
:db/valueType :db.type/ref
|
||||
:db/cardinality :db.cardinality/many}]]}
|
||||
}]
|
||||
:auto-ap/add-reset-rels {:txes-fn `reset-function}}]
|
||||
(println "Conforming database...")
|
||||
(c/ensure-conforms conn norms-map)
|
||||
(when (not (seq args))
|
||||
|
||||
@@ -39,11 +39,25 @@
|
||||
|
||||
|
||||
(defn terms-for-client-id [vendor client-id]
|
||||
(->>
|
||||
(filter
|
||||
(fn [to]
|
||||
(= (:db/id (:vendor-terms-override/client to))
|
||||
client-id))
|
||||
(:vendor/terms-overrides vendor))
|
||||
first
|
||||
:vendor-terms-override/terms))
|
||||
(or
|
||||
(->>
|
||||
(filter
|
||||
(fn [to]
|
||||
(= (:db/id (:vendor-terms-override/client to))
|
||||
client-id))
|
||||
(:vendor/terms-overrides vendor))
|
||||
first
|
||||
:vendor-terms-override/terms)
|
||||
(:vendor/terms vendor)))
|
||||
|
||||
(defn account-for-client-id [vendor client-id]
|
||||
(or
|
||||
(->>
|
||||
(filter
|
||||
(fn [to]
|
||||
(= (:db/id (:vendor-account-override/client to))
|
||||
client-id))
|
||||
(:vendor/account-overrides vendor))
|
||||
first
|
||||
:vendor-account-override/account)
|
||||
(:vendor/default-account vendor)))
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
(defn upsert-vendor [context {{:keys [id name hidden terms code print_as primary_contact secondary_contact address default_account_id invoice_reminder_schedule terms_overrides account_overrides] :as in} :vendor} value]
|
||||
(when id
|
||||
(assert-admin (:id context)))
|
||||
(let [term-overrides (mapv
|
||||
(let [terms-overrides (mapv
|
||||
(fn [to]
|
||||
(cond->
|
||||
#:vendor-terms-override {:client (:client_id to)
|
||||
@@ -25,47 +25,48 @@
|
||||
:account (:account_id ao)}
|
||||
(:id ao) (assoc :db/id (:id ao))))
|
||||
account_overrides)
|
||||
transaction [(remove-nils #:vendor {:db/id (if id
|
||||
id
|
||||
"vendor")
|
||||
:name name
|
||||
:code code
|
||||
:hidden hidden
|
||||
:terms terms
|
||||
:print-as print_as
|
||||
:default-account default_account_id
|
||||
:invoice-reminder-schedule (keyword invoice_reminder_schedule)
|
||||
:term-overrides (when (is-admin? (:id context))
|
||||
term-overrides)
|
||||
:account-overrides (when (is-admin? (:id context))
|
||||
account-overrides)
|
||||
:address (when address
|
||||
(remove-nils #:address {:db/id (if (:id address)
|
||||
(:id address)
|
||||
"address")
|
||||
:street1 (:street1 address)
|
||||
:street2 (:street2 address)
|
||||
:city (:city address)
|
||||
:state (:state address)
|
||||
:zip (:zip address)}))
|
||||
:primary-contact (when primary_contact
|
||||
transaction (cond->
|
||||
[(remove-nils #:vendor {:db/id (if id
|
||||
id
|
||||
"vendor")
|
||||
:name name
|
||||
:code code
|
||||
:hidden hidden
|
||||
:terms terms
|
||||
:print-as print_as
|
||||
:default-account default_account_id
|
||||
:invoice-reminder-schedule (keyword invoice_reminder_schedule)
|
||||
|
||||
|
||||
:address (when address
|
||||
(remove-nils #:address {:db/id (if (:id address)
|
||||
(:id address)
|
||||
"address")
|
||||
:street1 (:street1 address)
|
||||
:street2 (:street2 address)
|
||||
:city (:city address)
|
||||
:state (:state address)
|
||||
:zip (:zip address)}))
|
||||
:primary-contact (when primary_contact
|
||||
|
||||
(remove-nils #:contact {:db/id (if (:id primary_contact)
|
||||
(:id primary_contact)
|
||||
"primary")
|
||||
:name (:name primary_contact)
|
||||
:phone (:phone primary_contact)
|
||||
:email (:email primary_contact)}))
|
||||
|
||||
:secondary-contact (when secondary_contact
|
||||
(remove-nils #:contact {:db/id (if (:id primary_contact)
|
||||
(:id primary_contact)
|
||||
"primary")
|
||||
:name (:name primary_contact)
|
||||
:phone (:phone primary_contact)
|
||||
:email (:email primary_contact)}))
|
||||
|
||||
:secondary-contact (when secondary_contact
|
||||
|
||||
(remove-nils #:contact {:db/id (if (:id secondary_contact)
|
||||
(:id secondary_contact)
|
||||
"secondary")
|
||||
:name (:name secondary_contact)
|
||||
:phone (:phone secondary_contact)
|
||||
:email (:email secondary_contact)})
|
||||
)})]
|
||||
(remove-nils #:contact {:db/id (if (:id secondary_contact)
|
||||
(:id secondary_contact)
|
||||
"secondary")
|
||||
:name (:name secondary_contact)
|
||||
:phone (:phone secondary_contact)
|
||||
:email (:email secondary_contact)})
|
||||
)})]
|
||||
(is-admin? (:id context)) (conj [:reset (if id id "vendor") :vendor/account-overrides account-overrides])
|
||||
(is-admin? (:id context)) (conj [:reset (if id id "vendor") :vendor/terms-overrides terms-overrides]))
|
||||
transaction-result @(d/transact (d/connect uri) transaction)]
|
||||
|
||||
(-> (d-vendors/get-by-id (or (-> transaction-result :tempids (get "vendor"))
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
|
||||
|
||||
(defn template-applies? [text {:keys [keywords]}]
|
||||
(println text)
|
||||
(every? #(re-find % text) keywords))
|
||||
|
||||
(defn extract-template
|
||||
|
||||
@@ -11,7 +11,9 @@
|
||||
[auto-ap.parse.util :as parse-u]
|
||||
[auto-ap.graphql.utils :refer [assert-admin]]
|
||||
[auto-ap.routes.utils :refer [wrap-secure]]
|
||||
[clj-time.coerce :refer [to-date]]
|
||||
|
||||
[clj-time.core :as time]
|
||||
[clj-time.coerce :as coerce :refer [to-date]]
|
||||
[ring.middleware.json :refer [wrap-json-response]]
|
||||
[compojure.core :refer [GET POST context defroutes
|
||||
wrap-routes]]
|
||||
@@ -126,26 +128,28 @@
|
||||
(defn invoice-rows->transaction [rows]
|
||||
(->> rows
|
||||
(mapcat (fn [{:keys [vendor-id total client-id amount date invoice-number default-location account-id check vendor]}]
|
||||
(println account-id vendor)
|
||||
(let [invoice #:invoice {:db/id (.toString (java.util.UUID/randomUUID))
|
||||
:vendor vendor-id
|
||||
:client client-id
|
||||
:default-location default-location
|
||||
:import-status :import-status/imported
|
||||
#_#_:default-expense-account default-expense-account
|
||||
:total total
|
||||
:outstanding-balance (if (= "Cash" check)
|
||||
0.0
|
||||
total)
|
||||
:status (if (= "Cash" check)
|
||||
:invoice-status/paid
|
||||
:invoice-status/unpaid)
|
||||
:invoice-number invoice-number
|
||||
:date (to-date date)
|
||||
:expense-accounts [#:invoice-expense-account {:account (or account-id
|
||||
(-> vendor :vendor/default-account :db/id))
|
||||
:location default-location
|
||||
:amount total}]}
|
||||
(let [invoice (cond->
|
||||
#:invoice {:db/id (.toString (java.util.UUID/randomUUID))
|
||||
:vendor vendor-id
|
||||
:client client-id
|
||||
:default-location default-location
|
||||
:import-status :import-status/imported
|
||||
#_#_:default-expense-account default-expense-account
|
||||
:total total
|
||||
:outstanding-balance (if (= "Cash" check)
|
||||
0.0
|
||||
total)
|
||||
:status (if (= "Cash" check)
|
||||
:invoice-status/paid
|
||||
:invoice-status/unpaid)
|
||||
:invoice-number invoice-number
|
||||
:date (to-date date)
|
||||
:expense-accounts [#:invoice-expense-account {:account (or account-id
|
||||
(:db/id (d-vendors/account-for-client-id vendor client-id)))
|
||||
:location default-location
|
||||
:amount total}]}
|
||||
(:vendor/terms vendor) (assoc :invoice/due (coerce/to-date
|
||||
(time/plus date (time/days (d-vendors/terms-for-client-id vendor client-id))))))
|
||||
payment (if (= :invoice-status/paid (:invoice/status invoice))
|
||||
#:invoice-payment {:invoice (:db/id invoice)
|
||||
:amount (:invoice/total invoice)
|
||||
|
||||
Reference in New Issue
Block a user