Makes browsing work rigth
This commit is contained in:
@@ -104,14 +104,21 @@
|
|||||||
match->handler))
|
match->handler))
|
||||||
|
|
||||||
(defn wrap-guess-route [handler]
|
(defn wrap-guess-route [handler]
|
||||||
(fn [{:keys [uri request-method] :as request}]
|
(fn [{:keys [uri request-method headers] :as request}]
|
||||||
(let [matched-route (:handler
|
(let [matched-route (:handler
|
||||||
(bidi.bidi/match-route all-routes
|
(bidi.bidi/match-route all-routes
|
||||||
uri
|
uri
|
||||||
:request-method request-method))]
|
:request-method request-method))
|
||||||
|
matched-hx-current-url-route (some->> (get headers "hx-current-url")
|
||||||
|
url/url
|
||||||
|
:path
|
||||||
|
(bidi/match-route ssr-routes/only-routes)
|
||||||
|
:handler)]
|
||||||
(handler (assoc request
|
(handler (assoc request
|
||||||
:matched-route
|
:matched-route
|
||||||
matched-route)))))
|
matched-route
|
||||||
|
:matched-current-page-route
|
||||||
|
matched-hx-current-url-route)))))
|
||||||
|
|
||||||
(defn test-match-route [method uri]
|
(defn test-match-route [method uri]
|
||||||
(bidi.bidi/match-route all-routes
|
(bidi.bidi/match-route all-routes
|
||||||
|
|||||||
@@ -78,12 +78,12 @@
|
|||||||
[:ul {:class "space-y-1"
|
[:ul {:class "space-y-1"
|
||||||
:x-data (hx/json {:selected
|
:x-data (hx/json {:selected
|
||||||
(cond
|
(cond
|
||||||
(#{::invoice-route/page} (:matched-route request))
|
(#{::invoice-route/all-page ::invoice-route/unpaid-page ::invoice-route/voided-page ::invoice-route/paid-page} (:matched-route request))
|
||||||
"invoices"
|
"invoices"
|
||||||
|
|
||||||
(#{:pos-sales :pos-expected-deposits :pos-tenders :pos-refunds :pos-cash-drawer-shifts} (:matched-route request))
|
(#{:pos-sales :pos-expected-deposits :pos-tenders :pos-refunds :pos-cash-drawer-shifts} (:matched-route request))
|
||||||
"sales"
|
"sales"
|
||||||
(#{::payment-routes/page} (:matched-route request))
|
(#{::payment-routes/all-page ::payment-routes/pending-page ::payment-routes/cleared-page ::payment-routes/voided-page } (:matched-route request))
|
||||||
"payments"
|
"payments"
|
||||||
:else
|
:else
|
||||||
nil)})}
|
nil)})}
|
||||||
@@ -99,25 +99,25 @@
|
|||||||
(sub-menu-
|
(sub-menu-
|
||||||
{:selector "invoices"}
|
{:selector "invoices"}
|
||||||
(menu-button- {:href (hu/url (bidi/path-for ssr-routes/only-routes
|
(menu-button- {:href (hu/url (bidi/path-for ssr-routes/only-routes
|
||||||
::invoice-route/page)
|
::invoice-route/all-page)
|
||||||
{:date-range "month"})
|
{:date-range "month"})
|
||||||
:active? (= ::invoice-route/page (:matched-route request))}
|
:active? (= ::invoice-route/all-page (:matched-route request))}
|
||||||
|
|
||||||
"All")
|
"All")
|
||||||
(menu-button- {:href (hu/url (bidi/path-for ssr-routes/only-routes
|
(menu-button- {:href (hu/url (bidi/path-for ssr-routes/only-routes
|
||||||
::invoice-route/page)
|
::invoice-route/paid-page)
|
||||||
{:date-range "month"})
|
{:date-range "month"})
|
||||||
:active? (= ::invoice-route/page (:matched-route request))}
|
:active? (= ::invoice-route/paid-page (:matched-route request))}
|
||||||
"Paid")
|
"Paid")
|
||||||
(menu-button- {:href (hu/url (bidi/path-for ssr-routes/only-routes
|
(menu-button- {:href (hu/url (bidi/path-for ssr-routes/only-routes
|
||||||
::invoice-route/unpaid-page)
|
::invoice-route/unpaid-page)
|
||||||
{:date-range "month"})
|
{:date-range "month"})
|
||||||
:active? (= ::invoice-route/page (:matched-route request))}
|
:active? (= ::invoice-route/unpaid-page (:matched-route request))}
|
||||||
"Unpaid")
|
"Unpaid")
|
||||||
(menu-button- {:href (hu/url (bidi/path-for ssr-routes/only-routes
|
(menu-button- {:href (hu/url (bidi/path-for ssr-routes/only-routes
|
||||||
::invoice-route/voided-page)
|
::invoice-route/voided-page)
|
||||||
{:date-range "month"})
|
{:date-range "month"})
|
||||||
:active? (= ::invoice-route/page (:matched-route request))}
|
:active? (= ::invoice-route/voided-page (:matched-route request))}
|
||||||
"Voided"))
|
"Voided"))
|
||||||
|
|
||||||
(menu-button- {:icon svg/receipt-register-1
|
(menu-button- {:icon svg/receipt-register-1
|
||||||
@@ -155,25 +155,22 @@
|
|||||||
"Payments")
|
"Payments")
|
||||||
(sub-menu- {:selector "payments"}
|
(sub-menu- {:selector "payments"}
|
||||||
(menu-button- {:href (hu/url (bidi/path-for ssr-routes/only-routes
|
(menu-button- {:href (hu/url (bidi/path-for ssr-routes/only-routes
|
||||||
::payment-routes/page)
|
::payment-routes/all-page)
|
||||||
{:date-range "month"})
|
{:date-range "month"})
|
||||||
:active? (= ::payment-routes/page (:matched-route request))} "All")
|
:active? (= ::payment-routes/all-page (:matched-route request))} "All")
|
||||||
|
|
||||||
(menu-button- {:href (hu/url (bidi/path-for ssr-routes/only-routes
|
(menu-button- {:href (hu/url (bidi/path-for ssr-routes/only-routes
|
||||||
::payment-routes/page)
|
::payment-routes/pending-page)
|
||||||
{:status "pending"
|
{ :date-range "month"})
|
||||||
:date-range "month"})
|
:active? (= ::payment-routes/pending-page (:matched-route request))} "Pending")
|
||||||
:active? (= ::payment-routes/page (:matched-route request))} "Pending")
|
|
||||||
(menu-button- {:href (hu/url (bidi/path-for ssr-routes/only-routes
|
(menu-button- {:href (hu/url (bidi/path-for ssr-routes/only-routes
|
||||||
::payment-routes/page)
|
::payment-routes/cleared-page)
|
||||||
{:status "cleared"
|
{ :date-range "month"})
|
||||||
:date-range "month"})
|
:active? (= ::payment-routes/cleared-page (:matched-route request))} "Cleared")
|
||||||
:active? (= ::payment-routes/page (:matched-route request))} "Cleared")
|
|
||||||
(menu-button- {:href (hu/url (bidi/path-for ssr-routes/only-routes
|
(menu-button- {:href (hu/url (bidi/path-for ssr-routes/only-routes
|
||||||
::payment-routes/page)
|
::payment-routes/voided-page)
|
||||||
{:status "voided"
|
{ :date-range "month"})
|
||||||
:date-range "month"})
|
:active? (= ::payment-routes/voided-page (:matched-route request))} "Voided"))
|
||||||
:active? (= ::payment-routes/page (:matched-route request))} "Voided"))
|
|
||||||
|
|
||||||
[:li {:x-data (hx/json {:open false})}
|
[:li {:x-data (hx/json {:open false})}
|
||||||
(menu-button- {"@click.prevent" "if (selected == 'transactions') {selected = null } else { selected = 'transactions'} "
|
(menu-button- {"@click.prevent" "if (selected == 'transactions') {selected = null } else { selected = 'transactions'} "
|
||||||
|
|||||||
@@ -35,8 +35,8 @@
|
|||||||
:refer [apply-middleware-to-all-handlers clj-date-schema
|
:refer [apply-middleware-to-all-handlers clj-date-schema
|
||||||
dissoc-nil-transformer entity-id html-response
|
dissoc-nil-transformer entity-id html-response
|
||||||
main-transformer modal-response money ref->enum-schema
|
main-transformer modal-response money ref->enum-schema
|
||||||
round-money strip wrap-entity wrap-merge-prior-hx
|
round-money strip wrap-entity wrap-implied-route-param
|
||||||
wrap-schema-enforce]]
|
wrap-merge-prior-hx wrap-schema-enforce]]
|
||||||
[auto-ap.time :as atime]
|
[auto-ap.time :as atime]
|
||||||
[auto-ap.utils :refer [by dollars=]]
|
[auto-ap.utils :refer [by dollars=]]
|
||||||
[bidi.bidi :as bidi]
|
[bidi.bidi :as bidi]
|
||||||
@@ -132,13 +132,13 @@
|
|||||||
{:account-client-override/client [:db/id]}]}]}]
|
{:account-client-override/client [:db/id]}]}]}]
|
||||||
[:transaction/_invoices :as :invoice/transaction] [:db/id]
|
[:transaction/_invoices :as :invoice/transaction] [:db/id]
|
||||||
[:payment/_invoices :as :invoice/payments] [:db/id :payment/date :payment/amount
|
[:payment/_invoices :as :invoice/payments] [:db/id :payment/date :payment/amount
|
||||||
|
|
||||||
{[:transaction/_payment :as :payment/transaction] [:db/id]
|
{[:transaction/_payment :as :payment/transaction] [:db/id]
|
||||||
[ :payment/status :xform iol-ion.query/ident] [:db/ident] }]
|
[:payment/status :xform iol-ion.query/ident] [:db/ident]}]
|
||||||
[:invoice/status :xform iol-ion.query/ident] [:db/ident]
|
[:invoice/status :xform iol-ion.query/ident] [:db/ident]
|
||||||
:invoice/vendor [:vendor/name :db/id]}])
|
:invoice/vendor [:vendor/name :db/id]}])
|
||||||
|
|
||||||
(defn fetch-ids [db {:keys [query-params] :as request}]
|
(defn fetch-ids [db {:keys [query-params route-params] :as request}]
|
||||||
(let [valid-clients (extract-client-ids (:clients request)
|
(let [valid-clients (extract-client-ids (:clients request)
|
||||||
(:client-id request)
|
(:client-id request)
|
||||||
(when (:client-code request)
|
(when (:client-code request)
|
||||||
@@ -187,10 +187,10 @@
|
|||||||
(merge-query {:query {:in ['?import-status]
|
(merge-query {:query {:in ['?import-status]
|
||||||
:where ['[?e :invoice/import-status ?import-status]]}
|
:where ['[?e :invoice/import-status ?import-status]]}
|
||||||
:args [(:import-status query-params)]})
|
:args [(:import-status query-params)]})
|
||||||
(:status query-params)
|
(:status route-params)
|
||||||
(merge-query {:query {:in ['?status]
|
(merge-query {:query {:in ['?status]
|
||||||
:where ['[?e :invoice/status ?status]]}
|
:where ['[?e :invoice/status ?status]]}
|
||||||
:args [(:status query-params)]})
|
:args [(:status route-params)]})
|
||||||
(:vendor query-params)
|
(:vendor query-params)
|
||||||
(merge-query {:query {:in ['?vendor-id]
|
(merge-query {:query {:in ['?vendor-id]
|
||||||
:where ['[?e :invoice/vendor ?vendor-id]]}
|
:where ['[?e :invoice/vendor ?vendor-id]]}
|
||||||
@@ -476,7 +476,7 @@
|
|||||||
(concat (->> i
|
(concat (->> i
|
||||||
:invoice/payments
|
:invoice/payments
|
||||||
(filter (fn [p]
|
(filter (fn [p]
|
||||||
(not= :payment-status/voided
|
(not= :payment-status/voided
|
||||||
(:payment/status p))))
|
(:payment/status p))))
|
||||||
(mapcat (fn [p]
|
(mapcat (fn [p]
|
||||||
(cond-> [{:link (hu/url (bidi/path-for ssr-routes/only-routes
|
(cond-> [{:link (hu/url (bidi/path-for ssr-routes/only-routes
|
||||||
@@ -1028,9 +1028,26 @@
|
|||||||
(->PayWizard nil nil nil))
|
(->PayWizard nil nil nil))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
(defn wrap-status-from-source [handler]
|
||||||
|
(fn [{:keys [matched-current-page-route] :as request}]
|
||||||
|
(let [ request (cond-> request
|
||||||
|
(= ::route/paid-page matched-current-page-route) (assoc-in [:route-params :status] :invoice-status/paid)
|
||||||
|
(= ::route/unpaid-page matched-current-page-route) (assoc-in [:route-params :status] :invoice-status/unpaid)
|
||||||
|
(= ::route/voided-page matched-current-page-route) (assoc-in [:route-params :status] :invoice-status/voided)
|
||||||
|
(= ::route/all-page matched-current-page-route) (assoc-in [:route-params :status] nil))]
|
||||||
|
(handler request))))
|
||||||
|
|
||||||
(def key->handler
|
(def key->handler
|
||||||
(apply-middleware-to-all-handlers
|
(apply-middleware-to-all-handlers
|
||||||
{::route/page (helper/page-route grid-page)
|
{::route/all-page (-> (helper/page-route grid-page)
|
||||||
|
(wrap-implied-route-param :status nil))
|
||||||
|
::route/paid-page (-> (helper/page-route grid-page)
|
||||||
|
(wrap-implied-route-param :status :invoice-status/paid))
|
||||||
|
::route/unpaid-page (-> (helper/page-route grid-page)
|
||||||
|
(wrap-implied-route-param :status :invoice-status/unpaid))
|
||||||
|
::route/voided-page (-> (helper/page-route grid-page)
|
||||||
|
(wrap-implied-route-param :status :invoice-status/voided))
|
||||||
::route/pay-button (-> pay-button
|
::route/pay-button (-> pay-button
|
||||||
(wrap-schema-enforce :query-schema query-schema))
|
(wrap-schema-enforce :query-schema query-schema))
|
||||||
::route/delete (-> delete
|
::route/delete (-> delete
|
||||||
@@ -1096,6 +1113,7 @@
|
|||||||
::route/table (helper/table-route grid-page)}
|
::route/table (helper/table-route grid-page)}
|
||||||
(fn [h]
|
(fn [h]
|
||||||
(-> h
|
(-> h
|
||||||
|
(wrap-status-from-source)
|
||||||
(wrap-apply-sort grid-page)
|
(wrap-apply-sort grid-page)
|
||||||
(wrap-merge-prior-hx)
|
(wrap-merge-prior-hx)
|
||||||
(wrap-schema-enforce :query-schema query-schema)
|
(wrap-schema-enforce :query-schema query-schema)
|
||||||
|
|||||||
@@ -9,8 +9,8 @@
|
|||||||
extract-client-ids notify-if-locked]]
|
extract-client-ids notify-if-locked]]
|
||||||
[auto-ap.logging :as alog]
|
[auto-ap.logging :as alog]
|
||||||
[auto-ap.permissions :refer [can?]]
|
[auto-ap.permissions :refer [can?]]
|
||||||
[auto-ap.routes.payments :as route]
|
|
||||||
[auto-ap.routes.invoice :as invoice-route]
|
[auto-ap.routes.invoice :as invoice-route]
|
||||||
|
[auto-ap.routes.payments :as route]
|
||||||
[auto-ap.routes.utils
|
[auto-ap.routes.utils
|
||||||
:refer [wrap-admin wrap-client-redirect-unauthenticated]]
|
:refer [wrap-admin wrap-client-redirect-unauthenticated]]
|
||||||
[auto-ap.ssr-routes :as ssr-routes]
|
[auto-ap.ssr-routes :as ssr-routes]
|
||||||
@@ -25,7 +25,8 @@
|
|||||||
:refer [apply-middleware-to-all-handlers clj-date-schema
|
:refer [apply-middleware-to-all-handlers clj-date-schema
|
||||||
dissoc-nil-transformer entity-id html-response
|
dissoc-nil-transformer entity-id html-response
|
||||||
main-transformer modal-response ref->enum-schema strip
|
main-transformer modal-response ref->enum-schema strip
|
||||||
wrap-entity wrap-merge-prior-hx wrap-schema-enforce]]
|
wrap-entity wrap-implied-route-param wrap-merge-prior-hx
|
||||||
|
wrap-schema-enforce]]
|
||||||
[auto-ap.time :as atime]
|
[auto-ap.time :as atime]
|
||||||
[bidi.bidi :as bidi]
|
[bidi.bidi :as bidi]
|
||||||
[clj-time.coerce :as coerce]
|
[clj-time.coerce :as coerce]
|
||||||
@@ -128,9 +129,8 @@
|
|||||||
{:payment/type [:db/ident]}
|
{:payment/type [:db/ident]}
|
||||||
{:transaction/_payment [:db/id :transaction/date]}])
|
{:transaction/_payment [:db/id :transaction/date]}])
|
||||||
|
|
||||||
(defn fetch-ids [db {:keys [query-params] :as request}]
|
(defn fetch-ids [db {:keys [query-params route-params] :as request}]
|
||||||
(let [_ (alog/peek :qp (pr-str query-params))
|
(let [ valid-clients (extract-client-ids (:clients request)
|
||||||
valid-clients (extract-client-ids (:clients request)
|
|
||||||
(:client request)
|
(:client request)
|
||||||
(:client-id query-params)
|
(:client-id query-params)
|
||||||
(when (:client-code query-params)
|
(when (:client-code query-params)
|
||||||
@@ -213,10 +213,10 @@
|
|||||||
:args [(:amount query-params)]})
|
:args [(:amount query-params)]})
|
||||||
|
|
||||||
|
|
||||||
(:status query-params)
|
(:status route-params)
|
||||||
(merge-query {:query {:in ['?status]
|
(merge-query {:query {:in ['?status]
|
||||||
:where ['[?e :payment/status ?status]]}
|
:where ['[?e :payment/status ?status]]}
|
||||||
:args [(:status query-params)]})
|
:args [(:status route-params)]})
|
||||||
|
|
||||||
(:payment-type query-params)
|
(:payment-type query-params)
|
||||||
(merge-query {:query {:in '[?payment-type]
|
(merge-query {:query {:in '[?payment-type]
|
||||||
@@ -517,11 +517,26 @@
|
|||||||
updated-count
|
updated-count
|
||||||
(count ids))})})))
|
(count ids))})})))
|
||||||
|
|
||||||
|
(defn wrap-status-from-source [handler]
|
||||||
|
(fn [{:keys [matched-current-page-route] :as request}]
|
||||||
|
(let [ request (cond-> request
|
||||||
|
(= ::route/cleared-page matched-current-page-route) (assoc-in [:route-params :status] :payment-status/cleared)
|
||||||
|
(= ::route/pending-page matched-current-page-route) (assoc-in [:route-params :status] :payment-status/pending)
|
||||||
|
(= ::route/voided-page matched-current-page-route) (assoc-in [:route-params :status] :payment-status/voided)
|
||||||
|
(= ::route/all-page matched-current-page-route) (assoc-in [:route-params :status] nil))]
|
||||||
|
(handler request))))
|
||||||
|
|
||||||
(def key->handler
|
(def key->handler
|
||||||
(apply-middleware-to-all-handlers
|
(apply-middleware-to-all-handlers
|
||||||
{::route/page (helper/page-route grid-page)
|
{::route/cleared-page (-> (helper/page-route grid-page)
|
||||||
|
(wrap-implied-route-param :status :payment-status/cleared))
|
||||||
|
::route/pending-page (-> (helper/page-route grid-page)
|
||||||
|
(wrap-implied-route-param :status :payment-status/pending))
|
||||||
|
::route/voided-page (-> (helper/page-route grid-page)
|
||||||
|
(wrap-implied-route-param :status :payment-status/voided))
|
||||||
|
::route/all-page (-> (helper/page-route grid-page)
|
||||||
|
(wrap-implied-route-param :status nil))
|
||||||
|
|
||||||
::route/delete (-> delete
|
::route/delete (-> delete
|
||||||
(wrap-entity [:route-params :db/id] default-read)
|
(wrap-entity [:route-params :db/id] default-read)
|
||||||
(wrap-schema-enforce :route-params [:map [:db/id entity-id]]))
|
(wrap-schema-enforce :route-params [:map [:db/id entity-id]]))
|
||||||
@@ -537,6 +552,7 @@
|
|||||||
(-> h
|
(-> h
|
||||||
(wrap-apply-sort grid-page)
|
(wrap-apply-sort grid-page)
|
||||||
(wrap-merge-prior-hx)
|
(wrap-merge-prior-hx)
|
||||||
|
(wrap-status-from-source)
|
||||||
(wrap-schema-enforce :query-schema query-schema)
|
(wrap-schema-enforce :query-schema query-schema)
|
||||||
(wrap-schema-enforce :hx-schema query-schema)
|
(wrap-schema-enforce :hx-schema query-schema)
|
||||||
(wrap-client-redirect-unauthenticated)))))
|
(wrap-client-redirect-unauthenticated)))))
|
||||||
@@ -575,5 +575,7 @@
|
|||||||
(with-precision 2
|
(with-precision 2
|
||||||
(double (.setScale (bigdec d) 2 java.math.RoundingMode/HALF_UP))))
|
(double (.setScale (bigdec d) 2 java.math.RoundingMode/HALF_UP))))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
(defn wrap-implied-route-param [handler & {:as route-params}]
|
||||||
|
(fn [request]
|
||||||
|
(handler (update-in request [:route-params] merge route-params))))
|
||||||
@@ -1,5 +1,8 @@
|
|||||||
(ns auto-ap.routes.invoice)
|
(ns auto-ap.routes.invoice)
|
||||||
(def routes {"" {:get ::page}
|
(def routes {"" {:get ::all-page
|
||||||
|
"/unpaid" ::unpaid-page
|
||||||
|
"/paid" ::paid-page
|
||||||
|
"/voided" ::voided-page }
|
||||||
"/pay-button" ::pay-button
|
"/pay-button" ::pay-button
|
||||||
"/pay" {:get ::pay-wizard
|
"/pay" {:get ::pay-wizard
|
||||||
"/navigate" ::pay-wizard-navigate
|
"/navigate" ::pay-wizard-navigate
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
(ns auto-ap.routes.payments)
|
(ns auto-ap.routes.payments)
|
||||||
(def routes {"" {:get ::page}
|
(def routes {"" {:get ::all-page
|
||||||
|
"/pending" ::pending-page
|
||||||
|
"/voided" ::voided-page
|
||||||
|
"/cleared" ::cleared-page}
|
||||||
"/bulk-delete" {:get ::bulk-delete
|
"/bulk-delete" {:get ::bulk-delete
|
||||||
:delete ::bulk-delete-confirm}
|
:delete ::bulk-delete-confirm}
|
||||||
["/" [#"\d+" :db/id]] {:delete ::delete}
|
["/" [#"\d+" :db/id]] {:delete ::delete}
|
||||||
|
|||||||
Reference in New Issue
Block a user