removed old database stuff, just left what's needed for importing

This commit is contained in:
BC
2019-01-10 20:28:17 -08:00
parent 13620fe57f
commit 7151adbfdf
8 changed files with 0 additions and 463 deletions

View File

@@ -19,92 +19,3 @@
(defn get-all []
(query base-query))
(defn get-by-id [id]
(first (query (-> base-query
(helpers/merge-where [:= :id id])))))
(defn fields->data [x]
(-> x
(assoc-in [:data :pdf-data] (:pdf-data x))
(assoc-in [:data :invoices] (:invoices x))
(dissoc :pdf-data)
(dissoc :invoices)))
(defn insert! [row]
(-> (j/insert! (get-conn)
:checks
(-> row
fields->data
clj->db))
first
db->clj
data->fields))
(defn insert-multi! [rows]
(->> (j/insert-multi! (get-conn)
:checks
(->> rows
(map fields->data)
(map clj->db)))
(map db->clj)
(map data->fields)))
(def all-keys #{:company-id :vendor-id :id :status :date :s3-uuid :s3-key :s3-url :check-number :memo :amount :paid-to :bank-account-id :type})
(defn add-sort-by [q sort-by asc]
(let [sort-by-key (keyword sort-by)]
(cond (nil? sort-by)
(helpers/merge-order-by q [:date])
(= :date sort-by-key)
(helpers/merge-order-by q [:date (when-not asc :desc)])
(all-keys sort-by-key)
(helpers/merge-order-by q
[sort-by-key (when-not asc :desc)]
[:date])
(= :vendor sort-by-key)
(-> q
(helpers/merge-left-join [:vendors :v] [:= :v.id :checks.vendor-id] )
(helpers/merge-order-by [:v.name (when-not asc :desc)]
[:date]))
(= :company sort-by-key)
(-> q
(helpers/merge-left-join [:companies :c] [:= :c.id :checks.company-id] )
(helpers/merge-order-by [:c.name (when-not asc :desc)]
[:date]))
:else
q)))
(defn base-graphql [{:keys [company-id vendor-id check-number bank-account-id status amount id statuses]}]
(cond-> base-query
(limited-companies id) (helpers/merge-where [:in :company-id (limited-companies id)])
(not (nil? company-id)) (helpers/merge-where [:= :company-id company-id])
(not (nil? bank-account-id)) (helpers/merge-where [:= :bank-account-id bank-account-id])
(not (nil? vendor-id)) (helpers/merge-where [:= :vendor-id vendor-id])
(not (nil? check-number)) (helpers/merge-where [:= :check-number check-number])
(not (nil? status)) (helpers/merge-where [:= :status status])
(not (nil? amount)) (helpers/merge-where [:= :amount amount])
(seq statuses ) (helpers/merge-where [:in :status statuses])))
(defn get-graphql [{:keys [start sort-by asc id limit] :as args :or {limit 100}}]
(query
(cond-> (base-graphql args)
true (add-sort-by sort-by asc)
true (assoc :limit limit)
start (assoc :offset start))))
(defn count-graphql [args]
(:count (first (query
(assoc (base-graphql args) :select [:%count.*])))))
(defn update! [row]
(j/update! (get-conn)
:checks
(-> row (fields->data) (clj->db))
["id = ?" (:id row)]))

View File

@@ -26,32 +26,3 @@
(defn get-all []
(map data->fields (query base-query)))
(defn get-by-id [id]
(first (map data->fields
(query (-> base-query
(helpers/merge-where [:= :id id]))))))
(defn upsert [id data]
(-> (sql/build
:update :companies
:set (clj->db (select-keys (fields->data data) all-fields))
:where [:= :id (if (int? id)
id
(Integer/parseInt id))])
execute!)
(get-by-id (if (int? id)
id
(Integer/parseInt id))))
(defn add-bank-account [id bank-account]
(let [company (get-by-id id)
company (update company :bank-accounts
(fn [ba]
(let [next-id (inc (apply max (conj (map :id ba) 0)))]
(conj (vec ba) (assoc bank-account :id next-id)))))]
(upsert id company)))

View File

@@ -62,127 +62,3 @@
(defn get-all []
(query base-query))
(defn find-conflicting [{:keys [id invoice-number company-id vendor-id] :as i}]
(query
(-> base-query
(helpers/merge-where [:and [:not= :id id]
[:= :invoice-number invoice-number]
[:= :company-id company-id]
[:= :vendor-id vendor-id]
[:not= :status "voided"]]))))
(defn get-multi [ids]
(query (-> base-query
(helpers/merge-where [:in :id ids]))))
(defn get-by-id [id]
(first (query (-> base-query
(helpers/merge-where [:= :id id])))))
(defn approve []
(j/update! (get-conn) :invoices {:imported true} [] ))
(defn update [v]
(j/update! (get-conn) :invoices (clj->db v) ["id = ?" (:id v)])
(get-by-id (:id v)))
(defn reject []
(j/delete! (get-conn) :invoices ["imported = false"]))
(defn get-unpaid [company]
(query
(if company
(-> base-query
(helpers/merge-where [:= :imported true])
(helpers/merge-where [:= :company-id (if (int? company)
company
(Integer/parseInt company))]))
(-> base-query
(helpers/merge-where [:= :imported true])))))
(defn get-pending [company]
(query
(if company
(-> base-query
(helpers/merge-where [:= :imported false])
(helpers/merge-where [:= :company-id (if (int? company)
company
(Integer/parseInt company))]))
(-> base-query
(helpers/merge-where [:= :imported false])))))
(defn add-sort-by [q sort-by asc]
(let [sort-by-key (keyword sort-by)]
(cond (nil? sort-by)
(helpers/merge-order-by q [:date])
(= :date sort-by-key)
(helpers/merge-order-by q [:date (when-not asc :desc)])
(all-keys sort-by-key)
(helpers/merge-order-by q
[sort-by-key (when-not asc :desc)]
[:date])
(= :vendor sort-by-key)
(-> q
(helpers/merge-left-join [:vendors :v] [:= :v.id :invoices.vendor-id] )
(helpers/merge-order-by [:v.name (when-not asc :desc)]
[:date]))
(= :company sort-by-key)
(-> q
(helpers/merge-left-join [:companies :c] [:= :c.id :invoices.company-id] )
(helpers/merge-order-by [:c.name (when-not asc :desc)]
[:date]))
:else
q)))
(defn base-graphql [{:keys [imported company-id status id statuses]}]
(cond-> base-query
(limited-companies id) (helpers/merge-where [:in :company-id (limited-companies id)])
(seq statuses ) (helpers/merge-where [:in :status statuses])
(not (nil? imported)) (helpers/merge-where [:= :imported imported])
(not (nil? status)) (helpers/merge-where [:= :status status])
(not (nil? company-id)) (helpers/merge-where [:= :company-id company-id])))
(defn get-graphql [{:keys [start sort-by asc limit] :as args :or {limit 100}}]
(query
(cond-> (base-graphql args)
true (add-sort-by sort-by asc)
true (assoc :limit limit)
start (assoc :offset start))))
(defn count-graphql [args]
(:count (first (query
(assoc (base-graphql args) :select [:%count.*])))))
(defn import [parsed-invoices companies vendors]
(->> (insert-multi!
(for [{:keys [total date invoice-number customer-identifier vendor-code] :as row} parsed-invoices]
(do
(dissoc (assoc row
:company-id (:id (parse/best-match companies customer-identifier))
:vendor-id (:id (first (filter #(= (:code %) vendor-code) vendors)))
:imported false
:potential-duplicate false)
:vendor-code))))
(map db->clj)))
(defn apply-payment [invoice-id amount]
(j/db-do-prepared (get-conn)
(-> (helpers/update :invoices)
(helpers/sset {:outstanding-balance (sql/call :- :outstanding-balance amount)})
(helpers/where [:= :id invoice-id])
(sql/format)))
(j/db-do-prepared (get-conn)
(-> (helpers/update :invoices)
(helpers/sset {:status "paid"})
(helpers/where [:and [:< :outstanding-balance 0.01]
[:= :id invoice-id]])
(sql/format))))

View File

@@ -6,47 +6,3 @@
(defn get-all []
(query {:select [:*]
:from [:invoices-expense-accounts]}))
(defn get-missing []
(query {:select [:i.id :v.default-expense-account :i.total]
:from [[:invoices :i]]
:join [[:vendors :v]
[:= :v.id :i.vendor-id]]
:left-join [[:invoices-expense-accounts :nonexist]
[:= :i.id :nonexist.invoice-id]]
:where [:and [:= :nonexist.id nil]
[:not= :v.default-expense-account nil]] }))
(defn get-for-invoice [id]
(query {:select [:*]
:from [:invoices-expense-accounts]
:where [:= :invoice-id id]}))
(defn assign-defaults! []
(j/db-do-prepared (get-conn)
(doto
(sql/format {:insert-into [[:invoices-expense-accounts [:invoice-id :expense-account-id :amount :location]]
{:select [:i.id (sql/raw "COALESCE (i.default_expense_account, v.default_expense_account)") :i.total :i.default_location]
:from [[:invoices :i]]
:left-join [[:vendors :v]
[:= :v.id :i.vendor-id]
[:invoices-expense-accounts :nonexist]
[:= :i.id :nonexist.invoice-id]]
:where [:and [:= :nonexist.id nil]
[:or [:not= :v.default-expense-account nil]
[:not= :i.default-expense-account nil]]] }] })
println)
))
(defn replace-for-invoice [invoice-id expense-accounts]
(j/db-do-prepared (get-conn)
(sql/format {:delete-from [:invoices-expense-accounts :i]
:where [:= :i.invoice-id invoice-id] }))
(println expense-accounts)
(j/insert-multi! (get-conn)
:invoices_expense_accounts
(doto (->> expense-accounts
(map (fn [x] (assoc x :invoice-id invoice-id)))
(map clj->db ))
println)) )

View File

@@ -8,99 +8,3 @@
[clojure.string :as str]
[honeysql.core :as sql]
[honeysql.helpers :as helpers]))
(def all-keys #{:id :vendor-id :email :body :subject :sent :scheduled})
(defn insert [row]
(db->clj (first (j/insert! (get-conn)
:reminders
(clj->db row)))))
(def base-query (sql/build :select :reminders.*
:from :reminders))
(defn get-by-id [id]
(query (-> base-query
(helpers/merge-where [:= :id id]))))
(defn update! [id data]
(println data)
(-> (sql/build
:update :reminders
:set (select-keys data all-keys )
:where [:= :id id])
execute!)
(get-by-id id))
(defn delete-all []
(j/delete! (get-conn) :reminders []))
(defn find-future [vendors]
(map db->clj (j/query (get-conn) (into [(str "SELECT * FROM reminders "
"WHERE vendor_id in ("
(str/join "," (take (count vendors) (repeat "?")))
") "
"AND "
"sent is NULL"
) ]
vendors))))
(defn get-ready []
(map db->clj (j/query (get-conn)
(str
" SELECT reminders.*, vendors.name as vendor_name "
" FROM reminders INNER join vendors on reminders.vendor_id = vendors.id "
" WHERE reminders.sent IS NULL AND reminders.scheduled < NOW()"))))
(defn finish [id]
(j/update! (get-conn) :reminders {:sent (time/now)} ["id = ?" id] ))
(defn add-sort-by [q sort-by asc]
(let [sort-by-key (keyword sort-by)]
(cond (all-keys sort-by-key)
(helpers/merge-order-by q [sort-by-key (when-not asc :desc)])
(= :vendor sort-by-key)
(-> q
(helpers/merge-left-join [:vendors :v] [:= :v.id :reminders.vendor-id] )
(helpers/merge-order-by [:v.name (when-not asc :desc)]))
:else
q)))
(defn base-graphql [{:keys [imported company-id]}]
base-query)
(defn get-graphql [{:keys [start sort-by asc] :as args}]
(query
(cond-> (base-graphql args)
(not (nil? sort-by) ) (add-sort-by sort-by asc)
true (assoc :limit 20)
start (assoc :offset start))))
(defn count-graphql [args]
(:count (first (query
(assoc (base-graphql args) :select [:%count.*])))))
(defn template []
{:subject "Reminder to send invoices"
:body (str "This is a reminder to please reply with a [format of invoice: pdf/excel]"
"version of last week's invoices for:"
"We would greatly appreciate it if you could send that to us by end of day on"
"Monday.")})
(defn send-emails [reminders]
(doseq [{:keys [vendor-name id email subject body]} reminders]
(when email
(println "Sending email to" email)
#_(ses/send-email :destination {:to-addresses [email]}
:source (:invoice-email env)
:message {:subject subject
:body {:html (str "<h1>Hello " vendor-name ",</h1><p>" body "</p> <p> - Integreat. </p>")
:text (str "Hello " vendor-name ",\r\n" body "\r\n - Integreat.")}}))
(finish id)))

View File

@@ -6,34 +6,8 @@
[honeysql-postgres.helpers :as postgres-helpers]
[auto-ap.db.utils :refer [clj->db kebab->snake db->clj get-conn query limited-companies] :as utils]))
(defn upsert! [row]
(j/db-do-prepared (get-conn)
(doto (sql/format (-> (helpers/insert-into :transactions)
(helpers/values [row])
(postgres-helpers/upsert (-> (postgres-helpers/on-conflict :id)
(postgres-helpers/do-update-set :post_date :status :check_id)
(helpers/where [:<> :EXCLUDED.check_id nil])))))
println)))
(def base-query (sql/build :select :*
:from :transactions))
(defn get-all []
(query base-query))
(defn base-graphql [{:keys [company-id id]}]
(cond-> base-query
(limited-companies id) (helpers/merge-where [:in :company-id (limited-companies id)])
(not (nil? company-id)) (helpers/merge-where [:= :company-id company-id])))
(defn get-graphql [{:keys [start sort-by asc limit] :as args :or {limit 100}}]
(query
(cond-> (base-graphql args)
#_#_(not (nil? sort-by) ) (add-sort-by sort-by asc)
true (assoc :limit limit)
start (assoc :offset start))))
(defn count-graphql [args]
(:count (first (query
(assoc (base-graphql args) :select [:%count.*])))))

View File

@@ -24,32 +24,3 @@
(defn get-all []
(map data->fields (query base-query)))
(defn get-by-id [id]
(first (map data->fields (query (-> base-query
(helpers/merge-where [:= :id id]))))))
(defn find-or-insert! [row]
(let [user (-> base-query
(helpers/merge-where [:and [:= :provider-id (:provider-id row)]
[:= :provider (:provider row)]])
query
first
data->fields)]
(if user
user
(-> (j/insert! (get-conn)
:users
(-> row
fields->data
clj->db))
first
db->clj
data->fields))))
(defn update! [row]
(j/update! (get-conn)
:users
(-> row (fields->data) (clj->db))
["id = ?" (:id row)]))

View File

@@ -43,29 +43,3 @@
(defn get-all []
(map data->fields (query base-query)))
(defn get-by-id [id]
(first (map data->fields
(query (-> base-query
(helpers/merge-where [:= :id id]))))))
(defn upsert [id data]
(-> (sql/build
:update :vendors
:set (unparse data)
:where [:= :id (if (int? id)
id
(Integer/parseInt id))])
execute!)
(get-by-id (if (int? id)
id
(Integer/parseInt id))))
(defn insert [data]
(let [[{:keys [id]}] (j/insert! (get-conn) :vendors (unparse data))]
(println "inserted vendor: " data ", id " id)
(get-by-id id)))
(defn find-with-reminders []
(query (-> base-query
(helpers/merge-where [:= :invoice-reminder-schedule "Weekly"]))))