diff --git a/src/clj/auto_ap/jobs/register_invoice_import.clj b/src/clj/auto_ap/jobs/register_invoice_import.clj index d45a5d23..560c2528 100644 --- a/src/clj/auto_ap/jobs/register_invoice_import.clj +++ b/src/clj/auto_ap/jobs/register_invoice_import.clj @@ -99,6 +99,12 @@ {:db/id invoice-id :invoice/total target-total}) + (when (and (not (dollars= 0.0 target-total)) + (= :invoice-status/voided (:db/ident (:invoice/status invoice)))) + {:db/id invoice-id + :invoice/total target-total + :invoice/status :invoice-status/paid}) + (when new-account? {:db/id invoice-id :invoice/expense-accounts invoice-expense-account-id}) 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 a3584024..617eb893 100644 --- a/src/cljs/auto_ap/views/pages/ledger/external_import.cljs +++ b/src/cljs/auto_ap/views/pages/ledger/external_import.cljs @@ -170,11 +170,23 @@ [: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 {}))))))} + (persistent! + (reduce + (fn [acc row] + (let [values (str/split row "\t")] + (conj! acc + (loop [row (transient {}) + [[_ heading] & headings] headings + [v & values] values] + (if heading + (recur + (assoc! row heading v) + headings + values) + (persistent! row)))))) + (transient []) + (cond->> (str/split @text-form #"\n") + @include-headers (drop 1))))))} "Parse"] ])]])))