Files
integreat/src/cljs/auto_ap/views/pages/pos/form.cljs

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