diff --git a/src/cljs/auto_ap/views/pages/ledger/external_import.cljs b/src/cljs/auto_ap/views/pages/ledger/external_import.cljs index 7172c281..e5f47586 100644 --- a/src/cljs/auto_ap/views/pages/ledger/external_import.cljs +++ b/src/cljs/auto_ap/views/pages/ledger/external_import.cljs @@ -63,6 +63,7 @@ existing-set (set (map :external-id (:existing (:import-ledger result))))] {:db (-> (forms/save-succeeded db ::form ) + (assoc-in [::forms/forms ::form :result] {:errors error-set :success successful-set :existing existing-set}) (update-in [::forms/forms ::form :data :line-items] (fn [lis] (mapv @@ -107,6 +108,7 @@ (defn textarea->table [{:keys [headings value on-change read-only-headings]} & children] (let [text-form (r/atom "") + include-headers (r/atom false) table-form (r/atom nil)] (fn [{:keys [headings value on-change]}] [:form.form @@ -139,48 +141,64 @@ (get row k)]))]))] children] [:div - [:h1.title.is-2 "External Import"] + [:div.field [:p.help "Paste manual ledger entries below."] [:textarea.textarea {:on-change #(reset! text-form (.. % -target -value))} @text-form]] - [:button.button.is-primary.is-pulled-right.is-large {:on-click (fn [e] - (.preventDefault e) - (on-change - (->> (str/split @text-form #"\n") - (drop 1) - (mapv #(->> (str/split % "\t") - (map (fn [[_ k] v] [k v]) headings) - (into {}))))))} - "Evaluate"]])]))) + [:div.field + [:label.checkbox + [:input {:type "checkbox" :checked @include-headers :on-change #(swap! include-headers (fn [x] (not x)))} + ] + " Contains Header Row"]] + [:button.button.is-medium {:on-click (fn [e] + (.preventDefault e) + (on-change + (cond->> (str/split @text-form #"\n") + @include-headers (drop 1) + true (mapv #(->> (str/split % "\t") + (map (fn [[_ k] v] [k v]) headings) + (into {}))))))} + "Parse"] + ])]))) (def balance-sheet-content (with-meta (fn [] (let [current-client @(re-frame/subscribe [::subs/client]) user @(re-frame/subscribe [::subs/user]) - {:keys [data active? error id]} @(re-frame/subscribe [::forms/form ::form]) ] - (if @(re-frame/subscribe [::forms/is-loading? ::form]) - [:div [:i.icon.fa.fa-spin.fa-spinner]] - [:div + {:keys [data result active? error id]} @(re-frame/subscribe [::forms/form ::form]) ] + [:div + [:div.level + [:div.level-left + [:h1.title "Eternal Import"]] + [:div.level-right + [:button.button.is-primary.is-pulled-right.is-large {:disabled (not data) + :on-click (dispatch-event [::importing])} "Import"]]] + (when result + [:div.notification + "Imported with " (count (:errors result)) " errors, " (count (:success result)) " successful."]) + (if @(re-frame/subscribe [::forms/is-loading? ::form]) + [:div [:i.icon.fa.fa-spin.fa-spinner]] + [:div - [bind-field - [textarea->table {:type "textarea->table" - :field [:line-items] - :headings [["Id" :id] - ["Client" :client-code] - ["Source" :source] - ["Vendor" :vendor-name] - ["Date" :date] - ["Account" :account-identifier] - ["Location" :location] - ["Debit" :debit] - ["Credit" :credit]] - :read-only-headings - [["status" :status]] + [bind-field + [textarea->table {:type "textarea->table" + :field [:line-items] + :headings [["Id" :id] + ["Client" :client-code] + ["Source" :source] + ["Vendor" :vendor-name] + ["Date" :date] + ["Account" :account-identifier] + ["Location" :location] + ["Debit" :debit] + ["Credit" :credit]] + :read-only-headings + [["status" :status]] - :event [::forms/change ::form] - :subscription data} - [:button.button.is-primary.is-pulled-right.is-large {:on-click (dispatch-event [::importing])} "Import"]]]]))) + :event [::forms/change ::form] + :subscription data} + ]]])])) {})) (defn external-import-page [] diff --git a/src/cljs/auto_ap/views/pages/ledger/profit_and_loss.cljs b/src/cljs/auto_ap/views/pages/ledger/profit_and_loss.cljs index 8425ded6..699302e6 100644 --- a/src/cljs/auto_ap/views/pages/ledger/profit_and_loss.cljs +++ b/src/cljs/auto_ap/views/pages/ledger/profit_and_loss.cljs @@ -21,7 +21,7 @@ ::report :comparable-balance-sheet-accounts (map :location))) - (filter #(not= "A" %)) + #_(filter #(not= "A" %)) (filter identity) (set)