89 lines
3.0 KiB
Clojure
89 lines
3.0 KiB
Clojure
(ns auto-ap.views.pages.pos.form
|
|
(:require
|
|
[auto-ap.forms :as forms]
|
|
[auto-ap.subs :as subs]
|
|
[auto-ap.views.components.layouts :as layouts]
|
|
[auto-ap.views.components.money-field :refer [money-field]]
|
|
[auto-ap.views.components.typeahead :refer [typeahead-v3]]
|
|
[auto-ap.views.utils
|
|
:refer [date->str date-picker dispatch-event standard]]
|
|
[re-frame.core :as re-frame]
|
|
[auto-ap.forms.builder :as form-builder]))
|
|
|
|
(re-frame/reg-sub
|
|
::can-submit
|
|
:<- [::forms/form ::form]
|
|
(fn [{:keys [data status]} _]
|
|
false))
|
|
|
|
(re-frame/reg-event-db
|
|
::editing
|
|
(fn [db [_ which]]
|
|
(let [which (update which :date #(date->str % standard))]
|
|
(forms/start-form db ::form which))))
|
|
|
|
|
|
(defn form []
|
|
[layouts/side-bar {:on-close (dispatch-event [::forms/form-closing ::form ])}
|
|
(let [{:keys [data]} @(re-frame/subscribe [::forms/form ::form])]
|
|
[form-builder/builder {:can-submit [::can-submit]
|
|
:submit-event [::saving ]
|
|
:id ::form}
|
|
[form-builder/section {:title "Sales Order"}
|
|
(when-not @(re-frame/subscribe [::subs/client])
|
|
[form-builder/field
|
|
"Client"
|
|
[typeahead-v3 {:entities @(re-frame/subscribe [::subs/clients])
|
|
:entity->text :name
|
|
:type "typeahead-v3"
|
|
:field [:client]
|
|
:disabled true}]])
|
|
|
|
|
|
[form-builder/field "Date"
|
|
[date-picker {:type "date"
|
|
:output :cljs-date
|
|
:disabled true
|
|
:field [:date]}]]
|
|
[form-builder/field
|
|
"Total"
|
|
[money-field {:type "money"
|
|
:field [:total]
|
|
:disabled true}]]
|
|
[form-builder/field "Tax"
|
|
[money-field {:type "money"
|
|
:field [:tax]
|
|
:disabled true}]
|
|
[form-builder/field
|
|
"Discount"
|
|
[money-field {:type "money"
|
|
:field [:discount]
|
|
:disabled true}]]]
|
|
|
|
[form-builder/field "Returns"
|
|
[money-field {:type "money"
|
|
:field [:returns]
|
|
:disabled true}]]
|
|
|
|
[form-builder/field "Service Charge"
|
|
[money-field {:type "money"
|
|
:field [:service-charge]
|
|
:disabled true}]]
|
|
|
|
[form-builder/field
|
|
"Tip"
|
|
[money-field {:type "money"
|
|
:field [:tip]
|
|
:disabled true}]]
|
|
|
|
[form-builder/section {:title "Charges"}
|
|
[:ul
|
|
(for [charge (:charges data)]
|
|
[:li (:type-name charge) ": " (:total charge)])]]
|
|
|
|
[form-builder/section {:title "Line Items"}
|
|
[:ul
|
|
(for [line-item (:line-items data)]
|
|
[:li (:item-name line-item) ": " (:total line-item) [:span.tag (:category line-item)]])]]]])])
|
|
|