converts accounts.'
This commit is contained in:
@@ -227,7 +227,8 @@
|
|||||||
{:db/ident :account-client-override/name
|
{:db/ident :account-client-override/name
|
||||||
:db/doc "client override"
|
:db/doc "client override"
|
||||||
:db/valueType :db.type/string
|
:db/valueType :db.type/string
|
||||||
:db/cardinality :db.cardinality/one}]]} }]
|
:db/cardinality :db.cardinality/one}]]}
|
||||||
|
}]
|
||||||
(println "Conforming database...")
|
(println "Conforming database...")
|
||||||
(c/ensure-conforms conn norms-map)
|
(c/ensure-conforms conn norms-map)
|
||||||
(when (not (seq args))
|
(when (not (seq args))
|
||||||
|
|||||||
@@ -3,7 +3,11 @@
|
|||||||
[auto-ap.datomic :refer [remove-nils]]
|
[auto-ap.datomic :refer [remove-nils]]
|
||||||
[auto-ap.datomic.accounts :as accounts]
|
[auto-ap.datomic.accounts :as accounts]
|
||||||
[auto-ap.expense-accounts :as expense-accounts]
|
[auto-ap.expense-accounts :as expense-accounts]
|
||||||
[auto-ap.ledger :as ledger]))
|
[auto-ap.ledger :as ledger]
|
||||||
|
[auto-ap.utils :refer [by]]
|
||||||
|
[clojure.java.io :as io]
|
||||||
|
[clojure.string :as str])
|
||||||
|
(:import [org.apache.commons.io.input BOMInputStream]))
|
||||||
|
|
||||||
(defn test-run [txs-set]
|
(defn test-run [txs-set]
|
||||||
#_(println "processing " (count txs-set))
|
#_(println "processing " (count txs-set))
|
||||||
@@ -458,6 +462,11 @@
|
|||||||
(partition-all 100))]
|
(partition-all 100))]
|
||||||
results))
|
results))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#_(convert-accounts (d/connect auto-ap.datomic/uri))
|
||||||
|
|
||||||
#_(do (doseq [tran (convert-transactions (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))
|
@(d/transact (d/connect auto-ap.datomic/uri) tran))
|
||||||
(println "done."))
|
(println "done."))
|
||||||
|
|||||||
@@ -1,9 +1,14 @@
|
|||||||
(ns user
|
(ns user
|
||||||
(:require [auto-ap.datomic :refer [uri]]
|
(:require [auto-ap.datomic :refer [uri]]
|
||||||
[datomic.api :as d]
|
|
||||||
|
|
||||||
|
[auto-ap.utils :refer [by]]
|
||||||
|
[datomic.api :as d]
|
||||||
|
[clojure.data.csv :as csv]
|
||||||
[clj-time.coerce :as c]
|
[clj-time.coerce :as c]
|
||||||
[clj-time.core :as t]))
|
[clj-time.core :as t]
|
||||||
|
[clojure.java.io :as io]
|
||||||
|
[clojure.string :as str])
|
||||||
|
(:import [org.apache.commons.io.input BOMInputStream]))
|
||||||
|
|
||||||
(defn mark-until-date [client end]
|
(defn mark-until-date [client end]
|
||||||
(let [conn (d/connect uri)]
|
(let [conn (d/connect uri)]
|
||||||
@@ -66,3 +71,78 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
(defn load-accounts [conn]
|
||||||
|
(let [[header & rows] (-> "master-account-list.csv" (io/resource) io/input-stream (BOMInputStream.) (io/reader) csv/read-csv)
|
||||||
|
headers (map read-string header)
|
||||||
|
code->existing-account (by :account/numeric-code (map first (d/query {:query {:find ['(pull ?e [:account/numeric-code
|
||||||
|
:db/id])]
|
||||||
|
:in ['$]
|
||||||
|
:where ['[?e :account/name]]}
|
||||||
|
:args [(d/db conn)]})))
|
||||||
|
|
||||||
|
also-merge-txes (fn [also-merge old-account-id]
|
||||||
|
(let [[sunset-account]
|
||||||
|
(first (d/query {:query {:find ['?a ]
|
||||||
|
:in ['$ '?ac ]
|
||||||
|
:where ['[?a :account/numeric-code ?ac]]}
|
||||||
|
:args [(d/db conn) also-merge ]}))]
|
||||||
|
(into (mapv
|
||||||
|
(fn [[entity id sunset-account]]
|
||||||
|
[:db/add entity id old-account-id])
|
||||||
|
(d/query {:query {:find ['?e '?id '?a ]
|
||||||
|
:in ['$ '?ac ]
|
||||||
|
:where ['[?a :account/numeric-code ?ac]
|
||||||
|
'[?e ?at ?a]
|
||||||
|
'[?at :db/ident ?id]]}
|
||||||
|
:args [(d/db conn) also-merge ]}))
|
||||||
|
[[:db/retractEntity sunset-account]])))
|
||||||
|
|
||||||
|
txes (transduce
|
||||||
|
(comp
|
||||||
|
(map (fn ->map [r]
|
||||||
|
(into {} (map vector header r))))
|
||||||
|
(map (fn parse-map [r]
|
||||||
|
{:old-account-id (:db/id (code->existing-account
|
||||||
|
(or
|
||||||
|
(if (= (get r "IOL Account #")
|
||||||
|
"NEW")
|
||||||
|
nil
|
||||||
|
(Integer/parseInt (get r "IOL Account #")))
|
||||||
|
(Integer/parseInt (get r "Account #")))))
|
||||||
|
:new-account-number (Integer/parseInt (get r "Account #"))
|
||||||
|
:name (get r "Default Name")
|
||||||
|
:location (when-not (str/blank? (get r "Forced Location"))
|
||||||
|
(get r "Forced Location"))
|
||||||
|
:also-merge (when-not (str/blank? (get r "IOL # additional"))
|
||||||
|
(Integer/parseInt (get r "IOL # additional")))
|
||||||
|
:account-type (keyword "account-type"
|
||||||
|
(str/lower-case (get r "Account Type")))
|
||||||
|
:applicability (keyword "account-applicability"
|
||||||
|
(condp = (get r "Visiblity (Per-customer, Visible by default, hidden by default)")
|
||||||
|
"Visible by default"
|
||||||
|
"global"
|
||||||
|
|
||||||
|
"Hidden by default"
|
||||||
|
"optional"
|
||||||
|
|
||||||
|
"Per Customer"
|
||||||
|
"customized"))}))
|
||||||
|
(mapcat (fn ->tx [{:keys [old-account-id new-account-number name location also-merge account-type applicability]}]
|
||||||
|
(let [tx [(cond-> {:account/name name
|
||||||
|
:account/type account-type
|
||||||
|
:account/applicability applicability
|
||||||
|
:account/numeric-code new-account-number}
|
||||||
|
old-account-id (assoc :db/id old-account-id)
|
||||||
|
location (assoc :account/location location))]]
|
||||||
|
(if also-merge
|
||||||
|
(into tx
|
||||||
|
(also-merge-txes also-merge old-account-id))
|
||||||
|
tx)
|
||||||
|
))))
|
||||||
|
|
||||||
|
|
||||||
|
conj
|
||||||
|
[]
|
||||||
|
rows)]
|
||||||
|
@(d/transact conn txes))
|
||||||
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user