supports bulk loading data.
This commit is contained in:
@@ -87,6 +87,7 @@
|
||||
:auto-ap/add-account-to-vendor {:txes auto-ap.datomic.migrate.add-general-ledger/add-account-to-vendor :requires [:auto-ap/change-expense-account-to-entity]}
|
||||
:auto-ap/convert-vendors {:txes-fn `add-general-ledger/convert-vendors :requires [:auto-ap/add-account-to-vendor]}
|
||||
:auto-ap/convert-invoices {:txes-fn `add-general-ledger/convert-invoices :requires [:auto-ap/add-account-to-vendor]}
|
||||
:auto-ap/convert-transactions {:txes-fn `add-general-ledger/convert-transactions :requires [:auto-ap/convert-invoices]}
|
||||
#_#_:auto-ap/bulk-load-invoice-ledger2 {:txes-fn 'auto-ap.datomic.migrate.add-general-ledger/bulk-load-invoice-ledger :requires [:auto-ap/make-entity-not-unique]}
|
||||
|
||||
}]
|
||||
|
||||
@@ -5,6 +5,14 @@
|
||||
[auto-ap.expense-accounts :as expense-accounts]
|
||||
[auto-ap.ledger :as ledger]))
|
||||
|
||||
(defn test-run [txs-set]
|
||||
(println "processing " (count txs-set))
|
||||
(doseq [[i tx] (map vector (range) txs-set)]
|
||||
@(d/transact (d/connect auto-ap.datomic/uri)
|
||||
tx)
|
||||
(when (= 0 (mod i 1000))
|
||||
(println "processed " i))))
|
||||
|
||||
|
||||
|
||||
(def add-general-ledger
|
||||
@@ -143,10 +151,34 @@
|
||||
:args [(d/db conn)]}))
|
||||
z (->> invoice-ids
|
||||
(mapv #(ledger/entity-change->ledger (d/db conn) [:invoice %])))]
|
||||
(clojure.pprint/pprint z)
|
||||
z))
|
||||
|
||||
#_(bulk-load-invoice-ledger (d/connect auto-ap.datomic/uri))
|
||||
#_(do @(d/transact (d/connect auto-ap.datomic/uri)
|
||||
(bulk-load-invoice-ledger (d/connect auto-ap.datomic/uri)))
|
||||
(println "test"))
|
||||
|
||||
(defn bulk-load-transaction-ledger [conn]
|
||||
(let [transaction-ids (map first (d/query {:query {:find '[?e]
|
||||
:in '[$]
|
||||
:where ['[?e :transaction/id]]}
|
||||
:args [(d/db conn)]}))
|
||||
_ (println (count transaction-ids))
|
||||
z (->> transaction-ids
|
||||
(map #(ledger/entity-change->ledger (d/db conn) [:transaction %]))
|
||||
(filter identity)
|
||||
(mapv identity))]
|
||||
z))
|
||||
|
||||
#_(test-run (bulk-load-transaction-ledger (d/connect auto-ap.datomic/uri)))
|
||||
|
||||
#_(do (doseq [tran (convert-transactions (d/connect auto-ap.datomic/uri))]
|
||||
@(d/transact (d/connect auto-ap.datomic/uri) tran))
|
||||
(println "done."))
|
||||
|
||||
#_(do @(d/transact (d/connect auto-ap.datomic/uri)
|
||||
(bulk-load-transaction-ledger (d/connect auto-ap.datomic/uri)))
|
||||
(println "test"))
|
||||
|
||||
|
||||
(def change-expense-account-to-entity
|
||||
[[{:db/ident :invoice-expense-account/account
|
||||
@@ -184,4 +216,22 @@
|
||||
:invoice-expense-account/account (accounts/get-account-by-numeric-code-and-sets expense-account-id ["default"])}))
|
||||
invoice-expense-accounts)]))
|
||||
|
||||
(defn convert-transactions [conn]
|
||||
(let [matched-transactions (d/query {:query {:find '[?transaction ?v]
|
||||
:in '[$]
|
||||
:where ['[?transaction :transaction/payment ?payment]
|
||||
'[?payment :payment/invoices ?i]
|
||||
'[?i :invoice/vendor ?v]]}
|
||||
:args [(d/db (d/connect auto-ap.datomic/uri))]})]
|
||||
[(mapv
|
||||
(fn [[transaction-id vendor-id]]
|
||||
(remove-nils {:db/id transaction-id
|
||||
:transaction/vendor vendor-id
|
||||
:transaction/account (:db/id (accounts/get-account-by-numeric-code-and-sets 2110 ["default"]))
|
||||
}))
|
||||
matched-transactions)]))
|
||||
|
||||
|
||||
#_(do (doseq [tran (convert-transactions (d/connect auto-ap.datomic/uri))]
|
||||
@(d/transact (d/connect auto-ap.datomic/uri) tran))
|
||||
(println "done."))
|
||||
|
||||
@@ -45,9 +45,9 @@
|
||||
:journal-entry/line-items (into [{:journal-entry-line/account (a/get-account-by-numeric-code-and-sets 2110 ["default"])
|
||||
:journal-entry-line/credit (:invoice/total entity)}]
|
||||
(map (fn [ea]
|
||||
{:journal-entry-line/account (:db/id (:invoice-expense-account/account ea))
|
||||
:journal-entry-line/location (:invoice-expense-account/location ea)
|
||||
:journal-entry-line/debit (:invoice-expense-account/amount 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)}))
|
||||
(:invoice/expense-accounts entity)))
|
||||
|
||||
:journal-entry/cleared (and (< (:invoice/outstanding-balance entity) 0.01)
|
||||
@@ -57,24 +57,25 @@
|
||||
(defmethod entity-change->ledger :transaction
|
||||
[db [type id]]
|
||||
(let [entity (d/pull db ['* {:transaction/vendor '[*] :transaction/client '[*] :transaction/account '[*]}] id)]
|
||||
(remove-nils
|
||||
{:journal-entry/source "transaction"
|
||||
:journal-entry/client (:db/id (:transaction/client entity))
|
||||
:journal-entry/date (doto (:transaction/date entity) println)
|
||||
:journal-entry/original-entity (:db/id entity)
|
||||
:journal-entry/vendor (:db/id (:transaction/vendor entity))
|
||||
:journal-entry/amount (Math/abs (:transaction/amount entity))
|
||||
(when (:transaction/vendor entity)
|
||||
(remove-nils
|
||||
{:journal-entry/source "transaction"
|
||||
:journal-entry/client (:db/id (:transaction/client entity))
|
||||
:journal-entry/date (:transaction/date entity)
|
||||
:journal-entry/original-entity (:db/id entity)
|
||||
:journal-entry/vendor (:db/id (:transaction/vendor entity))
|
||||
:journal-entry/amount (Math/abs (:transaction/amount entity))
|
||||
|
||||
:journal-entry/line-items [{:journal-entry-line/account (:db/id (:transaction/account entity))
|
||||
:journal-entry-line/location "HQ"
|
||||
:journal-entry-line/debit (Math/abs (:transaction/amount entity))}
|
||||
:journal-entry/line-items [(remove-nils{:journal-entry-line/account (:db/id (:transaction/account entity))
|
||||
:journal-entry-line/location "HQ"
|
||||
:journal-entry-line/debit (Math/abs (:transaction/amount entity))})
|
||||
|
||||
{:journal-entry-line/account (:db/id (:transaction/bank-account entity))
|
||||
:journal-entry-line/location "HQ"
|
||||
:journal-entry-line/credit (Math/abs (:transaction/amount entity))}
|
||||
]
|
||||
|
||||
:journal-entry/cleared true})))
|
||||
(remove-nils {:journal-entry-line/account (:db/id (:transaction/bank-account entity))
|
||||
:journal-entry-line/location "HQ"
|
||||
:journal-entry-line/credit (Math/abs (:transaction/amount entity))})
|
||||
]
|
||||
|
||||
:journal-entry/cleared true}))))
|
||||
|
||||
(defmethod entity-change->ledger :invoice-expense-account
|
||||
[db [entity changes]]
|
||||
|
||||
Reference in New Issue
Block a user