reimplemented import
This commit is contained in:
@@ -21,20 +21,21 @@
|
||||
(GET "/invoices/export" {:keys [query-params identity] :as request}
|
||||
(assert-admin identity)
|
||||
(let [query [[:all_invoices
|
||||
{:client-id (query-params "client")
|
||||
{:client-code (query-params "client-code")
|
||||
:original-id (query-params "original")}
|
||||
[:id :total :outstanding-balance :invoice-number :date :status
|
||||
[:payments [:amount [:payment [:check-number :memo [:bank_account [:id :number :bank-name :bank-code]]]]]]
|
||||
[:payments [:amount [:payment [:check-number :memo [:bank_account [:id :name :number :bank-name :bank-code]]]]]]
|
||||
[:vendor [:name :id [:primary_contact [:name]] [:address [:street1 :city :state :zip]]]]
|
||||
[:expense_accounts [:amount :id :expense_account_id :location
|
||||
[:expense_account [:id :name [:parent [:id :name]]]]]]
|
||||
[:client [:name :id :locations]]]]]
|
||||
invoices (graphql/query identity (venia/graphql-query {:venia/queries (->graphql query)}))]
|
||||
(list (:all-invoices (:data invoices)))))
|
||||
|
||||
(doto (list (:all-invoices (:data invoices))) clojure.pprint/pprint)))
|
||||
(GET "/payments/export" {:keys [query-params identity]}
|
||||
(assert-admin identity)
|
||||
(let [query [[:all_payments
|
||||
{:client-id (query-params "client")
|
||||
{:client-code (query-params "client-code")
|
||||
:original-id (query-params "original")}
|
||||
[:id :check-number :amount :memo :date :status :type
|
||||
[:invoices [[:invoice [:id]] :amount]]
|
||||
@@ -54,7 +55,7 @@
|
||||
(map <-graphql (d-vendors/get-graphql {})))
|
||||
(GET "/transactions/export" {:keys [query-params identity]}
|
||||
(assert-admin identity)
|
||||
(let [[transactions] (d-transactions/get-graphql {:client-id (Long/parseLong (query-params "client"))
|
||||
(let [[transactions] (d-transactions/get-graphql {:client-code (query-params "client-code")
|
||||
#_#_:original-id (Integer/parseInt (query-params "original"))
|
||||
:limit Integer/MAX_VALUE})
|
||||
transactions (map <-graphql transactions)]
|
||||
|
||||
@@ -72,12 +72,7 @@
|
||||
(catch Exception e
|
||||
(throw (Exception. (str "Could not parse account from value '" (:bank-account-id i) "'") e)))))
|
||||
|
||||
(defn parse-client-id [i]
|
||||
(try
|
||||
(Long/parseLong (second
|
||||
(re-matches #"[^0-9,\\-]*([0-9,\\-]+)[^0-9,]*" (:client-id i))))
|
||||
(catch Exception e
|
||||
(throw (Exception. (str "Could not parse client from value '" (:client-id i) "'") e)))))
|
||||
|
||||
|
||||
(defn parse-date [{:keys [raw-date]}]
|
||||
(try
|
||||
@@ -94,7 +89,7 @@
|
||||
:details (str e)})))))
|
||||
|
||||
(defn parse-invoice-rows [excel-rows]
|
||||
(let [columns [:raw-date :vendor-name :check :location :invoice-number :amount :client :bill-entered :bill-rejected :added-on :exported-on :default-expense-account]
|
||||
(let [columns [:raw-date :vendor-name :check :location :invoice-number :amount :client-name :bill-entered :bill-rejected :added-on :exported-on :default-expense-account]
|
||||
all-vendors (by :vendor/name (d-vendors/get-graphql {}))
|
||||
all-clients (d-clients/get-all)
|
||||
all-clients (merge (by :client/code all-clients) (by :client/name all-clients))
|
||||
@@ -154,29 +149,31 @@
|
||||
(POST "/batch-upload"
|
||||
{{:keys [data]} :edn-params user :identity}
|
||||
(assert-admin user)
|
||||
(let [columns [:status :raw-date :description-original :high-level-category nil nil :amount nil nil nil nil nil :bank-account-id :client-id]
|
||||
(let [columns [:status :raw-date :description-original :high-level-category nil nil :amount nil nil nil nil nil :bank-account-code :client-code]
|
||||
all-clients (d-clients/get-all)
|
||||
all-bank-accounts (mapcat :client/bank-accounts all-clients)
|
||||
all-clients (merge (by :client/code all-clients) (by :client/name all-clients))
|
||||
all-bank-accounts (merge (by :bank-account/code all-bank-accounts))
|
||||
rows (->> (str/split data #"\n" )
|
||||
(drop 1)
|
||||
(map #(str/split % #"\t"))
|
||||
(map #(into {} (filter identity (map (fn [c k] [k c] ) % columns))))
|
||||
|
||||
(map (parse-or-error :amount parse-amount))
|
||||
(map (parse-or-error :bank-account-id parse-account-id))
|
||||
(map (parse-or-error :client-id parse-client-id))
|
||||
(map (parse-or-error :date parse-date)))
|
||||
error-rows (filter :errors rows)
|
||||
_ (println "importing raw transactions" rows)
|
||||
|
||||
raw-transactions (vec (->> rows
|
||||
(filter #(not (seq (:errors %))) )
|
||||
(map (fn [{:keys [description-original client-id status high-level-category amount bank-account-id date]}]
|
||||
(map (fn [{:keys [description-original client-code status high-level-category amount bank-account-code date]}]
|
||||
{:description-original description-original
|
||||
:date date
|
||||
:status status
|
||||
:high-level-category high-level-category
|
||||
:amount amount
|
||||
:client-id client-id
|
||||
:bank-account-id bank-account-id}))))]
|
||||
:client-id (:db/id (all-clients client-code))
|
||||
:bank-account-id (:db/id (all-bank-accounts bank-account-code))}))))]
|
||||
|
||||
(manual-import raw-transactions)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user