1 {-# LANGUAGE NoMonomorphismRestriction #-}
2 {-# OPTIONS_GHC -Wno-missing-signatures #-}
4 module Literate.Accounting.Demo where
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
17 ( "Capital" NonEmpty.:| []
18 , Amounts (Map.singleton (Unit "$") (Quantity (540 :: Decimal)))
21 ( "Capital" NonEmpty.:| ["Banque"]
22 , Amounts (Map.singleton (Unit "$") (Quantity (30 :: Decimal)))
25 ( "Immo" NonEmpty.:| ["Stable"]
26 , Amounts (Map.singleton (Unit "&") (Quantity (12 :: Decimal)))
30 b0 :: Balance String Unit (Quantity Decimal) Maybe
34 Compte {compteCode = 1, compteSystem = SystemDeBase, compteName = "", compteDescription = "Capital"}
37 x0 = c1_Comptes_de_capitaux
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"],())]})]}
48 [("Capital" :| [],fromList [("$",540)]),("Capital" :| ["Banque"],fromList [("$",30)]),("Immo" :| ["Stable"],fromList [("&",12)])]