From cd5b1cbb8a85cfc7c0ba916d4b7dde0af52c926c Mon Sep 17 00:00:00 2001 From: Bryce Covert Date: Tue, 18 Jan 2022 16:15:14 -0800 Subject: [PATCH] invoice fixes. --- src/clj/auto_ap/background/sysco.clj | 3 ++- src/clj/auto_ap/datomic/invoices.clj | 2 +- src/clj/auto_ap/parse/templates.clj | 7 ------- src/clj/auto_ap/routes/invoices.clj | 16 +++++++--------- 4 files changed, 10 insertions(+), 18 deletions(-) diff --git a/src/clj/auto_ap/background/sysco.clj b/src/clj/auto_ap/background/sysco.clj index ffe42769..fde8a13c 100644 --- a/src/clj/auto_ap/background/sysco.clj +++ b/src/clj/auto_ap/background/sysco.clj @@ -16,6 +16,7 @@ [datomic.api :as d] [mount.core :as mount] [unilog.context :as lc] + #_{:clj-kondo/ignore [:unused-namespace]} [yang.scheduler :as scheduler]) (:import (java.util UUID))) @@ -126,7 +127,7 @@ (let [transaction (->> keys (mapcat (fn [k] (try - (let [invoice-key (str "invoice-files/" (UUID/randomUUID) ".csv") + (let [invoice-key (str "invoice-files/" (UUID/randomUUID) ".csv") ; invoice-url (str "http://" (:data-bucket env) ".s3-website-us-east-1.amazonaws.com/" invoice-key)] (s3/copy-object {:source-bucket-name (:data-bucket env) :destination-bucket-name (:data-bucket env) diff --git a/src/clj/auto_ap/datomic/invoices.clj b/src/clj/auto_ap/datomic/invoices.clj index efd154a3..cd110e0e 100644 --- a/src/clj/auto_ap/datomic/invoices.clj +++ b/src/clj/auto_ap/datomic/invoices.clj @@ -263,7 +263,7 @@ (time/plus (time/days (d-vendors/terms-for-client-id vendor client-id))) coerce/to-date)) automatically-paid? (boolean (seq (d/q '[:find [?c ...] - :in $ ?v + :in $ ?v ?c :where [?v :vendor/automatically-paid-when-due ?c]] db vendor-id diff --git a/src/clj/auto_ap/parse/templates.clj b/src/clj/auto_ap/parse/templates.clj index 9432c5c0..98353abd 100644 --- a/src/clj/auto_ap/parse/templates.clj +++ b/src/clj/auto_ap/parse/templates.clj @@ -40,7 +40,6 @@ {:vendor "Carbonic Service Inc" :keywords [#"CARBONIC SERVICE INC"] :extract {:invoice-number #"Invoice #\s*\n\s*[\w\.]+\s+[\w\./]+(.*)\s*\n" - :customer-identifier #"Bill To[^\n]+\n[^\n]*\n([\w ]+)\s{2,}" :date #"Invoice #\s*\n\s*[\w\.]+\s+([\w\./]+)" :total #"Total\s+\$([0-9.,]+)" :account-number #"Account #\s+(\d+)"} @@ -105,7 +104,6 @@ {:vendor "Southern Glazers" :keywords [#"Southern Glazer's"] :extract {:date #"INVOICE DATE(?s:.*)(?= (?:[0-9]+/[0-9]+/[0-9]+)\s+([0-9]+/[0-9]+/[0-9]+)) " - :customer-identifier #"SOLD TO:(?:.*)(?=\n)\n(.*)(?=\s{2,})" ;; ([\S ]+)\s{2,} :invoice-number #"INVOICE\n(?:.*?)(?=\d{4,})(\d+)" :total #"PAY THIS AMOUNT(?s:.*)(?= ([0-9,]+\.[0-9]{2}))" :account-number #"ACCOUNT #.*\n.*\n\s+(\d+)"} @@ -118,7 +116,6 @@ {:vendor "Golden Brands San Jose" :keywords [#"GOLDEN BRANDS"] :extract {:date #"(?:.*\n){4}(.*)" ;; HOW TO GO TO SPCIFIC LINE - :customer-identifier #"Account:(?:.*\n)(.*(?=\s{2,}))" :account-number #"Account:\s*(.*?)\n" :invoice-number #"Invoice#: (\d+)" :total #"Invoice Total\s+([0-9,]+\.[0-9]{2})"} @@ -161,7 +158,6 @@ {:vendor "Worldwide Produce" :keywords [#"WORLDWIDE PRODUCE"] :extract {:date #"([0-9]+/[0-9]+/[0-9]+)" - :customer-identifier #"Bill to.*\n\s*(.*?(?=(\s{2,}|\()))" :invoice-number #"(?:Invoice|Adjustment) No\.\s+(\d+)" :total #"Total \S*\s+([0-9\.,\-]+)" :account-number #"Customer No.\s+(.*?)\s{2}"} @@ -175,7 +171,6 @@ {:vendor "Auto-Chlor" :keywords [#"AUTO-CHLOR"] :extract {:date #"DATE : ([0-9]+/[0-9]+/[0-9]+)" - :customer-identifier #"(.*?)\s{2,}.*CUSTOMER#" :invoice-number #"INVOICE# :\s+([0-9]+)" :total #"TOTAL DUE :\s+\$([0-9,.]+)" :account-number #"CUSTOMER#\s+:\s+(\d+)"} @@ -229,7 +224,6 @@ {:vendor "General Produce Company" :keywords [#"1330 NORTH B"] :extract {:date #"DATE.*\n.*\n.*?([0-9]+/[0-9]+/[0-9]+)" - :customer-identifier #"SPECIAL INSTRUCTIONS.*\n\s+(.*?)\s{2,}" :invoice-number #"CREDIT NO.*\n.*\n.*?(\d{5,}?)\s+" :account-number #"CUST NO.*\n.*\n\s+(\d+)" :total #"TOTAL:\s+\|\s*(.*)"} @@ -262,7 +256,6 @@ {:vendor "Wine Warehouse" :keywords [#"WINE WAREHOUSE" #"Bottle prices include"] :extract {:date #"INVOICE DATE\s+([0-9]+/[0-9]+/[0-9]+)" - :customer-identifier #"SHIP-TO-PARTY.*\n(.*?)(?=\s{2,})" :invoice-number #"INV #\s+(\d+)" :total #"PLEASE PAY THIS AMOUNT\s+([0-9,]+\.[0-9]{2})" :account-number #"CUSTOMER NUMBER\s+(\d+)"} diff --git a/src/clj/auto_ap/routes/invoices.clj b/src/clj/auto_ap/routes/invoices.clj index c3e09dd8..40a45023 100644 --- a/src/clj/auto_ap/routes/invoices.clj +++ b/src/clj/auto_ap/routes/invoices.clj @@ -126,21 +126,19 @@ (defn import->invoice [{:keys [invoice-number source-url customer-identifier account-number total date vendor-code text full-text client-override vendor-override location-override]} clients] - (let [matching-client (or (and account-number - (parse/best-match clients account-number 0.0)) - (and customer-identifier - (parse/best-match clients customer-identifier)) - (when client-override - (first (filter (fn [c] - (= (:db/id c) (Long/parseLong client-override))) - clients)))) + (let [matching-client (cond + account-number (parse/best-match clients account-number 0.0) + customer-identifier (parse/best-match clients customer-identifier) + client-override (first (filter (fn [c] + (= (:db/id c) (Long/parseLong client-override))) + clients))) matching-vendor (match-vendor vendor-code vendor-override) matching-location (or (when-not (str/blank? location-override) location-override) (parse/best-location-match matching-client text full-text))] (remove-nils #:invoice {:invoice/client (:db/id matching-client) - :invoice/client-identifier customer-identifier + :invoice/client-identifier (or account-number customer-identifier) :invoice/vendor (:db/id matching-vendor) :invoice/source-url source-url :invoice/invoice-number invoice-number