graphql used for invoices
This commit is contained in:
@@ -1,66 +1,56 @@
|
||||
(ns auto-ap.db.invoices
|
||||
(:require [auto-ap.db.utils :refer [clj->db db->clj get-conn]]
|
||||
(:require [auto-ap.db.utils :refer [clj->db db->clj get-conn query] :as utils]
|
||||
[auto-ap.parse :as parse]
|
||||
[auto-ap.db.companies :as companies]
|
||||
[auto-ap.db.vendors :as vendors]
|
||||
[auto-ap.entities.companies :as company]
|
||||
[auto-ap.entities.vendors :as vendor]
|
||||
[clojure.java.jdbc :as j]
|
||||
[clojure.string :as str]))
|
||||
[clojure.string :as str]
|
||||
[honeysql.core :as sql]
|
||||
[honeysql.helpers :as helpers]))
|
||||
|
||||
(defn insert-multi! [rows]
|
||||
(j/insert-multi! (get-conn)
|
||||
:invoices
|
||||
(map clj->db rows)))
|
||||
|
||||
(defn with-relations [results]
|
||||
(let [companies (reduce
|
||||
#(assoc %1 (:id %2) %2)
|
||||
{}
|
||||
(companies/get-all))
|
||||
vendors (reduce
|
||||
#(assoc %1 (:id %2) %2)
|
||||
{}
|
||||
(vendors/get-all))]
|
||||
(println companies vendors)
|
||||
(->> results
|
||||
(map #(assoc % :vendor (vendors (:vendor-id %))))
|
||||
(map #(assoc % :company (companies (:company-id %)))))))
|
||||
(def base-query (sql/build :select :*
|
||||
:from :invoices))
|
||||
|
||||
|
||||
(defn get-all []
|
||||
(->> (j/query (get-conn)
|
||||
(str " SELECT invoices.* "
|
||||
" FROM invoices "))
|
||||
(map db->clj)
|
||||
with-relations
|
||||
))
|
||||
|
||||
(query base-query))
|
||||
|
||||
(defn approve []
|
||||
(map db->clj (j/update! (get-conn) :invoices {:imported true} [] )))
|
||||
(j/update! (get-conn) :invoices {:imported true} [] ))
|
||||
|
||||
(defn reject []
|
||||
(j/delete! (get-conn) :invoices ["imported = false"]))
|
||||
|
||||
(defn get-unpaid [company]
|
||||
(if company
|
||||
(with-relations (map db->clj (j/query (get-conn) ["SELECT * FROM invoices WHERE imported=true AND company_id = ?" (Integer/parseInt company)])))
|
||||
(with-relations (map db->clj (j/query (get-conn) "SELECT * FROM invoices WHERE imported=true")))))
|
||||
(query
|
||||
(if company
|
||||
(-> base-query
|
||||
(helpers/merge-where [:= :imported true])
|
||||
(helpers/merge-where [:= :company-id company]))
|
||||
(-> base-query
|
||||
(helpers/merge-where [:= :imported true])))))
|
||||
|
||||
(defn get-pending [company]
|
||||
(if company
|
||||
(with-relations (map db->clj (j/query (get-conn) ["SELECT * FROM invoices WHERE (imported=false or imported is null) AND company_id = ?" (Integer/parseInt company)])))
|
||||
(with-relations (map db->clj (j/query (get-conn) "SELECT * FROM invoices WHERE imported=false or imported is null")))))
|
||||
(query
|
||||
(if company
|
||||
(-> base-query
|
||||
(helpers/merge-where [:= :imported false])
|
||||
(helpers/merge-where [:= :company-id company]))
|
||||
(-> base-query
|
||||
(helpers/merge-where [:= :imported false])))))
|
||||
|
||||
(defn query [params]
|
||||
(let [ks (keys params)
|
||||
sql (str " SELECT * FROM invoices "
|
||||
(when (seq params)
|
||||
" WHERE ")
|
||||
(str/join " AND " (map (fn [k] (str (name k) " = ?")) ks)))
|
||||
vs (map params ks)]
|
||||
|
||||
(j/query (get-conn) (into [sql] vs))))
|
||||
(defn get-graphql [{:keys [imported company-id]}]
|
||||
(query
|
||||
(cond-> base-query
|
||||
(not (nil? imported)) (helpers/merge-where [:= :imported imported])
|
||||
(not (nil? company-id)) (helpers/merge-where [:= :company-id company-id]))))
|
||||
|
||||
(defn import [parsed-invoices companies vendors]
|
||||
(insert-multi!
|
||||
@@ -71,4 +61,4 @@
|
||||
:vendor-id (:id (first (filter #(= (:code %) vendor-code) vendors)))
|
||||
:imported false
|
||||
:potential-duplicate false)
|
||||
:vendor-code)))))
|
||||
:vendor-code)))))
|
||||
|
||||
Reference in New Issue
Block a user