adding general ledger.
This commit is contained in:
@@ -4,15 +4,54 @@
|
|||||||
|
|
||||||
(defonce report-queue (d/tx-report-queue (d/connect uri) ) )
|
(defonce report-queue (d/tx-report-queue (d/connect uri) ) )
|
||||||
|
|
||||||
(let [transaction (.peek report-queue)]
|
(defn infer-entity [[_ changes]]
|
||||||
|
(let [namespaces (->> changes
|
||||||
|
(map :a)
|
||||||
|
(map namespace)
|
||||||
|
set)]
|
||||||
|
|
||||||
|
(cond (namespaces "invoice" ) :invoice
|
||||||
|
(namespaces "invoice-expense-account" ) :invoice-expense-account
|
||||||
|
:else nil)))
|
||||||
|
|
||||||
|
(defmulti entity-change->ledger infer-entity )
|
||||||
|
|
||||||
|
(defmethod entity-change->ledger :invoice
|
||||||
|
[[entity changes]]
|
||||||
|
(let [added-v (reduce (fn [added-v {:keys [a v added]}]
|
||||||
|
(if added
|
||||||
|
(assoc added-v a v)
|
||||||
|
added-v))
|
||||||
|
{}
|
||||||
|
changes)]
|
||||||
|
{:general-ledger/source "invoice"
|
||||||
|
:general-ledger/original-entity entity
|
||||||
|
:general-ledger/vendor (:invoice/vendor added-v)
|
||||||
|
:general-ledger/amount (- (:invoice/total added-v))
|
||||||
|
})
|
||||||
|
)
|
||||||
|
|
||||||
|
(defmethod entity-change->ledger :invoice-expense-account
|
||||||
|
[[entity changes]]
|
||||||
|
nil
|
||||||
|
)
|
||||||
|
|
||||||
|
(defmethod entity-change->ledger nil
|
||||||
|
[[entity changes]]
|
||||||
|
nil)
|
||||||
|
|
||||||
|
#_(defn entity-change->ledger [[entity-id changes]]
|
||||||
|
[entity-id (infer-entity changes)])
|
||||||
|
|
||||||
|
(let [transaction (.peek report-queue)
|
||||||
|
db (:db-after transaction)]
|
||||||
(->> (:tx-data transaction)
|
(->> (:tx-data transaction)
|
||||||
(map (fn [x]
|
(map (fn [^datomic.db.Datum x]
|
||||||
(.getY x)
|
{:e (:e x)
|
||||||
(println id)))
|
:a (d/ident db (:a x))
|
||||||
))
|
:v (:v x)
|
||||||
|
:added (:added x)}))
|
||||||
|
(group-by :e)
|
||||||
|
(map entity-change->ledger)))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user