invoice tweaks.

This commit is contained in:
2024-06-26 19:47:59 -07:00
parent 41398944d2
commit 06b9e6e02c
4 changed files with 60 additions and 12 deletions

View File

@@ -48,6 +48,8 @@
(catch Exception e
(alog/warn ::cant-parse-value :error e :raw value))))))
{:vendor-code (:vendor template)
:template (str (:vendor template) " - selected because it matched "
(pr-str (:keywords template)))
:text text
:full-text full-text}))])))
@@ -86,7 +88,8 @@
:vendor-code (-> (vendors/best-match (get i "vendor_identifier") )
(get "label"))
:total (get i "total")
:invoice-number (get i "invoice_number")})
:invoice-number (get i "invoice_number")
:template "None found - defaulting to ChatGPT"})
)
(catch Exception e
(alog/warn ::glimpse2-not-work :error e)

View File

@@ -118,11 +118,21 @@
{:vendor "Don Vito Ozuna Food Corp"
:keywords [#"408-465-2010"]
:extract {:date #"([0-9]+/[0-9]+/[0-9]+)"
:customer-identifier #"To:[^\n]*\n\s+([A-Za-z' ]+)\s{2}"
:customer-identifier #"Bill To.*?\n(.*?)\s{2,}"
:invoice-number #"(?:[0-9]+/[0-9]+/[0-9]+)\s{2,}(\d+)"
:total #"Please remit payment to\s{2,}\$([\-0-9.]+)"}
:parser {:date [:clj-time "MM/dd/yyyy"]} }
;; DON VITO STATEMENT
{:vendor "Don Vito Ozuna Food Corp"
:keywords [#"Don Vito Ozuna Food Corp.*?\n.*?Statement"]
:extract {:date #"([0-9]+/[0-9]+/[0-9]+)"
:customer-identifier #"To:.*?\n\s*(.*)?\s{2,}"
:invoice-number #"INV #(\d+)"
:total #"Amount \$([\d\-\.]+?)\.\s{2,}"}
:parser {:date [:clj-time "MM/dd/yyyy"]}
:multi #"\n"
:multi-match? #"\d+/\d+/\d+.*?INV"}
;; PFG - LEDYARD
{:vendor "Performance Food Group - LEDYARD"
@@ -223,7 +233,7 @@
;; Cheetah
{:vendor "Cheetah"
:keywords [#"Delivery date: [\d\-]+\s{2,}Payment"]
:keywords [#"Delivery date: [\d\-]+\s{2,}"]
:extract {:date #"Delivery date: ([0-9\-]+)"
:customer-identifier #"Shipping.*\n(.*)"
:invoice-number #"Invoice #: (\d+)"

View File

@@ -46,8 +46,8 @@
value (str "20" year "-" month "-" day) ]
(try
(reduced (time/from-time-zone (f/parse (f/formatter format) value)
(time/time-zone-for-id "America/Los_Angeles")))
(time/from-time-zone (f/parse (f/formatter format) value)
(time/time-zone-for-id "America/Los_Angeles"))
(catch Exception e
(alog/warn ::cant-parse-date :error e :raw-value (str value))
nil))))

View File

@@ -684,7 +684,7 @@
(:db-after tx)
(map :e (:tx-data tx))))
(throw (ex-info "No new invoices found."
{})))
{:template (:template (first imports))})))
tx)))
(defn import-internal [tempfile filename force-client force-location force-vendor identity]
@@ -707,7 +707,18 @@
:source-url (str "https://" (:data-bucket env)
"/"
s3-location))))]
(import-uploaded-invoice identity imports))
(try
(import-uploaded-invoice identity imports)
(catch Exception e
(alog/warn ::couldnt-import-upload
:error e
:template (:template ( first imports)))
(throw (ex-info (ex-message e)
{:template (:template ( first imports))
:sample (first imports)}
e))))
imports)
(catch Exception e
(alog/warn ::couldnt-import-upload
:error e)
@@ -722,14 +733,17 @@
results (reduce
(fn [result {:keys [filename tempfile]}]
(try
(import-internal tempfile filename force-client force-location force-vendor (:identity request) )
(update result :results conj {:filename filename
:response "success!"})
(let [i (import-internal tempfile filename force-client force-location force-vendor (:identity request) )]
(update result :results conj {:filename filename
:response "success!"
:template (:template (first i))}))
(catch Exception e
(-> result
(assoc :error? true)
(update :results conj {:filename filename
:response (.getMessage e)})))))
:response (.getMessage e)
:sample (:sample (ex-data e))
:template (:template (ex-data e))})))))
{:error? false :results []}
file)]
(html-response [:div#page-notification.p-4.rounded-lg
@@ -737,6 +751,15 @@
"bg-red-50 text-red-700"
"bg-primary-50 text-primary-700")}
[:table
[:thead
[:tr [:td "File"] [:td "Result"]
(if (:error? results)
[:td "Template"])
(if (:error? results)
[:td "Sample match"])]
#_[:tr "Result"]
#_[:tr "Template"]
]
(for [r (:results results)]
[:tr
[:td.p-2.border
@@ -748,7 +771,19 @@
{:class (if (:error? results)
"bg-red-50 text-red-700 border-red-300"
"bg-primary-50 text-primary-700 border-green-500")}
(:response r)]])]]
(:response r)]
(if (:error? results )
[:td.p-2.border
{:class "bg-red-50 text-red-700 border-red-300"}
"Template: " (:template r)])
(if (:error? results )
[:td.p-2.border
{:class "bg-red-50 text-red-700 border-red-300"}
[:ul
(for [[k v] (dissoc (:sample r) :template :source-url)]
[:li (name k) ": " (str v)])]
#_(:template r)])])]]
:headers
{"hx-trigger" "invalidated"})
))