Adds new invoice for Reed, makes external ledger downloadable
This commit is contained in:
@@ -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 "Z+AOjQU9M4SwKVU2meYtyNxXtz1Axu/9xohvteXf"
|
: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"}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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 []
|
||||||
|
|||||||
@@ -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}])]]]))
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user