Adds excel cash payments
This commit is contained in:
@@ -328,9 +328,10 @@
|
|||||||
:payment/memo memo
|
:payment/memo memo
|
||||||
:payment/status :payment-status/cleared)
|
:payment/status :payment-status/cleared)
|
||||||
transaction {:db/id (str "transaction-" (:db/id vendor))
|
transaction {:db/id (str "transaction-" (:db/id vendor))
|
||||||
:transaction/amount (:payment/amount base-payment)
|
:transaction/amount (- (:payment/amount base-payment))
|
||||||
:transaction/payment (str (:db/id vendor))
|
:transaction/payment (str (:db/id vendor))
|
||||||
:transaction/client (:db/id client)
|
:transaction/client (:db/id client)
|
||||||
|
:transaction/status "POSTED"
|
||||||
:transaction/bank-account (:db/id bank-account)
|
:transaction/bank-account (:db/id bank-account)
|
||||||
:transaction/id #_{:clj-kondo/ignore [:unresolved-var]} (digest/sha-256 transaction-id)
|
:transaction/id #_{:clj-kondo/ignore [:unresolved-var]} (digest/sha-256 transaction-id)
|
||||||
:transaction/raw-id transaction-id
|
:transaction/raw-id transaction-id
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
(ns auto-ap.routes.invoices
|
(ns auto-ap.routes.invoices
|
||||||
(:require [auto-ap.datomic :refer [remove-nils uri]]
|
(:require [auto-ap.datomic :refer [remove-nils uri conn]]
|
||||||
[auto-ap.datomic.clients :as d-clients]
|
[auto-ap.datomic.clients :as d-clients]
|
||||||
[auto-ap.datomic.invoices :as d-invoices]
|
[auto-ap.datomic.invoices :as d-invoices]
|
||||||
|
[auto-ap.datomic.accounts :as a]
|
||||||
[auto-ap.datomic.vendors :as d-vendors]
|
[auto-ap.datomic.vendors :as d-vendors]
|
||||||
[auto-ap.graphql.utils :refer [assert-admin assert-can-see-client]]
|
[auto-ap.graphql.utils :refer [assert-admin assert-can-see-client]]
|
||||||
[auto-ap.import.manual :as manual]
|
[auto-ap.import.manual :as manual]
|
||||||
@@ -19,7 +20,8 @@
|
|||||||
[ring.middleware.json :refer [wrap-json-response]]
|
[ring.middleware.json :refer [wrap-json-response]]
|
||||||
[unilog.context :as lc]
|
[unilog.context :as lc]
|
||||||
[amazonica.aws.s3 :as s3]
|
[amazonica.aws.s3 :as s3]
|
||||||
[config.core :refer [env]])
|
[config.core :refer [env]]
|
||||||
|
[digest])
|
||||||
(:import java.util.UUID))
|
(:import java.util.UUID))
|
||||||
|
|
||||||
(defn reset-id [i]
|
(defn reset-id [i]
|
||||||
@@ -184,7 +186,9 @@
|
|||||||
(defn invoice-rows->transaction [rows user]
|
(defn invoice-rows->transaction [rows user]
|
||||||
(->> rows
|
(->> rows
|
||||||
(mapcat (fn [{:keys [vendor-id total client-id date invoice-number default-location check automatically-paid-when-due]}]
|
(mapcat (fn [{:keys [vendor-id total client-id date invoice-number default-location check automatically-paid-when-due]}]
|
||||||
(let [invoice #:invoice {:db/id (.toString (java.util.UUID/randomUUID))
|
(let [payment-id (.toString (java.util.UUID/randomUUID))
|
||||||
|
transaction-id (.toString (java.util.UUID/randomUUID))
|
||||||
|
invoice #:invoice {:db/id (.toString (java.util.UUID/randomUUID))
|
||||||
:vendor vendor-id
|
:vendor vendor-id
|
||||||
:client client-id
|
:client client-id
|
||||||
:default-location default-location
|
:default-location default-location
|
||||||
@@ -203,16 +207,39 @@
|
|||||||
payment (when (= :invoice-status/paid (:invoice/status invoice))
|
payment (when (= :invoice-status/paid (:invoice/status invoice))
|
||||||
#:invoice-payment {:invoice (:db/id invoice)
|
#:invoice-payment {:invoice (:db/id invoice)
|
||||||
:amount (:invoice/total invoice)
|
:amount (:invoice/total invoice)
|
||||||
:payment (remove-nils #:payment {:db/id (.toString (java.util.UUID/randomUUID))
|
:payment (remove-nils #:payment {:db/id payment-id
|
||||||
:vendor (:invoice/vendor invoice)
|
:vendor (:invoice/vendor invoice)
|
||||||
:client (:invoice/client invoice)
|
:client (:invoice/client invoice)
|
||||||
:type :payment-type/cash
|
:type :payment-type/cash
|
||||||
:amount (:invoice/total invoice)
|
:amount (:invoice/total invoice)
|
||||||
:status :payment-status/cleared
|
:status :payment-status/cleared
|
||||||
:date (:invoice/date invoice)})})]
|
:date (:invoice/date invoice)})})
|
||||||
|
transaction (when (= :invoice-status/paid (:invoice/status invoice))
|
||||||
|
(let [[bank-account] (d/q '[:find [?ba ...]
|
||||||
|
:in $ ?c
|
||||||
|
:where [?c :client/bank-accounts ?ba]
|
||||||
|
[?ba :bank-account/type :bank-account-type/cash]
|
||||||
|
]
|
||||||
|
(d/db conn))]
|
||||||
|
#:transaction {:amount (- (:invoice/total invoice))
|
||||||
|
:payment payment-id
|
||||||
|
:client (:invoice/client invoice)
|
||||||
|
:status "POSTED"
|
||||||
|
:bank-account bank-account
|
||||||
|
:id #_ {:clj-kondo/ignore [:unresolved-var]} (digest/sha-256 transaction-id)
|
||||||
|
:raw-id transaction-id
|
||||||
|
:vendor (:invoice/vendor invoice)
|
||||||
|
:description-original "Cash payment"
|
||||||
|
:date date
|
||||||
|
:approval-status :transaction-approval-status/approved
|
||||||
|
:accounts [{:transaction-account/account (:db/id (a/get-account-by-numeric-code-and-sets 21000 ["default"]))
|
||||||
|
:transaction-account/location "A"
|
||||||
|
:transaction-account/amount (Math/abs (:invoice/total invoice))}]}))
|
||||||
|
]
|
||||||
[[:propose-invoice (d-invoices/code-invoice (validate-invoice (remove-nils invoice)
|
[[:propose-invoice (d-invoices/code-invoice (validate-invoice (remove-nils invoice)
|
||||||
user))]
|
user))]
|
||||||
(some-> payment remove-nils)])))
|
(some-> payment remove-nils)
|
||||||
|
transaction])))
|
||||||
(filter identity)))
|
(filter identity)))
|
||||||
|
|
||||||
(defn admin-only-if-multiple-clients [is]
|
(defn admin-only-if-multiple-clients [is]
|
||||||
|
|||||||
Reference in New Issue
Block a user