First cut at bulk coding

This commit is contained in:
2022-03-07 09:33:46 -08:00
parent 0f61cfa6cc
commit 52f8c08569
4 changed files with 202 additions and 141 deletions

View File

@@ -2,18 +2,18 @@
(:require [auto-ap.effects.forward :as forward]
[auto-ap.forms :as forms]
[auto-ap.subs :as subs]
[auto-ap.utils :refer [replace-by]]
[auto-ap.views.components.modal :as modal]
[auto-ap.views.components.layouts
:refer
[appearing-side-bar side-bar-layout]]
[auto-ap.views.pages.data-page :as data-page]
[auto-ap.views.pages.transactions.common :refer [transaction-read]]
[auto-ap.views.pages.transactions.common :refer [transaction-read data-params->query-params]]
[auto-ap.views.pages.transactions.form :as edit]
[auto-ap.views.pages.transactions.manual :as manual]
[auto-ap.views.pages.transactions.bulk-updates :as bulk]
[auto-ap.views.pages.transactions.side-bar :as side-bar]
[auto-ap.views.pages.transactions.table :as table]
[auto-ap.views.utils :refer [dispatch-event with-user]]
[clojure.set :as set]
[re-frame.core :as re-frame]
[reagent.core :as reagent]
[vimsical.re-frame.fx.track :as track]
@@ -22,34 +22,10 @@
(defn data-params->query-params [params]
{:start (:start params 0)
:per-page (:per-page params)
:sort (:sort params)
:client-id (:id @(re-frame/subscribe [::subs/client]))
:vendor-id (:id (:vendor params))
:date-range (:date-range params)
:account-id (:id (:account params))
:bank-account-id (:id (:bank-account params))
:amount-gte (:amount-gte (:amount-range params))
:exact-match-id (some-> (:exact-match-id params) str)
:unresolved (:unresolved params)
:potential-duplicates (:potential-duplicates params)
:location (:location params)
:import-batch-id (some-> (:import-batch-id params) str)
:amount-lte (:amount-lte (:amount-range params))
:description (:description params)
:approval-status (condp = @(re-frame/subscribe [::subs/active-page])
:transactions nil
:unapproved-transactions :unapproved
:requires-feedback-transactions :requires-feedback
:excluded-transactions :excluded
:approved-transactions :approved)})
(re-frame/reg-event-fx
::params-change
[with-user]
(fn [{:keys [user db ]} [_ params]]
(fn [{:keys [user]} [_ params]]
(try
{:graphql {:token user
:owns-state {:single [::data-page/page ::page]}
@@ -61,8 +37,6 @@
:end]]
:query/alias :result}]}
:on-success (fn [result]
[::data-page/received ::page (:result result)])}}
(catch js/Error e
;; this catches an error where you choose a parameter, change to invoices page, then change to voided invoices
@@ -88,7 +62,7 @@
:status status
:ids specific-transactions}
[:message]]}]}
:on-success (fn [result]
:on-success (fn [_]
[::params-change params])}})))
(re-frame/reg-event-fx
@@ -110,13 +84,32 @@
:ids specific-transactions
:suppress suppress}
[:message]]}]}
:on-success (fn [result]
:on-success (fn [_]
[::params-change params])}
:dispatch [::data-page/reset-checked ::page]})))
:dispatch-n [[::data-page/reset-checked ::page]
[::modal/modal-closed]]})))
(re-frame/reg-event-fx
::delete-selected-requested
(fn [_ [_ params suppress]]
(let [checked @(re-frame/subscribe [::data-page/checked ::page])
to-delete (if (get checked "header")
"all visible transactions"
(str (count checked) " transactions"))]
{:dispatch [::modal/modal-requested {:title "Confirmation"
:body [:div (str "Are you sure you want to delete " to-delete "?")]
:cancel? true
:confirm {:value "Delete"
:class "is-danger"
:status-from [::status/single ::delete-selected]
:on-click (dispatch-event [::delete-selected params suppress] )}
:close-event [::status/completed ::delete-selected]}]})))
(re-frame/reg-event-fx
::unmounted
(fn [{:keys [db]} _]
(fn [{:keys []} _]
{:dispatch-n [[::data-page/dispose ::page]
[::status/dispose-single ::manual-import]]
::track/dispose {:id ::params}
@@ -125,7 +118,7 @@
(re-frame/reg-event-fx
::mounted
(fn [{:keys [db]} _]
(fn [{:keys []} _]
{::track/register {:id ::params
:subscription [::data-page/params ::page]
:event-fn (fn [params]
@@ -136,7 +129,7 @@
[::data-page/updated-entity ::page edited-transaction])}
{:id ::manual-import
:events #{::manual/import-completed}
:event-fn (fn [[_ {:keys [imported errors] :as result}]]
:event-fn (fn [[_ result]]
(println result)
[::status/info ::manual-import
(str "Successfully "
@@ -182,28 +175,28 @@
:class (status/class-for @(re-frame/subscribe [::status/single ::bulk-change-transaction-status]))
:disabled (or (status/disabled-for @(re-frame/subscribe [::status/single ::bulk-change-transaction-status]))
(not (seq checked)))}
"Unapprove selected"]
"Unapprove"]
[:button.button.is-warning {:on-click (dispatch-event [::bulk-change-transaction-status :excluded params])
:class (status/class-for @(re-frame/subscribe [::status/single ::bulk-change-transaction-status]))
:disabled (or (status/disabled-for @(re-frame/subscribe [::status/single ::bulk-change-transaction-status]))
(not (seq checked)))}
"Exclude selected"]
"Exclude"]
[:button.button.is-warning {:on-click (dispatch-event [::bulk-change-transaction-status :requires-feedback params])
:class (status/class-for @(re-frame/subscribe [::status/single ::bulk-change-transaction-status]))
:disabled (or (status/disabled-for @(re-frame/subscribe [::status/single ::bulk-change-transaction-status]))
(not (seq checked)))}
"Client Review"]
[:button.button.is-danger {:on-click (dispatch-event [::delete-selected params false])
:class (status/class-for @(re-frame/subscribe [::status/single ::delete-selected]))
:disabled (or (status/disabled-for @(re-frame/subscribe [::status/single ::delete-selected]))
(not (seq checked)))}
"Delete selected"]
[:button.button.is-danger {:on-click (dispatch-event [::delete-selected params true])
:class (status/class-for @(re-frame/subscribe [::status/single ::delete-selected]))
:disabled (or (status/disabled-for @(re-frame/subscribe [::status/single ::delete-selected]))
(not (seq checked)))}
"Suppress selected"]]])
(when (:client-id params)
[:button.button.is-warning {:on-click (dispatch-event [::bulk/code-requested checked params])
:disabled (not (seq checked))}
"Code"])
[:button.button.is-danger {:on-click (dispatch-event [::delete-selected-requested params false])
:disabled (not (seq checked))}
"Delete"]
[:button.button.is-danger {:on-click (dispatch-event [::delete-selected-requested params true])
:disabled (not (seq checked))}
"Suppress"]]])
[table/table {:id :transactions
:check-boxes? is-admin?
:data-page ::page}]]))

View File

@@ -1,4 +1,7 @@
(ns auto-ap.views.pages.transactions.common)
(ns auto-ap.views.pages.transactions.common
(:require
[auto-ap.subs :as subs]
[re-frame.core :as re-frame]))
(def transaction-read
[:id
@@ -18,3 +21,27 @@
[:payment [:check_number :s3_url :id :date]]
[:client [:name :id]]
[:bank-account [:name :yodlee-account-id :current-balance]]])
(defn data-params->query-params [params]
{:start (:start params 0)
:per-page (:per-page params)
:sort (:sort params)
:client-id (:id @(re-frame/subscribe [::subs/client]))
:vendor-id (:id (:vendor params))
:date-range (:date-range params)
:account-id (:id (:account params))
:bank-account-id (:id (:bank-account params))
:amount-gte (:amount-gte (:amount-range params))
:exact-match-id (some-> (:exact-match-id params) str)
:unresolved (:unresolved params)
:potential-duplicates (:potential-duplicates params)
:location (:location params)
:import-batch-id (some-> (:import-batch-id params) str)
:amount-lte (:amount-lte (:amount-range params))
:description (:description params)
:approval-status (condp = @(re-frame/subscribe [::subs/active-page])
:transactions nil
:unapproved-transactions :unapproved
:requires-feedback-transactions :requires-feedback
:excluded-transactions :excluded
:approved-transactions :approved)})