From 17fd4b7d997e9380a62620f57f1be6fe6f632269 Mon Sep 17 00:00:00 2001 From: Bryce Covert Date: Mon, 22 Feb 2021 07:58:04 -0800 Subject: [PATCH] Swaps negative invoices --- src/clj/auto_ap/ledger.clj | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/clj/auto_ap/ledger.clj b/src/clj/auto_ap/ledger.clj index e421ebb3..8b1996d4 100644 --- a/src/clj/auto_ap/ledger.clj +++ b/src/clj/auto_ap/ledger.clj @@ -43,7 +43,8 @@ (let [entity (d/pull db ['* {:invoice/vendor '[*] :invoice/payment '[*] :invoice/status '[:db/ident] - :invoice/import-status '[:db/ident]}] id)] + :invoice/import-status '[:db/ident]}] id) + credit-invoice? (< (:invoice/total entity) 0.0)] (when-not (or (= true (:invoice/exclude-from-ledger entity)) (= :import-status/pending (:db/ident (:invoice/import-status entity))) (= :invoice-status/voided (:db/ident (:invoice/status entity))) @@ -54,15 +55,20 @@ :journal-entry/date (:invoice/date entity) :journal-entry/original-entity (:db/id entity) :journal-entry/vendor (:db/id (:invoice/vendor entity)) - :journal-entry/amount (:invoice/total entity) + :journal-entry/amount (Math/abs (:invoice/total entity)) - :journal-entry/line-items (into [{:journal-entry-line/account (:db/id (a/get-account-by-numeric-code-and-sets 21000 ["default"])) - :journal-entry-line/location "A" - :journal-entry-line/credit (:invoice/total entity)}] + :journal-entry/line-items (into [(cond-> {:journal-entry-line/account (:db/id (a/get-account-by-numeric-code-and-sets 21000 ["default"])) + :journal-entry-line/location "A" + } + credit-invoice? (assoc :journal-entry-line/debit (Math/abs (:invoice/total entity))) + (not credit-invoice?) (assoc :journal-entry-line/credit (Math/abs (:invoice/total entity))))] (map (fn [ea] - (remove-nils {:journal-entry-line/account (:db/id (:invoice-expense-account/account ea)) - :journal-entry-line/location (or (:invoice-expense-account/location ea) "HQ") ;; TODO? - :journal-entry-line/debit (:invoice-expense-account/amount ea)})) + (cond-> + {:journal-entry-line/account (:db/id (:invoice-expense-account/account ea)) + :journal-entry-line/location (or (:invoice-expense-account/location ea) "HQ") + } + credit-invoice? (assoc :journal-entry-line/credit (Math/abs (:invoice-expense-account/amount ea))) + (not credit-invoice?) (assoc :journal-entry-line/debit (Math/abs (:invoice-expense-account/amount ea))))) (:invoice/expense-accounts entity))) :journal-entry/cleared (and (< (:invoice/outstanding-balance entity) 0.01) (every? #(= :payment-status/cleared (:payment/status %)) (:invoice/payments entity))