78 lines
3.1 KiB
Clojure
78 lines
3.1 KiB
Clojure
(ns auto-ap.datomic.migrate.add-general-ledger
|
|
(:require [datomic.api :as d]
|
|
[auto-ap.ledger :as ledger]))
|
|
|
|
(def add-general-ledger
|
|
[[{:db/ident :general-ledger/source
|
|
:db/valueType :db.type/string
|
|
:db/cardinality :db.cardinality/one
|
|
:db/doc "The type of entity that created this entry"}
|
|
{:db/ident :general-ledger/client
|
|
:db/valueType :db.type/ref
|
|
:db/cardinality :db.cardinality/one
|
|
:db/doc "The client for the ledger"}
|
|
{:db/ident :general-ledger/date
|
|
:db/valueType :db.type/instant
|
|
:db/cardinality :db.cardinality/one
|
|
:db/doc "The time for this entry"}
|
|
{:db/ident :general-ledger/original-entity
|
|
:db/valueType :db.type/ref
|
|
:db/unique :db.unique/identity
|
|
:db/cardinality :db.cardinality/one
|
|
:db/doc "The thing that created this entry"}
|
|
{:db/ident :general-ledger/vendor
|
|
:db/valueType :db.type/ref
|
|
:db/cardinality :db.cardinality/one
|
|
:db/doc "The vendor for the ledger entry"}
|
|
{:db/ident :general-ledger/amount
|
|
:db/valueType :db.type/double
|
|
:db/cardinality :db.cardinality/one
|
|
:db/doc "The amount for the entry"}
|
|
{:db/ident :general-ledger/location
|
|
:db/valueType :db.type/string
|
|
:db/cardinality :db.cardinality/one
|
|
:db/doc "Location of the entry"}
|
|
{:db/ident :general-ledger/from-expense-account
|
|
:db/valueType :db.type/long
|
|
:db/cardinality :db.cardinality/one
|
|
:db/doc "The expense account from"}
|
|
{:db/ident :general-ledger/to-expense-account
|
|
:db/valueType :db.type/long
|
|
:db/cardinality :db.cardinality/one
|
|
:db/doc "The expense account to"}
|
|
{:db/ident :general-ledger/cleared
|
|
:db/valueType :db.type/boolean
|
|
:db/cardinality :db.cardinality/one
|
|
:db/doc "Has this cleared?"}]])
|
|
|
|
(defn add-general-ledger-fns [conn]
|
|
[[{:db/ident :replace-general-ledger
|
|
:db/doc "Deletes the general ledger entries for an entity"
|
|
:db/fn (d/function '{:lang "clojure"
|
|
:params [db origin]
|
|
:code (let [ids (->> (d/query {:query {:find ['?e]
|
|
:in ['$ '?origin]
|
|
:where [['?e :general-ledger/original-entity '?origin]]}
|
|
:args [db origin]})
|
|
(map first))]
|
|
(into []
|
|
(map (fn [i] [:db/retractEntity i ]) ids)))})}]] )
|
|
|
|
(defn bulk-load-invoice-ledger [conn]
|
|
(let [invoice-ids (map first (d/query {:query {:find '[?e]
|
|
:in '[$]
|
|
:where ['[?e :invoice/total]]}
|
|
: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))
|
|
(def make-entity-not-unique
|
|
[[[:db/retract :general-ledger/original-entity :db/unique]]])
|
|
|
|
|
|
|
|
|