Nearly able to create invoices manually
This commit is contained in:
@@ -38,6 +38,49 @@
|
||||
[:invoice-expense-account/location :string]
|
||||
[:invoice-expense-account/amount money]]]]])
|
||||
|
||||
(defn clientize-vendor [{:vendor/keys [terms-overrides automatically-paid-when-due default-account account-overrides] :as vendor} client-id]
|
||||
(let [terms-override (->> terms-overrides
|
||||
(filter (fn [to]
|
||||
(= (->db-id (:vendor-terms-override/client to))
|
||||
client-id)))
|
||||
(map :vendor-terms-override/terms)
|
||||
first)
|
||||
account (or (->> account-overrides
|
||||
(filter (fn [to]
|
||||
(= (->db-id (:vendor-account-override/client to))
|
||||
client-id)))
|
||||
(map :vendor-account-override/account)
|
||||
first)
|
||||
default-account)
|
||||
account (d-accounts/clientize account client-id)
|
||||
|
||||
automatically-paid-when-due (->> automatically-paid-when-due
|
||||
(filter (fn [to]
|
||||
(= (->db-id to)
|
||||
client-id)))
|
||||
seq
|
||||
boolean)
|
||||
vendor (cond-> vendor
|
||||
terms-override (assoc :vendor/terms terms-override)
|
||||
true (assoc :vendor/automatically-paid-when-due automatically-paid-when-due
|
||||
:vendor/default-account account)
|
||||
true (dissoc :vendor/account-overrides :vendor/terms-overrides))]
|
||||
vendor))
|
||||
|
||||
|
||||
(defn get-vendor [vendor-id]
|
||||
(dc/pull
|
||||
(dc/db conn)
|
||||
[:vendor/terms
|
||||
:vendor/automatically-paid-when-due
|
||||
{:vendor/default-account d-accounts/default-read
|
||||
:vendor/account-overrides
|
||||
[:vendor-account-override/client
|
||||
{:vendor-account-override/account d-accounts/default-read}]}
|
||||
{:vendor/terms-overrides
|
||||
[:vendor-terms-override/client :vendor-terms-override/terms]}]
|
||||
vendor-id))
|
||||
|
||||
(defrecord BasicDetailsStep [linear-wizard]
|
||||
mm/ModalWizardStep
|
||||
(step-name [_]
|
||||
@@ -95,7 +138,7 @@
|
||||
:content-fn (fn [c] (pull-attr (dc/db conn) :vendor/name c))
|
||||
:x-model "vendorId"})]))
|
||||
|
||||
[:div.flex.space-x-8
|
||||
[:div.flex.gap-x-8.md:flex-row.flex-col
|
||||
(fc/with-field :invoice/date
|
||||
(com/validated-field
|
||||
{:label "Date"
|
||||
@@ -126,7 +169,6 @@
|
||||
:name (fc/field-name)
|
||||
:x-model "due"
|
||||
|
||||
:x-effect "console.log('hello due', [due])"
|
||||
:error? (fc/field-errors)
|
||||
:placeholder "1/1/2024"})]))
|
||||
(fc/with-field :invoice/scheduled-payment
|
||||
@@ -138,7 +180,6 @@
|
||||
|
||||
:hx-put (bidi.bidi/path-for ssr-routes/only-routes ::route/scheduled-payment-date)
|
||||
:x-dispatch:changed "[clientId, vendorId, due]"
|
||||
:x-effect "console.log('hello', [clientId, vendorId, due])"
|
||||
:hx-trigger "changed"
|
||||
:hx-target "this"
|
||||
:hx-swap "innerHTML"}
|
||||
@@ -254,7 +295,7 @@
|
||||
(defrecord AccountsStep [linear-wizard]
|
||||
mm/ModalWizardStep
|
||||
(step-name [_]
|
||||
"Details")
|
||||
"Expense Accounts")
|
||||
(step-key [_]
|
||||
:accounts)
|
||||
|
||||
@@ -293,13 +334,11 @@
|
||||
:validation-route ::route/new-wizard-navigate))
|
||||
mm/Initializable
|
||||
(init-step-params
|
||||
[_ request]
|
||||
(alog/peek ::INIT {:invoice/expense-accounts [{:db/id "123"
|
||||
:invoice-expense-account/amount 100}]})
|
||||
[_ current request]
|
||||
{:invoice/expense-accounts [{:db/id "123"
|
||||
:invoice-expense-account/location "Shared"
|
||||
:invoice-expense-account/account (ffirst (dc/q '[:find ?a :where [?a :account/name]]
|
||||
(dc/db conn)))
|
||||
:invoice-expense-account/account (:db/id (:vendor/default-account (clientize-vendor (get-vendor (->db-id (:invoice/vendor (:snapshot current))))
|
||||
(->db-id (:invoice/client (:snapshot current))))))
|
||||
:invoice-expense-account/amount 100}]}))
|
||||
|
||||
|
||||
@@ -353,63 +392,7 @@
|
||||
(pull-attr (dc/db conn) :account/location))
|
||||
:client-locations (some->> client-id
|
||||
(pull-attr (dc/db conn) :client/locations))})))
|
||||
(defn clientize-vendor [{:vendor/keys [terms-overrides automatically-paid-when-due default-account account-overrides] :as vendor} client-id]
|
||||
(let [terms-override (->> terms-overrides
|
||||
(filter (fn [to]
|
||||
(= (->db-id (:vendor-terms-override/client to))
|
||||
client-id)))
|
||||
(map :vendor-terms-override/terms)
|
||||
first)
|
||||
account (or (->> account-overrides
|
||||
(filter (fn [to]
|
||||
(= (->db-id (:vendor-account-override/client to))
|
||||
client-id)))
|
||||
(map :vendor-account-override/account)
|
||||
first)
|
||||
default-account)
|
||||
account (d-accounts/clientize account client-id)
|
||||
|
||||
automatically-paid-when-due (->> automatically-paid-when-due
|
||||
(filter (fn [to]
|
||||
(= (->db-id to)
|
||||
client-id)))
|
||||
seq
|
||||
boolean)
|
||||
vendor (cond-> vendor
|
||||
terms-override (assoc :vendor/terms terms-override)
|
||||
true (assoc :vendor/automatically-paid-when-due automatically-paid-when-due
|
||||
:vendor/default-account account)
|
||||
true (dissoc :vendor/account-overrides :vendor/terms-overrides))]
|
||||
vendor))
|
||||
|
||||
|
||||
(comment
|
||||
(clojure.pprint/pprint
|
||||
(clientize-vendor (dc/pull
|
||||
(dc/db conn)
|
||||
[:vendor/terms
|
||||
:vendor/automatically-paid-when-due
|
||||
{:vendor/default-account d-accounts/default-read
|
||||
:vendor/account-overrides
|
||||
[:vendor-account-override/client
|
||||
{:vendor-account-override/account d-accounts/default-read}]}
|
||||
{:vendor/terms-overrides
|
||||
[:vendor-terms-override/client :vendor-terms-override/terms]}]
|
||||
(ffirst (dc/q '[:find ?v :in $ :where [?v :vendor/name "Sysco"]] (dc/db conn))))
|
||||
(pull-attr (dc/db conn) :db/id [:client/code "DEMO"]))))
|
||||
|
||||
(defn get-vendor [vendor-id]
|
||||
(dc/pull
|
||||
(dc/db conn)
|
||||
[:vendor/terms
|
||||
:vendor/automatically-paid-when-due
|
||||
{:vendor/default-account d-accounts/default-read
|
||||
:vendor/account-overrides
|
||||
[:vendor-account-override/client
|
||||
{:vendor-account-override/account d-accounts/default-read}]}
|
||||
{:vendor/terms-overrides
|
||||
[:vendor-terms-override/client :vendor-terms-override/terms]}]
|
||||
vendor-id))
|
||||
|
||||
(defn due-date [{:keys [multi-form-state]}]
|
||||
(alog/peek ::date multi-form-state)
|
||||
|
||||
Reference in New Issue
Block a user