]> Git — Sourcephile - haskell/literate-accounting.git/blob - src/Literate/Accounting/Demo.hs
wip
[haskell/literate-accounting.git] / src / Literate / Accounting / Demo.hs
1 {-# LANGUAGE NoMonomorphismRestriction #-}
2 {-# OPTIONS_GHC -Wno-missing-signatures #-}
3
4 module Literate.Accounting.Demo where
5
6 import Data.Decimal (Decimal)
7 import Data.List.NonEmpty qualified as NonEmpty
8 import Data.Map.Strict qualified as Map
9 import Data.Maybe (Maybe)
10 import Data.String (String)
11 import GHC.Num (complementInteger)
12 import Literate.Accounting
13 import Literate.Accounting.PCG.Chart
14
15 posts0 =
16 [
17 ( "Capital" NonEmpty.:| []
18 , Amounts (Map.singleton (Unit "$") (Quantity (540 :: Decimal)))
19 )
20 ,
21 ( "Capital" NonEmpty.:| ["Banque"]
22 , Amounts (Map.singleton (Unit "$") (Quantity (30 :: Decimal)))
23 )
24 ,
25 ( "Immo" NonEmpty.:| ["Stable"]
26 , Amounts (Map.singleton (Unit "&") (Quantity (12 :: Decimal)))
27 )
28 ]
29
30 b0 :: Balance String Unit (Quantity Decimal) Maybe
31 b0 = balance posts0
32
33 {- | >>> x0
34 Compte {compteCode = 1, compteSystem = SystemDeBase, compteName = "", compteDescription = "Capital"}
35 -}
36 x0 :: Compte
37 x0 = c1_Comptes_de_capitaux
38
39 {- | >>> trickleBalance b0
40 Balance {balanceByAccount = + "Capital" Trickle {exclusive = fromList [("$",540)], inclusive = fromList [("$",570)]}
41 | ` "Banque" Trickle {exclusive = fromList [("$",30)], inclusive = fromList [("$",30)]}
42 ` "Immo" Trickle {exclusive = fromList [], inclusive = fromList [("&",12)]}
43 ` "Stable" Trickle {exclusive = fromList [("&",12)], inclusive = fromList [("&",12)]}
44 , balanceByUnit = fromList [("$",SumForUnit {sumForUnitQuantity = 570, sumForUnitAccounts = fromList [("Capital" :| [],()),("Capital" :| ["Banque"],())]}),("&",SumForUnit {sumForUnitQuantity = 12, sumForUnitAccounts = fromList [("Immo" :| ["Stable"],())]})]}
45 -}
46
47 {- >>> e
48 [("Capital" :| [],fromList [("$",540)]),("Capital" :| ["Banque"],fromList [("$",30)]),("Immo" :| ["Stable"],fromList [("&",12)])]
49 -}
50 e = posts0