Safe Haskell | None |
---|---|
Language | Haskell2010 |
Haspara.Accounting.Event
Synopsis
- data Event o (s :: Nat)
- = EventDecrement Date o (UnsignedQuantity s)
- | EventIncrement Date o (UnsignedQuantity s)
- eventDate :: KnownNat s => Event o s -> Date
- eventObject :: KnownNat s => Event o s -> o
- negateEvent :: KnownNat s => Event o s -> Event o s
- mkEvent :: (MonadError String m, KnownNat s) => Date -> o -> Quantity s -> m (Event o s)
Documentation
data Event o (s :: Nat) Source #
Encoding of an increment/decrement event.
>>>
:set -XDataKinds
>>>
import Refined
>>>
let date = read "2021-01-01"
>>>
let oid = 1 :: Int
>>>
let qty = $$(refineTH 42) :: UnsignedQuantity 2
>>>
let event = EventDecrement date oid qty
>>>
let json = Aeson.encode event
>>>
json
"{\"qty\":42.0,\"obj\":1,\"date\":\"2021-01-01\",\"type\":\"DECREMENT\"}">>>
Aeson.decode json :: Maybe (Event Int 2)
Just (EventDecrement 2021-01-01 1 (Refined 42.00))>>>
Aeson.decode json == Just event
True
Constructors
EventDecrement Date o (UnsignedQuantity s) | |
EventIncrement Date o (UnsignedQuantity s) |
Instances
Eq o => Eq (Event o s) Source # | |
Ord o => Ord (Event o s) Source # | |
(Show o, KnownNat s) => Show (Event o s) Source # | |
(ToJSON o, KnownNat s) => ToJSON (Event o s) Source # | |
Defined in Haspara.Accounting.Event | |
(FromJSON o, KnownNat s) => FromJSON (Event o s) Source # | |
eventObject :: KnownNat s => Event o s -> o Source #