switching to use real dates.

This commit is contained in:
Bryce Covert
2018-04-12 22:33:57 -07:00
parent e1e0835bee
commit 056bfc38a4
8 changed files with 64 additions and 19 deletions

View File

@@ -35,7 +35,9 @@
(if company
(-> base-query
(helpers/merge-where [:= :imported true])
(helpers/merge-where [:= :company-id company]))
(helpers/merge-where [:= :company-id (if (int? company)
company
(Integer/parseInt company))]))
(-> base-query
(helpers/merge-where [:= :imported true])))))
@@ -44,7 +46,9 @@
(if company
(-> base-query
(helpers/merge-where [:= :imported false])
(helpers/merge-where [:= :company-id company]))
(helpers/merge-where [:= :company-id (if (int? company)
company
(Integer/parseInt company))]))
(-> base-query
(helpers/merge-where [:= :imported false])))))

View File

@@ -3,9 +3,23 @@
[auto-ap.parse.templates :as t]
[clj-fuzzy.metrics :as m]
[clojure.java.shell :as sh]
[clojure.string :as str]))
[clojure.string :as str]
[clj-time.format :as f]
[clj-time.core :as time]))
(defmulti parse-value (fn [method _ _]
method))
(defmethod parse-value :clj-time
[_ format value]
(time/from-time-zone (f/parse (f/formatter format) value)
(time/time-zone-for-id "America/Los_Angeles")))
(defmethod parse-value nil
[_ _ value]
value)
(defn template-applies? [text {:keys [keywords]}]
(every? #(re-find % text) keywords))
@@ -20,8 +34,10 @@
:extract
(reduce-kv
(fn [result k v]
(assoc result k (some-> (first (map second (re-seq v text)))
str/trim )))
(let [value (some-> (first (map second (re-seq v text)))
str/trim )
[value-parser parser-params] (-> template :parser k)]
(assoc result k (parse-value value-parser parser-params value))))
{:vendor-code (:vendor template)}))]))
(defn parse [text]

View File

@@ -1,19 +1,22 @@
(ns auto-ap.parse.templates)
(def pdf-templates
[{:vendor "CHFW"
:keywords [#"CHEF'S WAREHOUSE"]
:extract {:total #"2 WKS C\.C\.\s+([\d.,]+)"
:customer-identifier #"\n([A-Z][A-Z ]+)\s{2,}"
:date #"\s+([0-9]+/[0-9]+/[0-9]+)"
:invoice-number #"\s+[0-9]+/[0-9]+/[0-9]+\s+([0-9]+)"}}
:invoice-number #"\s+[0-9]+/[0-9]+/[0-9]+\s+([0-9]+)"}
:parser {:date [:clj-time "MM/dd/yyyy"]}}
{:vendor "GGM"
:keywords [#"Golden Gate Meat"]
:extract {:total #"Invoice Total\:\s+\$([\d.,]+)"
:customer-identifier #"Bill To\s*:\s*([\w ]+)\s{2,}"
:date #"Printed:\s+([0-9]+/[0-9]+/[0-9]+)"
:invoice-number #"Invoice\s+[^\n]+\n[^\n]+\n\s+([0-9]+)"}}
:invoice-number #"Invoice\s+[^\n]+\n[^\n]+\n\s+([0-9]+)"}
:parser {:date [:clj-time "MM/dd/yyyy"]}}
{:vendor "CINTAS"
:keywords [#"CINTAS CORPORATION"]
@@ -21,6 +24,7 @@
:customer-identifier #"BILL TO\s*:\s{2,}([\w ]+)\s{2,}"
:date #"INVOICE DATE\s*\n.*\s+([0-9]+/[0-9]+/[0-9]+)"
:total #"INVOICE TOTAL\s+([0-9.]+)"}
:parser {:date [:clj-time "MM/dd/yy"]}
:multi #"\f\f"}])
(def excel-templates