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/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-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-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]}
|
#_#_: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.expense-accounts :as expense-accounts]
|
||||||
[auto-ap.ledger :as ledger]))
|
[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
|
(def add-general-ledger
|
||||||
@@ -143,10 +151,34 @@
|
|||||||
:args [(d/db conn)]}))
|
:args [(d/db conn)]}))
|
||||||
z (->> invoice-ids
|
z (->> invoice-ids
|
||||||
(mapv #(ledger/entity-change->ledger (d/db conn) [:invoice %])))]
|
(mapv #(ledger/entity-change->ledger (d/db conn) [:invoice %])))]
|
||||||
(clojure.pprint/pprint z)
|
|
||||||
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
|
(def change-expense-account-to-entity
|
||||||
[[{:db/ident :invoice-expense-account/account
|
[[{: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-account/account (accounts/get-account-by-numeric-code-and-sets expense-account-id ["default"])}))
|
||||||
invoice-expense-accounts)]))
|
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-items (into [{:journal-entry-line/account (a/get-account-by-numeric-code-and-sets 2110 ["default"])
|
||||||
:journal-entry-line/credit (:invoice/total entity)}]
|
:journal-entry-line/credit (:invoice/total entity)}]
|
||||||
(map (fn [ea]
|
(map (fn [ea]
|
||||||
{:journal-entry-line/account (:db/id (:invoice-expense-account/account ea))
|
(remove-nils {:journal-entry-line/account (:db/id (:invoice-expense-account/account ea))
|
||||||
:journal-entry-line/location (:invoice-expense-account/location ea)
|
:journal-entry-line/location (or (:invoice-expense-account/location ea) "HQ") ;; TODO?
|
||||||
:journal-entry-line/debit (:invoice-expense-account/amount ea)})
|
:journal-entry-line/debit (:invoice-expense-account/amount ea)}))
|
||||||
(:invoice/expense-accounts entity)))
|
(:invoice/expense-accounts entity)))
|
||||||
|
|
||||||
:journal-entry/cleared (and (< (:invoice/outstanding-balance entity) 0.01)
|
:journal-entry/cleared (and (< (:invoice/outstanding-balance entity) 0.01)
|
||||||
@@ -57,24 +57,25 @@
|
|||||||
(defmethod entity-change->ledger :transaction
|
(defmethod entity-change->ledger :transaction
|
||||||
[db [type id]]
|
[db [type id]]
|
||||||
(let [entity (d/pull db ['* {:transaction/vendor '[*] :transaction/client '[*] :transaction/account '[*]}] id)]
|
(let [entity (d/pull db ['* {:transaction/vendor '[*] :transaction/client '[*] :transaction/account '[*]}] id)]
|
||||||
(remove-nils
|
(when (:transaction/vendor entity)
|
||||||
{:journal-entry/source "transaction"
|
(remove-nils
|
||||||
:journal-entry/client (:db/id (:transaction/client entity))
|
{:journal-entry/source "transaction"
|
||||||
:journal-entry/date (doto (:transaction/date entity) println)
|
:journal-entry/client (:db/id (:transaction/client entity))
|
||||||
:journal-entry/original-entity (:db/id entity)
|
:journal-entry/date (:transaction/date entity)
|
||||||
:journal-entry/vendor (:db/id (:transaction/vendor entity))
|
:journal-entry/original-entity (:db/id entity)
|
||||||
:journal-entry/amount (Math/abs (:transaction/amount 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-items [(remove-nils{:journal-entry-line/account (:db/id (:transaction/account entity))
|
||||||
:journal-entry-line/location "HQ"
|
:journal-entry-line/location "HQ"
|
||||||
:journal-entry-line/debit (Math/abs (:transaction/amount entity))}
|
:journal-entry-line/debit (Math/abs (:transaction/amount entity))})
|
||||||
|
|
||||||
{:journal-entry-line/account (:db/id (:transaction/bank-account entity))
|
(remove-nils {:journal-entry-line/account (:db/id (:transaction/bank-account entity))
|
||||||
:journal-entry-line/location "HQ"
|
:journal-entry-line/location "HQ"
|
||||||
:journal-entry-line/credit (Math/abs (:transaction/amount entity))}
|
:journal-entry-line/credit (Math/abs (:transaction/amount entity))})
|
||||||
]
|
]
|
||||||
|
|
||||||
:journal-entry/cleared true})))
|
:journal-entry/cleared true}))))
|
||||||
|
|
||||||
(defmethod entity-change->ledger :invoice-expense-account
|
(defmethod entity-change->ledger :invoice-expense-account
|
||||||
[db [entity changes]]
|
[db [entity changes]]
|
||||||
|
|||||||
Reference in New Issue
Block a user