adding day of month.

This commit is contained in:
Bryce Covert
2019-05-09 23:32:43 -07:00
parent 0520e2f0f8
commit 16a3b14844
8 changed files with 95 additions and 21 deletions

View File

@@ -12,7 +12,7 @@
[clj-time.core :as time]
[clj-time.coerce :as coerce]))
(def uri "datomic:sql://invoices?jdbc:postgresql://database:5432/datomic?user=datomic&password=datomic")
(def uri "datomic:sql://invoices-backup?jdbc:postgresql://database:5432/datomic?user=datomic&password=datomic")
(defn create-database []
(d/create-database uri))

View File

@@ -341,6 +341,15 @@
:db/cardinality :db.cardinality/one
:db/doc "Amount has to be greater than or equal to this"}
{:db/ident :transaction-rule/dom-lte
:db/valueType :db.type/long
:db/cardinality :db.cardinality/one
:db/doc "Day of month has to be less than or equal to this"}
{:db/ident :transaction-rule/dom-gte
:db/valueType :db.type/long
:db/cardinality :db.cardinality/one
:db/doc "Day of month has to be greater than or equal to this"}
]])
(def add-credit-bank-account

View File

@@ -191,6 +191,8 @@
:description {:type 'String}
:amount_lte {:type 'String}
:amount_gte {:type 'String}
:dom_lte {:type 'Int}
:dom_gte {:type 'Int}
:vendor {:type :vendor}}}
:invoice_payment
@@ -512,7 +514,9 @@
:bank_account_id {:type :id}
:client_id {:type :id}
:amount_lte {:type :money}
:amount_gte {:type :money}}}
:amount_gte {:type :money}
:dom_lte {:type 'Int}
:dom_gte {:type 'Int}}}
:edit_account
{:fields {:id {:type :id}

View File

@@ -4,7 +4,8 @@
[datomic.api :as d]
[auto-ap.datomic :refer [remove-nils uri merge-query]]
[auto-ap.graphql.utils :refer [->graphql <-graphql limited-clients assert-admin result->page]]
[clj-time.coerce :as c]))
[clj-time.coerce :as c])
(:import [java.time.temporal ChronoField]))
(defn get-transaction-rule-page [context args value]
(let [args (assoc args :id (:id context))
@@ -31,7 +32,8 @@
(defn tr [z x]
(re-find (re-pattern z) x))
(defn test-transaction-rule [{:keys [id]} {{:keys [description note client_id bank_account_id amount_lte amount_gte ]} :transaction_rule :as z} value]
(defn test-transaction-rule [{:keys [id]} {{:keys [description note client_id bank_account_id amount_lte amount_gte dom_lte dom_gte]} :transaction_rule :as z} value]
(prn z)
(->>
(d/query
(cond-> {:query {:find ['(pull ?e [* {:transaction/client [:client/name]
@@ -69,6 +71,24 @@
'[(<= ?ta ?amount-lte)]]}
:args [amount_lte]})
dom_lte
(merge-query {:query {:in ['?dom-lte]
:where ['[?e :transaction/date ?transaction-date]
'[(.toInstant ^java.util.Date ?transaction-date ) ?transaction-instant]
'[(.atZone ^java.time.Instant ?transaction-instant (java.time.ZoneId/of "US/Pacific")) ?transaction-local]
'[(.get ?transaction-local java.time.temporal.ChronoField/DAY_OF_MONTH) ?dom]
'[(<= ?dom ?dom-lte)]]}
:args [dom_lte]})
dom_gte
(merge-query {:query {:in ['?dom-gte]
:where ['[?e :transaction/date ?transaction-date]
'[(.toInstant ^java.util.Date ?transaction-date ) ?transaction-instant]
'[(.atZone ^java.time.Instant ?transaction-instant (java.time.ZoneId/of "US/Pacific")) ?transaction-local]
'[(.get ?transaction-local java.time.temporal.ChronoField/DAY_OF_MONTH) ?dom]
'[(>= ?dom ?dom-gte)]]}
:args [dom_gte]})
client_id
(merge-query {:query {:in ['?client-id]
:where ['[?e :transaction/client ?client-id]]}

View File

@@ -5,7 +5,9 @@
(s/def ::description (s/nilable string?))
(s/def ::amount-gte (s/nilable double?))
(s/def ::amount-lte (s/nilable double?))
(s/def ::dom-gte (s/nilable int?))
(s/def ::dom-lte (s/nilable int?))
(s/def ::note (s/nilable string?))
(s/def ::bank-account (s/nilable map?))
(s/def ::transaction-rule (s/keys :req-un [::client ::description ::amount-gte ::amount-lte ::note ::bank-account]))
(s/def ::transaction-rule (s/keys :req-un [::client ::description ::amount-gte ::amount-lte ::dom-gte ::dom-lte ::note ::bank-account]))

View File

@@ -37,6 +37,8 @@
:description
:amount-lte
:amount-gte
:dom-lte
:dom-gte
:note])
(assoc :client-id (:id (:client data)))
(assoc :bank-account-id (:id (:bank-account data))))}
@@ -54,6 +56,8 @@
:description
:amount-lte
:amount-gte
:dom-lte
:dom-gte
:note])
(assoc :client-id (:id (:client data)))
(assoc :bank-account-id (:id (:bank-account data))))}
@@ -80,8 +84,7 @@
:bank-account nil
:note nil
:amount-lte nil
:amount-gte nil
)))))
:amount-gte nil)))))
(re-frame/reg-event-db
::editing
@@ -156,14 +159,13 @@
accounts-by-id @(re-frame/subscribe [::subs/accounts-for-client-by-id])]
^{:key id}
[form (assoc params :title "New Transaction Rule")
(when-not @(re-frame/subscribe [::subs/client])
[field "Client"
[typeahead-entity {:matches @(re-frame/subscribe [::subs/clients])
:match->text :name
:type "typeahead-entity"
:auto-focus (if @(re-frame/subscribe [::subs/client]) false true)
:field [:client]
:spec ::entity/client}]])
[field "Client"
[typeahead-entity {:matches @(re-frame/subscribe [::subs/clients])
:match->text :name
:type "typeahead-entity"
:auto-focus (if @(re-frame/subscribe [::subs/client]) false true)
:field [:client]
:spec ::entity/client}]]
[field "Bank account"
[typeahead-entity {:matches @(re-frame/subscribe [::subs/real-bank-accounts-for-client (:client data)])
@@ -197,6 +199,27 @@
:spec ::entity/amount-lte
:step "0.01"}]]]]]]
[:div.field
[:p.help "Day of Month"]
[:div.control
[:div.columns
[:div.column
[raw-field
[:input.input {:type "number"
:placeholder ">="
:field [:dom-gte]
:spec ::entity/dom-gte
:precision 0
:step "1"}]]]
[:div.column
[raw-field
[:input.input {:type "number"
:placeholder "<="
:field [:dom-lte]
:spec ::entity/dom-lte
:precision 0
:step "1"}]]]]]]
[field "Note"
[:input.input {:type "text"
:field [:note]

View File

@@ -41,14 +41,15 @@
:asc asc}
"Description"]
[sorted-column {:on-sort opc
#_[sorted-column {:on-sort opc
:style {:width "8em" :cursor "pointer"}
:class "has-text-right"
:sort-key "amount-gte"
:sort-by sort-by
:asc asc}
">="]
[sorted-column {:on-sort opc
"Amount"]
[:th.has-text-right {:style {:width "12em"}} "Amount"]
#_[sorted-column {:on-sort opc
:class "has-text-right"
:style {:width "8em" :cursor "pointer"}
:sort-key "amount-lte"
@@ -75,8 +76,18 @@
[:td (:name client)]
[:td (:name bank-account)]
[:td description]
[:td.has-text-right (some-> amount-gte ->$) ]
[:td.has-text-right (some-> amount-lte ->$)]
[:td.has-text-right
(cond (and amount-gte amount-lte)
(str (->$ amount-gte) " - " (->$ amount-lte))
amount-gte
(str ">=" (->$ amount-gte))
amount-lte
(str "<=" (->$ amount-lte))
:else
"")]
[:td note]
[:td
[:a.button {:on-click (dispatch-event [::form/editing r])} [:span.icon [:i.fa.fa-pencil]]]]]))]]]))))

View File

@@ -201,8 +201,13 @@
(re-frame/dispatch (-> event
(conj field)
(conj (let [val (.. e -target -value)]
(if (and val (not (str/blank? val)))
(cond (and val (not (str/blank? val)))
(js/parseFloat val)
(str/blank? val )
nil
:else
val))))))
:value (get-in subscription field)