From 695cd38227dad014df85247598d95046970e641c Mon Sep 17 00:00:00 2001 From: Bryce Covert Date: Mon, 23 Jul 2018 13:36:02 -0700 Subject: [PATCH] adding ability to choose location --- ...2360781-DOWN-add-iguanas-bank-accounts.sql | 1 + ...532360781-UP-add-iguanas-bank-accounts.sql | 2 ++ src/clj/auto_ap/graphql.clj | 1 + src/clj/auto_ap/graphql/invoices.clj | 4 +-- src/cljs/auto_ap/events.cljs | 3 +- .../auto_ap/views/pages/unpaid_invoices.cljs | 29 +++++++++++++++++-- 6 files changed, 34 insertions(+), 6 deletions(-) create mode 100644 migrator/migrations/1532360781-DOWN-add-iguanas-bank-accounts.sql create mode 100644 migrator/migrations/1532360781-UP-add-iguanas-bank-accounts.sql diff --git a/migrator/migrations/1532360781-DOWN-add-iguanas-bank-accounts.sql b/migrator/migrations/1532360781-DOWN-add-iguanas-bank-accounts.sql new file mode 100644 index 00000000..cb918033 --- /dev/null +++ b/migrator/migrations/1532360781-DOWN-add-iguanas-bank-accounts.sql @@ -0,0 +1 @@ +-- 1532360781 DOWN add-iguanas-bank-accounts \ No newline at end of file diff --git a/migrator/migrations/1532360781-UP-add-iguanas-bank-accounts.sql b/migrator/migrations/1532360781-UP-add-iguanas-bank-accounts.sql new file mode 100644 index 00000000..1ad6b0e6 --- /dev/null +++ b/migrator/migrations/1532360781-UP-add-iguanas-bank-accounts.sql @@ -0,0 +1,2 @@ +-- 1532360781 UP add-iguanas-bank-accounts +update companies set data = '{:locations ["DT" "EG" "SC" "EG" "SG" "CB" "BH"] :bank-accounts [{:number "000158443280" :id 1 :check-number 10000 :bank-name "Bank of America" :bank-code "11-35/1210" :routing "121000358" :name "A1120 BofA Exp and Main - 3280" :yodlee-account-id 16279663} {:number "" :id 2 :check-number 10000 :bank-name "Bank of America" :bank-code "11-35/1210" :routing "121000358" :name "A1122 BofA Squirrel - 5255" :yodlee-account-id 16279666} {:number "000158743279" :id 3 :check-number 10000 :bank-name "Bank of America" :bank-code "11-35/1210" :routing "121000358" :name "A1121 BofA Tax & SLO - 3279" :yodlee-account-id 16279664} {:number "" :id 4 :check-number 10000 :bank-name "Bank of America" :bank-code "11-35/1210" :routing "121000358" :name "A1123 BofA Paychecks - 5250" :yodlee-account-id 16279665} {:number "" :id 5 :check-number 10000 :bank-name "Bank of America" :bank-code "11-35/1210" :routing "121000358" :name "A1125 BofA EG Exp - 5598" :yodlee-account-id 16279667} {:number "" :id 6 :check-number 10000 :bank-name "Bank of America" :bank-code "11-35/1210" :routing "121000358" :name "A1126 BofA SC Exp - 5318" :yodlee-account-id 16279668} {:number "" :id 7 :check-number 10000 :bank-name "Bank of America" :bank-code "11-35/1210" :routing "121000358" :name "A1127 BofA SG Exp - 8407" :yodlee-account-id 16279669} {:number "" :id 8 :check-number 10000 :bank-name "Bank of America" :bank-code "11-35/1210" :routing "121000358" :name "A1124 BofA DT Exp - 8279" :yodlee-account-id 16279670} {:number "" :id 9 :check-number 10000 :bank-name "Bank of America" :bank-code "11-35/1210" :routing "121000358" :name "A1128 BofA CB Exp - 2495" :yodlee-account-id 16279671} {:number "" :id 10 :check-number 10000 :bank-name "Bank of America" :bank-code "11-35/1210" :routing "121000358" :name "A1129 BofA BH Exp - 1665" :yodlee-account-id 16279672}]}' where id = 39; diff --git a/src/clj/auto_ap/graphql.clj b/src/clj/auto_ap/graphql.clj index ee5f2ac0..fac7889b 100644 --- a/src/clj/auto_ap/graphql.clj +++ b/src/clj/auto_ap/graphql.clj @@ -253,6 +253,7 @@ :add_invoice {:fields {:id {:type 'Int} :invoice_number {:type 'String} + :location {:type 'String} :date {:type 'String} :company_id {:type 'Int} :vendor_id {:type 'Int} diff --git a/src/clj/auto_ap/graphql/invoices.clj b/src/clj/auto_ap/graphql/invoices.clj index aa6f9a1d..8770051a 100644 --- a/src/clj/auto_ap/graphql/invoices.clj +++ b/src/clj/auto_ap/graphql/invoices.clj @@ -11,7 +11,7 @@ (vendors/get-by-id vendor-id) (vendors/insert {:name vendor-name :default-expense-account 0}))) -(defn add-invoice [context {{:keys [total invoice_number company_id vendor_id vendor_name date] :as in} :invoice} value] +(defn add-invoice [context {{:keys [total invoice_number location company_id vendor_id vendor_name date] :as in} :invoice} value] (let [vendor (-create-or-get-vendor vendor_id vendor_name) _ (assert-can-see-company (:id context) company_id) company (companies/get-by-id company_id) @@ -27,7 +27,7 @@ )] (invoices-expense-accounts/replace-for-invoice (:id invoice) [{:expense-account-id (:default-expense-account vendor) - :location (first (:locations company)) + :location location :amount total}] ) (-> invoice (->graphql)))) diff --git a/src/cljs/auto_ap/events.cljs b/src/cljs/auto_ap/events.cljs index 111948ee..d12d4812 100644 --- a/src/cljs/auto_ap/events.cljs +++ b/src/cljs/auto_ap/events.cljs @@ -75,10 +75,9 @@ (re-frame/reg-event-db ::change-form (fn [db [_ location field value]] - (println location field value) (if value (assoc-in db (into location field) value) - (update-in db location dissoc field)))) + (update-in db (into location (butlast field)) dissoc (last field))))) (re-frame/reg-event-db ::modal-status diff --git a/src/cljs/auto_ap/views/pages/unpaid_invoices.cljs b/src/cljs/auto_ap/views/pages/unpaid_invoices.cljs index 18727bae..976b6721 100644 --- a/src/cljs/auto_ap/views/pages/unpaid_invoices.cljs +++ b/src/cljs/auto_ap/views/pages/unpaid_invoices.cljs @@ -239,6 +239,7 @@ [:company [:id :name :locations]] [:vendor [:id :name]] [:expense_accounts [:amount :id :expense_account_id + :location [:expense_account [:id :name [:parent [:id :name]]]]]] ]]}]} :on-success [::invoice-created]}}))) @@ -519,15 +520,28 @@ #_#_:spec ::check/date :subscription handwrite-checks}]]]])) +(re-frame/reg-event-fx + ::change-new-invoice-company + (fn [{:keys [db ]} [_ location field value]] + (let [first-location (-> @(re-frame/subscribe [::subs/companies-by-id]) + (get-in [value :locations]) + first)] + {:dispatch [::events/change-form location field value] + :db (-> db + (assoc-in [::new-invoice :location] first-location))}))) (defn new-invoice-modal [] (let [data @(re-frame/subscribe [::new-invoice]) - change-event [::events/change-form [::new-invoice]]] + change-event [::events/change-form [::new-invoice]] + locations (get-in @(re-frame/subscribe [::subs/companies-by-id]) [(:company-id data) :locations]) + should-select-location? (and locations + (> (count locations) 1))] [action-modal {:id ::new-invoice :title "New Invoice" :action-text "Create" :save-event [::create-invoice] :can-submit? (s/valid? ::invoice/invoice data)} + (when-not @(re-frame/subscribe [::subs/company]) [horizontal-field [:label.label "Company"] @@ -535,9 +549,20 @@ [typeahead {:matches (map (fn [x] [(:id x) (:name x)]) @(re-frame/subscribe [::subs/companies])) :type "typeahead" :field [:company-id] - :event change-event + :event [::change-new-invoice-company [::new-invoice]] :spec ::invoice/company-id :subscription data}]]]) + (when should-select-location? + [horizontal-field + [:label.label "Location"] + [:div.select + [bind-field + [:select {:type "select" + :field [:location] + :spec (set locations) + :event change-event + :subscription data} + (map (fn [l] [:option {:value l} l]) locations)]]]]) [horizontal-field [:label.label "Vendor"]