progress on reports.
This commit is contained in:
@@ -236,29 +236,37 @@
|
||||
(dc/db auto-ap.datomic/conn)
|
||||
#inst "2024-10-10" n))
|
||||
|
||||
(defn detailed-account-snapshot [db client-id ^java.util.Date end]
|
||||
(for [running-balance-set (account-sets db client-id)
|
||||
:let [{:keys [account-id client-id location current-balance debits credits count]}
|
||||
(->> running-balance-set
|
||||
(take-while (fn until-date [^Line l]
|
||||
(let [^java.util.Date d (.-date l)]
|
||||
(<= (.compareTo ^java.util.Date d end) 0))))
|
||||
(reduce
|
||||
(fn step [acc ^Line l]
|
||||
(assoc! acc
|
||||
:count (unchecked-inc (:count acc))
|
||||
:debits (unchecked-add (:debits acc) (or (.-debit l) 0.0))
|
||||
:credits (unchecked-add (:credits acc) (or (.-credit l) 0.0))
|
||||
:current-balance (.-running-balance l)
|
||||
:account-id (.-account-id l)
|
||||
:client-id (.-client-id l)
|
||||
:location (.-location l)))
|
||||
(transient {:count 0
|
||||
:debits 0.0
|
||||
:credits 0.0
|
||||
:current-balance 0.0})))]
|
||||
:when client-id]
|
||||
[client-id account-id location debits credits current-balance count]))
|
||||
(defn detailed-account-snapshot
|
||||
([db client-id ^java.util.Date end]
|
||||
(detailed-account-snapshot db client-id end nil))
|
||||
([db client-id ^java.util.Date end ^java.util.Date start]
|
||||
|
||||
(for [running-balance-set (account-sets db client-id)
|
||||
:let [{:keys [account-id client-id location current-balance debits credits count]}
|
||||
(->> running-balance-set
|
||||
(filter (fn until-end [^Line l]
|
||||
(let [^java.util.Date d (.-date l)]
|
||||
(and
|
||||
(if start
|
||||
(>= (.compareTo ^java.util.Date d start) 0)
|
||||
true)
|
||||
(< (.compareTo ^java.util.Date d end) 0)))))
|
||||
(reduce
|
||||
(fn step [acc ^Line l]
|
||||
(assoc! acc
|
||||
:count (unchecked-inc (:count acc))
|
||||
:debits (unchecked-add (:debits acc) (or (.-debit l) 0.0))
|
||||
:credits (unchecked-add (:credits acc) (or (.-credit l) 0.0))
|
||||
:current-balance (.-running-balance l)
|
||||
:account-id (.-account-id l)
|
||||
:client-id (.-client-id l)
|
||||
:location (.-location l)))
|
||||
(transient {:count 0
|
||||
:debits 0.0
|
||||
:credits 0.0
|
||||
:current-balance 0.0})))]
|
||||
:when client-id]
|
||||
[client-id account-id location debits credits current-balance count])))
|
||||
|
||||
|
||||
(comment
|
||||
|
||||
Reference in New Issue
Block a user