From cd9105488decebd7159d9bedbf0da89d10be0df9 Mon Sep 17 00:00:00 2001 From: Bryce Covert Date: Sun, 5 Jan 2020 09:00:50 -0800 Subject: [PATCH] adding ignore. --- src/clj/auto_ap/datomic/migrate.clj | 4 +- .../datomic/migrate/add_general_ledger.clj | 6 +++ src/clj/auto_ap/ledger.clj | 38 +++++++------- src/clj/user.clj | 51 +++++++++++++++++++ 4 files changed, 80 insertions(+), 19 deletions(-) create mode 100644 src/clj/user.clj diff --git a/src/clj/auto_ap/datomic/migrate.clj b/src/clj/auto_ap/datomic/migrate.clj index 5cdf993a..7a6e8d4e 100644 --- a/src/clj/auto_ap/datomic/migrate.clj +++ b/src/clj/auto_ap/datomic/migrate.clj @@ -137,7 +137,9 @@ :auto-ap/add-client-identifier2 {:txes add-client-identifier :requires [:auto-ap/make-every-account-visible]} :auto-ap/add-transaction-rules {:txes add-general-ledger/add-transaction-rules :requires [:auto-ap/add-exclude-to-transaction]} :auto-ap/add-bank-account-locations {:txes add-general-ledger/add-bank-account-locations :requires [:auto-ap/add-transaction-rules]} - :auto-ap/convert-transactions {:txes-fn `add-general-ledger/convert-transactions :requires [:auto-ap/add-bank-account-locations]}}] + + :auto-ap/convert-transactions {:txes-fn `add-general-ledger/convert-transactions :requires [:auto-ap/add-bank-account-locations]} + :auto-ap/add-exclude-to-invoice {:txes add-general-ledger/add-exclude-to-invoice :requires [:auto-ap/convert-transactions]}}] (println "Conforming database...") (c/ensure-conforms conn norms-map) (when (not (seq args)) diff --git a/src/clj/auto_ap/datomic/migrate/add_general_ledger.clj b/src/clj/auto_ap/datomic/migrate/add_general_ledger.clj index 51587508..98d968f5 100644 --- a/src/clj/auto_ap/datomic/migrate/add_general_ledger.clj +++ b/src/clj/auto_ap/datomic/migrate/add_general_ledger.clj @@ -313,6 +313,12 @@ :db/cardinality :db.cardinality/one :db/doc "Whether to exclude from the ledger"}]]) +(def add-exclude-to-invoice + [[{:db/ident :invoice/exclude-from-ledger + :db/valueType :db.type/boolean + :db/cardinality :db.cardinality/one + :db/doc "Whether to exclude from the ledger"}]]) + (def add-transaction-rules [[{:db/ident :transaction-rule/client :db/valueType :db.type/ref diff --git a/src/clj/auto_ap/ledger.clj b/src/clj/auto_ap/ledger.clj index 099677d2..43973377 100644 --- a/src/clj/auto_ap/ledger.clj +++ b/src/clj/auto_ap/ledger.clj @@ -34,25 +34,26 @@ (defmethod entity-change->ledger :invoice [db [type id]] (let [entity (d/pull db ['* {:invoice/vendor '[*] :invoice/payment '[*]}] id)] - (remove-nils - {:journal-entry/source "invoice" - :journal-entry/client (:db/id (:invoice/client entity)) - :journal-entry/date (:invoice/date entity) - :journal-entry/original-entity (:db/id entity) - :journal-entry/vendor (:db/id (:invoice/vendor entity)) - :journal-entry/amount (:invoice/total entity) + (when-not (= true (:invoice/exclude-from-ledger entity)) + (remove-nils + {:journal-entry/source "invoice" + :journal-entry/client (:db/id (:invoice/client entity)) + :journal-entry/date (:invoice/date entity) + :journal-entry/original-entity (:db/id entity) + :journal-entry/vendor (:db/id (:invoice/vendor entity)) + :journal-entry/amount (:invoice/total entity) - :journal-entry/line-items (into [{:journal-entry-line/account (a/get-account-by-numeric-code-and-sets 2110 ["default"]) - :journal-entry-line/location "A" - :journal-entry-line/credit (:invoice/total entity)}] - (map (fn [ea] - (remove-nils {:journal-entry-line/account (:db/id (:invoice-expense-account/account ea)) - :journal-entry-line/location (or (:invoice-expense-account/location ea) "HQ") ;; TODO? - :journal-entry-line/debit (:invoice-expense-account/amount ea)})) - (:invoice/expense-accounts entity))) - :journal-entry/cleared (and (< (:invoice/outstanding-balance entity) 0.01) - (every? #(= :payment-status/cleared (:payment/status %)) (:invoice/payments entity)) - )}))) + :journal-entry/line-items (into [{:journal-entry-line/account (a/get-account-by-numeric-code-and-sets 2110 ["default"]) + :journal-entry-line/location "A" + :journal-entry-line/credit (:invoice/total entity)}] + (map (fn [ea] + (remove-nils {:journal-entry-line/account (:db/id (:invoice-expense-account/account ea)) + :journal-entry-line/location (or (:invoice-expense-account/location ea) "HQ") ;; TODO? + :journal-entry-line/debit (:invoice-expense-account/amount ea)})) + (:invoice/expense-accounts entity))) + :journal-entry/cleared (and (< (:invoice/outstanding-balance entity) 0.01) + (every? #(= :payment-status/cleared (:payment/status %)) (:invoice/payments entity)) + )})))) (defmethod entity-change->ledger :transaction [db [type id]] @@ -126,6 +127,7 @@ (group-by :e) (mapcat #(datums->impacted-entity db %)) (set)) + _ (println "affected" (count affected-entities)) d-txs (->> affected-entities (map #(entity-change->ledger db %)) (filter seq)) diff --git a/src/clj/user.clj b/src/clj/user.clj new file mode 100644 index 00000000..4921ff15 --- /dev/null +++ b/src/clj/user.clj @@ -0,0 +1,51 @@ +(ns user + (:require [auto-ap.datomic :refer [uri]] + [datomic.api :as d] + + [clj-time.coerce :as c] + [clj-time.core :as t])) + +(defn exclude-until-date [client end] + (let [conn (d/connect uri)] + (doseq [p (->> + (d/query {:query {:find '[?e] + :in '[$ ?client ?end ] + :where [ + '[?e :invoice/client ?c] + '[?c :client/code ?client] + '[?e :invoice/date ?d ] + '[(<= ?d ?end) ]]} + :args [(d/db conn) + client + (c/to-date end)]}) + (mapv first) + (mapv (fn [i] + {:db/id i + :invoice/exclude-from-ledger true})) + (partition-all 100))] + + @(d/transact conn p) + (println "process 100")) + + (doseq [p (->> + (d/query {:query {:find '[?e] + :in '[$ ?client ?end ] + :where [ + '[?e :transaction/client ?c] + '[?c :client/code ?client] + '[?e :transaction/date ?d ] + '[(<= ?d ?end) ]]} + :args [(d/db conn) + client + (c/to-date end)]}) + (mapv first) + (mapv (fn [i] + {:db/id i + :transaction/approval-status :transaction-approval-status/excluded})) + (partition-all 100))] + + @(d/transact conn p) + (println "process 100")))) + + +