Adds new invoice for Reed, makes external ledger downloadable

This commit is contained in:
Bryce
2023-06-08 21:34:19 -07:00
parent 6f935ddbd4
commit 49a5af9409
4 changed files with 76 additions and 31 deletions

View File

@@ -6,17 +6,17 @@
:system "dev"} :system "dev"}
:db-name "prod-migration2" :db-name "prod-migration2"
:jwt-secret "auto ap invoices are awesome" :jwt-secret "auto ap invoices are awesome"
:aws-access-key-id "AKIAJIS67OSJARD2E6VQ" :aws-access-key-id "AKIAINHACMVQJ6NYD26A"
:aws-secret-access-key "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" :aws-secret-access-key "FwdL4TbIC/5H/4mwhQy4iSI/eSewyPgfS1EEt6tL"
:aws-region "us-east-1" :aws-region "us-east-1"
:datomic-url "datomic:dev://localhost:4334/dev2" :datomic-url "datomic:dev://localhost:4334/dev2"
:invoice-import-queue-url "https://sqs.us-east-1.amazonaws.com/679918342773/integreat-mail-staging" :invoice-import-queue-url "https://sqs.us-east-1.amazonaws.com/679918342773/integreat-mail-staging"
:background-task-definition "integreat_background-worker_prod" :background-task-definition "integreat_background-worker_prod"
:requests-queue-url "https://sqs.us-east-1.amazonaws.com/679918342773/integreat-background-request-prod" :requests-queue-url "https://sqs.us-east-1.amazonaws.com/679918342773/integreat-background-request-prod"
:scheduled-jobs-queue-url "https://sqs.us-east-1.amazonaws.com/679918342773/integreat-scheduled-jobs-prod" :scheduled-jobs-queue-url "https://sqs.us-east-1.amazonaws.com/679918342773/integreat-scheduled-jobs-prod"
:invoice-email "invoices-staging@mail.app.integreatconsult.com" :invoice-email "invoices-staging@mail.app.integreatconsult.com"
:import-failure-destination-email "bryce@brycecovertoperations.com" :import-failure-destination-email "bryce@brycecovertoperations.com"
:data-bucket "data.staging.app.integreatconsult.com" :data-bucket "data.dev.app.integreatconsult.com"
:plaid {:base-url "https://sandbox.plaid.com" :plaid {:base-url "https://sandbox.plaid.com"
:client-id "61bfab05f7e762001b323f79" :client-id "61bfab05f7e762001b323f79"
:secret-key "f902743e6f4cef86b7f3b51141aeea"} :secret-key "f902743e6f4cef86b7f3b51141aeea"}

View File

@@ -144,7 +144,7 @@
[com.bhauman/rebel-readline-cljs "0.1.4" :exclusions [org.clojure/clojurescript]] [com.bhauman/rebel-readline-cljs "0.1.4" :exclusions [org.clojure/clojurescript]]
[javax.servlet/servlet-api "2.5"]] [javax.servlet/servlet-api "2.5"]]
:plugins [[lein-pdo "0.1.1"]] :plugins [[lein-pdo "0.1.1"]]
:jvm-opts ["-Dconfig=config/dev.edn" "-Dlogback.configurationFile=logback.xml" "-Xms4G" "-Xmx20G" "-Ddatomic.valcachePath=/mnt/data/datomic-cache" "-Ddatomic.valcacheMaxGb=50"]} :jvm-opts ["-Dconfig=config/dev.edn" "-Dlogback.configurationFile=logback.xml" "-Xms4G" "-Xmx20G" ]}
:uberjar :uberjar

View File

@@ -13,7 +13,9 @@
[clojure.set :as set] [clojure.set :as set]
[re-frame.core :as re-frame] [re-frame.core :as re-frame]
[reagent.core :as reagent] [reagent.core :as reagent]
[vimsical.re-frame.fx.track :as track])) [vimsical.re-frame.fx.track :as track]
[vimsical.re-frame.cofx.inject :as inject]
[auto-ap.views.components.buttons :as buttons]))
(defn data-params->query-params [params] (defn data-params->query-params [params]
{:start (:start params 0) {:start (:start params 0)
@@ -61,6 +63,29 @@
[::data-page/received ::page (set/rename-keys (:ledger-page result) [::data-page/received ::page (set/rename-keys (:ledger-page result)
{:journal-entries :data})])}})) {:journal-entries :data})])}}))
(re-frame/reg-sub
::csv-content
(fn [db]
(::csv-content db)))
(re-frame/reg-event-fx
::csv-exported
(fn [{:keys [db]} [_ csv]]
{:db (assoc db ::csv-content csv)}))
(re-frame/reg-event-fx
::export-csv
[with-user (re-frame/inject-cofx ::inject/sub [::data-page/params ::page])]
(fn [{:keys [user db] ::data-page/keys [params]}]
{:graphql {:token user
:owns-state {:single [::data-page/page ::page]}
:query-obj {:venia/queries [[:ledger-csv
{:filters (data-params->query-params params)}
[:csv_content_b64]]]}
:on-success (fn [result]
[::csv-exported (:csv-content-b64 (:ledger-csv result))])}}))
(re-frame/reg-event-fx (re-frame/reg-event-fx
::unmounted ::unmounted
(fn [_ _] (fn [_ _]
@@ -101,31 +126,51 @@
:on-success (fn [result] :on-success (fn [result]
[::delete-successful result params])}}))) [::delete-successful result params])}})))
(defn action-buttons []
(println "HERE?")
(let [params @(re-frame/subscribe [::data-page/params ::page])
csv-content @(re-frame/subscribe [::csv-content])
is-admin? @(re-frame/subscribe [::subs/is-admin?])
status @(re-frame/subscribe [::status/single [::data-page/page ::page]])
checked @(re-frame/subscribe [::data-page/checked ::page])]
[:div.buttons
(into [:div.tags] (map (fn [[z {:keys [id external-id]}]]
(if (= "header" z)
[:span.tag.is-medium {:on-click
(dispatch-event [::data-page/remove-check ::page "header"])}
"All visible ledger entries"]
[:span.tag.is-medium external-id
[:button.delete.is-small {:on-click
(dispatch-event [::data-page/remove-check ::page id])}]]))
checked))
[:button.button.is-danger {:on-click (dispatch-event [::delete-selected params])
: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"]
(when is-admin?
(if csv-content
[:a {:href (str "data:attachment/csv;base64," csv-content)
:target "_blank"
:download (str "ledger.csv")}
"Click here to download"]
[buttons/event-button {:event [::export-csv]
:name "Export"
:class (status/class-for status)
:disabled (status/disabled-for status)}]))]))
(defn ledger-content [] (defn ledger-content []
(let [_ @(re-frame/subscribe [::subs/client]) (let [_ @(re-frame/subscribe [::subs/client])
params @(re-frame/subscribe [::data-page/params ::page]) params @(re-frame/subscribe [::data-page/params ::page])
checked @(re-frame/subscribe [::data-page/checked ::page])] ]
[:div [:div
[:h1.title "External Ledger"] [:h1.title "External Ledger"]
[status/status-notification {:statuses [[::status/single ::delete-selected]]}] [status/status-notification {:statuses [[::status/single ::delete-selected]]}]
[:div.is-pulled-right [:div.is-pulled-right
[:div.buttons ]
(into [:div.tags ] (map (fn [[z {:keys [id external-id]}]]
(if (= "header" z)
[:span.tag.is-medium {:on-click
(dispatch-event [::data-page/remove-check ::page "header"])}
"All visible ledger entries"]
[:span.tag.is-medium external-id
[:button.delete.is-small {:on-click
(dispatch-event [::data-page/remove-check ::page id])}]]))
checked))
[:button.button.is-danger {:on-click (dispatch-event [::delete-selected params])
: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"]]]
[table/table {:id :ledger [table/table {:id :ledger
:data-page ::page}]])) :data-page ::page
:action-buttons [action-buttons]}]]))
(defn external-ledger-page [] (defn external-ledger-page []

View File

@@ -42,16 +42,16 @@
[grid/cell {:class "has-text-right"} (when debit (nf debit ))] [grid/cell {:class "has-text-right"} (when debit (nf debit ))]
[grid/cell {:class "has-text-right"} (when credit (nf credit ))]])]]) [grid/cell {:class "has-text-right"} (when credit (nf credit ))]])]])
(defn table [{:keys [data-page]}] (defn table [{:keys [data-page action-buttons]}]
(let [{:keys [data params]} @(re-frame/subscribe [::data-page/page data-page]) (let [{:keys [data params]} @(re-frame/subscribe [::data-page/page data-page])
selected-client @(re-frame/subscribe [::subs/client]) selected-client @(re-frame/subscribe [::subs/client])
bank-accounts-by-id @(re-frame/subscribe [::subs/bank-accounts-by-id])] bank-accounts-by-id @(re-frame/subscribe [::subs/bank-accounts-by-id])]
[grid/grid {:data-page data-page [grid/grid {:data-page data-page
:check-boxes? true :check-boxes? true
:column-count (if selected-client 7 8)} :column-count (if selected-client 7 8)}
[grid/controls data] [grid/controls (assoc data :action-buttons action-buttons)]
[grid/table {:fullwidth true :class ["wrappable"]} [grid/table {:fullwidth true :class ["wrappable"]}
[grid/header [grid/header
[grid/row {:id "header" [grid/row {:id "header"
:entity params} :entity params}
(when-not selected-client (when-not selected-client
@@ -67,6 +67,6 @@
(for [{:keys [id] :as i} (:data data)] (for [{:keys [id] :as i} (:data data)]
^{:key id} ^{:key id}
[external-ledger-row {:row i [external-ledger-row {:row i
:selected-client selected-client :selected-client selected-client
:bank-accounts-by-id bank-accounts-by-id}])]]])) :bank-accounts-by-id bank-accounts-by-id}])]]]))