Files
integreat/migrator/scratch.clj_

64 lines
2.2 KiB
Plaintext

;; This buffer is for text that is not saved, and for Lisp evaluation.
;; To create a file, visit it with C-x C-f and enter text in its buffer.
(def things (with-open [reader (io/reader "/Volumes/Data/Dropbox/Covert Integreat - Shared Files/vendors")] (doall (csv/read-csv reader :separator \tab))))
(def to-transform (reduce
(fn [things [name _ default-expense-account address1 address2 tax-id _ _ primary-contact primary-email primary-phone secondary-contact secondary-email secondary-phone]]
(conj things {
:name name
:default-expense-account default-expense-account
:address1 address1
:address2 address2
:tax-id tax-id
:primary-contact primary-contact
:primary-email primary-email
:primary-phone primary-phone
:secondary-contact secondary-contact
:secondary-email secondary-email
:secondary-phone secondary-phone
} ))
[] things))
(defn replace-expense-account [x]
(update x :default-expense-account
(fn [e]
(some->
(first (re-find #"([0-9]+)" e))
(Integer/parseInt ))
)))
(defn replace-address [x]
(let [[_ city zip] (re-find #"(.*), [^0-9]*([0-9]+)" (:address2 x))]
(-> x
(assoc :address
{:street1 (:address1 x)
:street2 ""
:city city
:state "CA"
:zip zip
})
(dissoc :address1 :address2))))
(defn add-default-expense-account [x]
(update x :default-expense-account #(or % 0)))
(defn extract-email [x]
(update x :primary-email
(fn [email]
(second (re-find #"([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,63})" email)))))
(def import (->> to-transform
(map replace-expense-account)
(map replace-address)
(map add-default-expense-account)
(map extract-email)
(filter #(s/valid? :auto-ap.entities.vendors/vendor %))))
)
(-> to-transform
(replace-expense-account)
(drop 2)
(take 10))