diff --git a/scratch-sessions/find-ledgers-not-matching-invoices-or-transactions.clj b/scratch-sessions/find-ledgers-not-matching-invoices-or-transactions.clj index a18131d0..a9afff49 100644 --- a/scratch-sessions/find-ledgers-not-matching-invoices-or-transactions.clj +++ b/scratch-sessions/find-ledgers-not-matching-invoices-or-transactions.clj @@ -32,6 +32,8 @@ (def bad-ones (get-bad-ones)) +(count bad-ones) + (defn bad-invoices [bad-ones] (->> bad-ones @@ -52,6 +54,42 @@ (:invoice/expense-accounts invoice))})) )) +(get-schema "invoice-expense-account") + +(defn bad-invoices-with-zero-expense-accounts [bad-ones] + (->> bad-ones + + (map first) + (map (fn [je] + (:journal-entry/original-entity (d/entity (d/db auto-ap.datomic/conn) + je)))) + (filter (fn [invoice?] + (and (:invoice/total invoice?) + (= 0 (count (:invoice/expense-accounts invoice?)))))) + (map (fn [invoice] + {:db/id (:db/id invoice) + :invoice/expense-accounts [{:invoice-expense-account/amount (:invoice/total invoice) + :invoice-expense-account/location (first (:client/locations (:invoice/client invoice))) + :invoice-expense-account/account (-> invoice + :invoice/vendor + (auto-ap.datomic.vendors/account-for-client-id (:db/id (:invoice/client invoice))) + :db/id)} + ]} + )) + + #_(map (fn [invoice] + {:total (:invoice/total invoice) + :client-code (:client/code (:invoice/client invoice)) + :invoice-number (:invoice/invoice-number invoice) + :vendor (:vendor/name (:invoice/vendor invoice)) + :accounts (map + (fn [ea] + (str (:account/numeric-code (:invoice-expense-account/account ea)) ": " (:invoice-expense-account/amount ea))) + (:invoice/expense-accounts invoice))})) + )) + +@(d/transact auto-ap.datomic/conn (bad-invoices-with-zero-expense-accounts bad-ones)) + (defn bad-transactions [bad-ones] (->> bad-ones diff --git a/src/clj/auto_ap/background/sysco.clj b/src/clj/auto_ap/background/sysco.clj index b6df974b..82483909 100644 --- a/src/clj/auto_ap/background/sysco.clj +++ b/src/clj/auto_ap/background/sysco.clj @@ -89,7 +89,7 @@ :status :invoice-status/unpaid :client-identifier customer-identifier :expense-accounts [#:invoice-expense-account {:account (:db/id (:vendor/default-account sysco-vendor)) - :amount total + :amount (+ total tax) :location (parse/best-location-match matching-client location-hint location-hint )}]} (:vendor/terms sysco-vendor) (assoc :invoice/due (coerce/to-date (time/plus date (time/days (d-vendors/terms-for-client-id sysco-vendor (:db/id matching-client))))))