Files
integreat/scratch-sessions/finding-invoices-with-partial-cents.clj

59 lines
2.5 KiB
Clojure

;; This buffer is for Clojure experiments and evaluation.
;; Press C-j to evaluate the last expression.
;; You can also press C-u C-j to evaluate the expression and pretty-print its result.
(defn bad? [a]
(> (Math/abs (- (Math/round (* 100 a))
(* 100 a)))
0.0001))
(defn improved [t]
(* (Math/round (* 100 (first t))) 0.01))
(def bad-db (d/db auto-ap.datomic/conn))
(def bad-invoices (d/q '[:find ?t (user/improved ?total)
:in $
:where
#_[?t :invoice/client [:client/code "NGAK"]]
[?t :invoice/total ?total]
[(user/bad? ?total)]
]
bad-db ))
(d/transact auto-ap.datomic/conn (->> (d/q '[:find ?ea (user/improved ?total)
:in $ [?t ... ]
:where
#_[?t :invoice/client [:client/code "NGAK"]]
[?t :invoice/total ?total]
[?t :invoice/expense-accounts ?ea]
[?ea :invoice-expense-account/amount ?eam]
]
(d/db auto-ap.datomic/conn) (mapv first bad-invoices))
(mapv (fn [[ea total]]
{:db/id ea
:invoice-expense-account/amount total}))))
(d/transact auto-ap.datomic/conn (->> (d/q '[:find ?t (user/improved ?total)
:in $
:where
#_[?t :invoice/client [:client/code "NGAK"]]
[?t :invoice/total ?total]
[(user/bad? ?total)]
]
(d/db auto-ap.datomic/conn) )
(mapv (fn [[invoice total]]
{:db/id invoice
:invoice/total total}))))
(d/q '[:find ?t ?total
:in $
:where
#_[?t :invoice/client [:client/code "NGAK"]]
[?t :invoice-expense-account/amount ?total]
[(user/bad? ?total)]
]
(d/db auto-ap.datomic/conn) )