haspara 0.0.0.4 → 0.0.0.5
raw patch · 3 files changed
+44/−4 lines, 3 filesPVP: minor bump suggested
API additions: PVP suggests at least a minor version bump
API changes (from Hackage documentation)
+ Haspara.Accounting.Journal: instance (GHC.TypeNats.KnownNat precision, Data.Aeson.Types.FromJSON.FromJSON account, Data.Aeson.Types.FromJSON.FromJSON event) => Data.Aeson.Types.FromJSON.FromJSON (Haspara.Accounting.Journal.Journal precision account event)
+ Haspara.Accounting.Journal: instance (GHC.TypeNats.KnownNat precision, Data.Aeson.Types.FromJSON.FromJSON account, Data.Aeson.Types.FromJSON.FromJSON event) => Data.Aeson.Types.FromJSON.FromJSON (Haspara.Accounting.Journal.JournalEntry precision account event)
+ Haspara.Accounting.Journal: instance (GHC.TypeNats.KnownNat precision, Data.Aeson.Types.FromJSON.FromJSON account, Data.Aeson.Types.FromJSON.FromJSON event) => Data.Aeson.Types.FromJSON.FromJSON (Haspara.Accounting.Journal.JournalEntryItem precision account event)
+ Haspara.Accounting.Journal: instance (GHC.TypeNats.KnownNat precision, Data.Aeson.Types.ToJSON.ToJSON account, Data.Aeson.Types.ToJSON.ToJSON event) => Data.Aeson.Types.ToJSON.ToJSON (Haspara.Accounting.Journal.Journal precision account event)
+ Haspara.Accounting.Journal: instance (GHC.TypeNats.KnownNat precision, Data.Aeson.Types.ToJSON.ToJSON account, Data.Aeson.Types.ToJSON.ToJSON event) => Data.Aeson.Types.ToJSON.ToJSON (Haspara.Accounting.Journal.JournalEntry precision account event)
+ Haspara.Accounting.Journal: instance (GHC.TypeNats.KnownNat precision, Data.Aeson.Types.ToJSON.ToJSON account, Data.Aeson.Types.ToJSON.ToJSON event) => Data.Aeson.Types.ToJSON.ToJSON (Haspara.Accounting.Journal.JournalEntryItem precision account event)
+ Haspara.Accounting.Journal: instance GHC.Generics.Generic (Haspara.Accounting.Journal.Journal precision account event)
+ Haspara.Accounting.Journal: instance GHC.Generics.Generic (Haspara.Accounting.Journal.JournalEntry precision account event)
Files
- CHANGELOG.md +15/−1
- haspara.cabal +1/−1
- src/Haspara/Accounting/Journal.hs +28/−2
CHANGELOG.md view
@@ -2,6 +2,18 @@ ## [Unreleased] +<a name="0.0.0.5"></a>+## [0.0.0.5] - 2022-06-23+### Chore+- bump development version to 0.0.0.5++### Feat+- **accounting:** add Aeson instances to Haspara.Accounting.Journal module++### Pull Requests+- Merge pull request [#11](https://github.com/telostat/haspara/issues/11) from telostat/vst/add-missing-aeson-instances++ <a name="0.0.0.4"></a> ## [0.0.0.4] - 2022-06-22 ### Chore@@ -9,6 +21,7 @@ - start working on Haspara.Accounting.Journal module - add new functions to Haspara.Quantity module - bump development version to 0.0.0.4+- **release:** 0.0.0.4 ### Feat - add Haspara.Accounting.Side module@@ -106,7 +119,8 @@ - Merge pull request [#1](https://github.com/telostat/haspara/issues/1) from telostat/init -[Unreleased]: https://github.com/telostat/haspara/compare/0.0.0.4...HEAD+[Unreleased]: https://github.com/telostat/haspara/compare/0.0.0.5...HEAD+[0.0.0.5]: https://github.com/telostat/haspara/compare/0.0.0.4...0.0.0.5 [0.0.0.4]: https://github.com/telostat/haspara/compare/0.0.0.3...0.0.0.4 [0.0.0.3]: https://github.com/telostat/haspara/compare/0.0.0.2...0.0.0.3 [0.0.0.2]: https://github.com/telostat/haspara/compare/0.0.0.1...0.0.0.2
haspara.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack name: haspara-version: 0.0.0.4+version: 0.0.0.5 synopsis: A library providing definitions to work with monetary values. description: Please see the README on GitHub at <https://github.com/telostat/haspara#readme> category: Finance
src/Haspara/Accounting/Journal.hs view
@@ -5,6 +5,7 @@ module Haspara.Accounting.Journal where +import qualified Data.Aeson as Aeson import qualified Data.Text as T import Data.Time (Day) import GHC.Generics (Generic)@@ -12,6 +13,7 @@ import Haspara.Accounting.Account (Account(accountKind)) import Haspara.Accounting.Amount (Amount(..), amountFromQuantity, amountFromValue) import Haspara.Accounting.Side (Side(..))+import Haspara.Internal.Aeson (commonAesonOptions) import Haspara.Quantity (Quantity, UnsignedQuantity, sumUnsignedQuantity) @@ -23,9 +25,17 @@ newtype Journal (precision :: Nat) account event = Journal { journalEntries :: [JournalEntry precision account event] }- deriving (Show)+ deriving (Generic, Show) +instance (KnownNat precision, Aeson.FromJSON account, Aeson.FromJSON event) => Aeson.FromJSON (Journal precision account event) where+ parseJSON = Aeson.genericParseJSON $ commonAesonOptions "journal"+++instance (KnownNat precision, Aeson.ToJSON account, Aeson.ToJSON event) => Aeson.ToJSON (Journal precision account event) where+ toJSON = Aeson.genericToJSON $ commonAesonOptions "journal"++ -- | Data definition for a journal entry. -- -- A journal entry has a (unique) identifier, date and description, and a list@@ -37,9 +47,17 @@ , journalEntryItems :: ![JournalEntryItem precision account event] , journalEntryDescription :: !T.Text }- deriving (Show)+ deriving (Generic, Show) +instance (KnownNat precision, Aeson.FromJSON account, Aeson.FromJSON event) => Aeson.FromJSON (JournalEntry precision account event) where+ parseJSON = Aeson.genericParseJSON $ commonAesonOptions "journalEntry"+++instance (KnownNat precision, Aeson.ToJSON account, Aeson.ToJSON event) => Aeson.ToJSON (JournalEntry precision account event) where+ toJSON = Aeson.genericToJSON $ commonAesonOptions "journalEntry"++ -- | Returns the total debit amount of a journal entry. journalEntryTotalDebit :: KnownNat precision@@ -89,6 +107,14 @@ , journalEntryItemEvent :: !event } deriving (Eq, Generic, Show)+++instance (KnownNat precision, Aeson.FromJSON account, Aeson.FromJSON event) => Aeson.FromJSON (JournalEntryItem precision account event) where+ parseJSON = Aeson.genericParseJSON $ commonAesonOptions "journalEntryItem"+++instance (KnownNat precision, Aeson.ToJSON account, Aeson.ToJSON event) => Aeson.ToJSON (JournalEntryItem precision account event) where+ toJSON = Aeson.genericToJSON $ commonAesonOptions "journalEntryItem" -- | Creates a 'JournalEntryItem' from the given signed /quantity/, the account