making sysco and mama lus work.

This commit is contained in:
Bryce Covert
2020-04-11 09:26:59 -07:00
parent 6d10e4abb2
commit 19caf80bd8
6 changed files with 85 additions and 43 deletions

View File

@@ -7,11 +7,15 @@
(defn determine
[[header :as z]]
(prn header)
(cond (str/includes? (second header) "Customer's PO No.")
:mama-lus
(doto (cond (str/includes? (second header) "Customer's PO No.")
:mama-lus
:else
nil))
(str/includes? (str header) "Closed Date")
:sysco
:else
nil)
println))
(defmulti parse-csv
determine
@@ -29,6 +33,23 @@
(first))]
(u/parse-value :clj-time valid-fmt d)))
(defmethod parse-csv :sysco
[rows]
(println "Importing Sysco")
(transduce
(comp (drop 1)
(map (fn [[invoice-number invoice-date _ amount :as row]]
{:vendor-code "Sysco"
:customer-identifier nil
:invoice-number invoice-number
:date (parse-date-fallover invoice-date ["M/d/yyyy"])
:total (str/replace amount #"[,\$]" "")
:text (str/join " " row)
:full-text (str/join " " row)})))
conj
[]
rows))
(defmethod parse-csv :mama-lus
[rows]
(println "MAMA LU4")
@@ -51,7 +72,6 @@
nil)
(defn parse-file [file filename]
(println "HEREERE")
(with-open [reader (io/reader file)]
(let [rows (csv/read-csv reader :separator \,)]
(parse-csv rows))))

View File

@@ -324,6 +324,30 @@
:total [#"Total Invoice" 0 5]
:date [#"Date" 0 0 #"Date: (.*)"]
:invoice-number [#"Invoice #" 0 0 #"Invoice #: (.*)"]}}
{:vendor "Mama Lu's Foods"
:keywords [#"Mama Lu's Foods"]
:extract (fn [wb vendor]
(let [[sheet] (d/sheet-seq wb)]
(transduce (comp
(drop 5)
(filter
(fn [r]
(and
r
(->> r d/cell-seq second d/read-cell))))
(map
(fn [r]
(let [[_ customer-order-number num date name amount] (map d/read-cell (d/cell-seq r))]
{:customer-identifier (second (re-find #"([^:]*):" name))
:text name
:full-text name
:date date
:invoice-number (str customer-order-number "-" (int num))
:total (str amount)
:vendor-code vendor}))))
conj
[]
(d/row-seq sheet))))}
{:vendor "DVW Commercial"
:keywords [#"Total for" #"Num"]
:extract (fn [wb vendor]
@@ -351,30 +375,6 @@
:keywords [#"Alt_invoice_number"]
:extract (fn [wb vendor]
(let [[sheet] (d/sheet-seq wb)]
(println "COUNT" (count (transduce (comp
(drop-while (fn [c]
(not (re-find #"Customer_id" (str (d/read-cell c))))))
(drop 9)
(filter (fn [c]
(= 0 (.getColumnIndex c))))
(filter (fn [c]
(not (str/blank? (str/trim (or (d/read-cell (d/select-cell (offset c 1 0) sheet)) ""))))))
(map (fn [c]
{:customer-identifier (str/trim (d/read-cell (d/select-cell (offset c 1 0) sheet)))
:text (d/read-cell (d/select-cell (offset c 1 0) sheet))
:full-text (d/read-cell (d/select-cell (offset c 1 0) sheet))
:date (u/parse-value :clj-time "MM/dd/yyyy" (str/trim (d/read-cell (d/select-cell (offset c 5 0) sheet))))
:invoice-number (->>
(re-find #"^(?:0+([A-Z0-9]+))|([A-Z]+[A-Z0-9]+)" (str/trim (d/read-cell (d/select-cell (offset c 2 0) sheet))))
(drop 1 )
(filter identity)
first)
:total (str (d/read-cell (d/select-cell (offset c 7 0) sheet)))
:vendor-code vendor}))
(filter :customer-identifier))
conj
[]
(d/cell-seq sheet))))
(transduce (comp
(drop-while (fn [c]
(not (re-find #"Customer_id" (str (d/read-cell c))))))