import qualified Hcompta.Model.Account as Account
import qualified Hcompta.Model.Amount as Amount
+import Hcompta.Model.Amount (Amount)
import qualified Hcompta.Model.Amount.Style as Amount.Style
import qualified Hcompta.Model.Date as Date
import qualified Hcompta.Calc.Balance as Calc.Balance
[ ("A":|[], Amount.from_List [ Amount.usd $ 1 ]) ]
, Calc.Balance.balance_by_unit =
Data.Map.fromList $
- Data.List.map (\s -> (Amount.unit $ Calc.Balance.unit_sum_amount s, s))
+ Data.List.map (\s -> (Amount.unit $ (Calc.Balance.amount_sum_balance $ Calc.Balance.unit_sum_amount s) Data.Map.! (), s))
[ Calc.Balance.Unit_Sum
- { Calc.Balance.unit_sum_amount = Amount.usd $ 1
+ { Calc.Balance.unit_sum_amount = Calc.Balance.amount_sum $ Data.Map.singleton () $ Amount.usd $ 1
, Calc.Balance.unit_sum_accounts = Data.Map.fromList $ Data.List.map (,())
["A":|[]]
}
[ ("A":|[], Amount.from_List [ Amount.usd $ 0 ]) ]
, Calc.Balance.balance_by_unit =
Data.Map.fromList $
- Data.List.map (\s -> (Amount.unit $ Calc.Balance.unit_sum_amount s, s))
+ Data.List.map (\s -> (Amount.unit $ (Calc.Balance.amount_sum_balance $ Calc.Balance.unit_sum_amount s) Data.Map.! (), s))
[ Calc.Balance.Unit_Sum
- { Calc.Balance.unit_sum_amount = Amount.usd $ 0
+ { Calc.Balance.unit_sum_amount = Calc.Balance.Amount_Sum
+ { Calc.Balance.amount_sum_negative = Data.Map.singleton () $ Amount.usd $ -1
+ , Calc.Balance.amount_sum_positive = Data.Map.singleton () $ Amount.usd $ 1
+ , Calc.Balance.amount_sum_balance = Data.Map.singleton () $ Amount.usd $ 0
+ }
, Calc.Balance.unit_sum_accounts = Data.Map.fromList $ Data.List.map (,())
["A":|[]]
}
[ ("A":|[], Amount.from_List [ Amount.usd $ 1, Amount.eur $ -1 ]) ]
, Calc.Balance.balance_by_unit =
Data.Map.fromList $
- Data.List.map (\s -> (Amount.unit $ Calc.Balance.unit_sum_amount s, s))
+ Data.List.map (\s -> (Amount.unit $ (Calc.Balance.amount_sum_balance $ Calc.Balance.unit_sum_amount s) Data.Map.! (), s))
[ Calc.Balance.Unit_Sum
- { Calc.Balance.unit_sum_amount = Amount.usd $ 1
+ { Calc.Balance.unit_sum_amount = Calc.Balance.Amount_Sum
+ { Calc.Balance.amount_sum_negative = Data.Map.empty
+ , Calc.Balance.amount_sum_positive = Data.Map.singleton () $ Amount.usd $ 1
+ , Calc.Balance.amount_sum_balance = Data.Map.singleton () $ Amount.usd $ 1
+ }
, Calc.Balance.unit_sum_accounts = Data.Map.fromList $ Data.List.map (,())
["A":|[]]
}
, Calc.Balance.Unit_Sum
- { Calc.Balance.unit_sum_amount = Amount.eur $ -1
+ { Calc.Balance.unit_sum_amount = Calc.Balance.Amount_Sum
+ { Calc.Balance.amount_sum_negative = Data.Map.singleton () $ Amount.eur $ -1
+ , Calc.Balance.amount_sum_positive = Data.Map.empty
+ , Calc.Balance.amount_sum_balance = Data.Map.singleton () $ Amount.eur $ -1
+ }
, Calc.Balance.unit_sum_accounts = Data.Map.fromList $ Data.List.map (,())
["A":|[]]
}
]
, Calc.Balance.balance_by_unit =
Data.Map.fromList $
- Data.List.map (\s -> (Amount.unit $ Calc.Balance.unit_sum_amount s, s))
+ Data.List.map (\s -> (Amount.unit $ (Calc.Balance.amount_sum_balance $ Calc.Balance.unit_sum_amount s) Data.Map.! (), s))
[ Calc.Balance.Unit_Sum
- { Calc.Balance.unit_sum_amount = Amount.usd $ 0
+ { Calc.Balance.unit_sum_amount = Calc.Balance.Amount_Sum
+ { Calc.Balance.amount_sum_negative = Data.Map.singleton () $ Amount.usd $ -1
+ , Calc.Balance.amount_sum_positive = Data.Map.singleton () $ Amount.usd $ 1
+ , Calc.Balance.amount_sum_balance = Data.Map.singleton () $ Amount.usd $ 0
+ }
, Calc.Balance.unit_sum_accounts = Data.Map.fromList $ Data.List.map (,())
["A":|[], "B":|[]]
}
]
, Calc.Balance.balance_by_unit =
Data.Map.fromList $
- Data.List.map (\s -> (Amount.unit $ Calc.Balance.unit_sum_amount s, s))
+ Data.List.map (\s -> (Amount.unit $ (Calc.Balance.amount_sum_balance $ Calc.Balance.unit_sum_amount s) Data.Map.! (), s))
[ Calc.Balance.Unit_Sum
- { Calc.Balance.unit_sum_amount = Amount.usd $ 2
+ { Calc.Balance.unit_sum_amount = Calc.Balance.amount_sum $ Data.Map.singleton () $ Amount.usd $ 2
, Calc.Balance.unit_sum_accounts = Data.Map.fromList $ Data.List.map (,())
["A":|[], "B":|[]]
}
]
, Calc.Balance.balance_by_unit =
Data.Map.fromList $
- Data.List.map (\s -> (Amount.unit $ Calc.Balance.unit_sum_amount s, s))
+ Data.List.map (\s -> (Amount.unit $ (Calc.Balance.amount_sum_balance $ Calc.Balance.unit_sum_amount s) Data.Map.! (), s))
[ Calc.Balance.Unit_Sum
- { Calc.Balance.unit_sum_amount = Amount.usd $ 0
+ { Calc.Balance.unit_sum_amount = Calc.Balance.Amount_Sum
+ { Calc.Balance.amount_sum_negative = Data.Map.singleton () $ Amount.usd $ -1
+ , Calc.Balance.amount_sum_positive = Data.Map.singleton () $ Amount.usd $ 1
+ , Calc.Balance.amount_sum_balance = Data.Map.singleton () $ Amount.usd $ 0
+ }
, Calc.Balance.unit_sum_accounts = Data.Map.fromList $ Data.List.map (,())
["A":|[]]
}
, Calc.Balance.Unit_Sum
- { Calc.Balance.unit_sum_amount = Amount.eur $ 0
+ { Calc.Balance.unit_sum_amount = Calc.Balance.Amount_Sum
+ { Calc.Balance.amount_sum_negative = Data.Map.singleton () $ Amount.eur $ -2
+ , Calc.Balance.amount_sum_positive = Data.Map.singleton () $ Amount.eur $ 2
+ , Calc.Balance.amount_sum_balance = Data.Map.singleton () $ Amount.eur $ 0
+ }
, Calc.Balance.unit_sum_accounts = Data.Map.fromList $ Data.List.map (,())
["A":|[]]
}
]
, Calc.Balance.balance_by_unit =
Data.Map.fromList $
- Data.List.map (\s -> (Amount.unit $ Calc.Balance.unit_sum_amount s, s))
+ Data.List.map (\s -> (Amount.unit $ (Calc.Balance.amount_sum_balance $ Calc.Balance.unit_sum_amount s) Data.Map.! (), s))
[ Calc.Balance.Unit_Sum
- { Calc.Balance.unit_sum_amount = Amount.usd $ 0
+ { Calc.Balance.unit_sum_amount = Calc.Balance.Amount_Sum
+ { Calc.Balance.amount_sum_negative = Data.Map.singleton () $ Amount.usd $ -1
+ , Calc.Balance.amount_sum_positive = Data.Map.singleton () $ Amount.usd $ 1
+ , Calc.Balance.amount_sum_balance = Data.Map.singleton () $ Amount.usd $ 0
+ }
, Calc.Balance.unit_sum_accounts = Data.Map.fromList $ Data.List.map (,())
["A":|[], "B":|[]]
}
, Calc.Balance.Unit_Sum
- { Calc.Balance.unit_sum_amount = Amount.eur $ 0
+ { Calc.Balance.unit_sum_amount = Calc.Balance.Amount_Sum
+ { Calc.Balance.amount_sum_negative = Data.Map.singleton () $ Amount.eur $ -2
+ , Calc.Balance.amount_sum_positive = Data.Map.singleton () $ Amount.eur $ 2
+ , Calc.Balance.amount_sum_balance = Data.Map.singleton () $ Amount.eur $ 0
+ }
, Calc.Balance.unit_sum_accounts = Data.Map.fromList $ Data.List.map (,())
["A":|[], "B":|[]]
}
, Calc.Balance.Unit_Sum
- { Calc.Balance.unit_sum_amount = Amount.gbp $ 0
+ { Calc.Balance.unit_sum_amount = Calc.Balance.Amount_Sum
+ { Calc.Balance.amount_sum_negative = Data.Map.singleton () $ Amount.gbp $ -3
+ , Calc.Balance.amount_sum_positive = Data.Map.singleton () $ Amount.gbp $ 3
+ , Calc.Balance.amount_sum_balance = Data.Map.singleton () $ Amount.gbp $ 0
+ }
, Calc.Balance.unit_sum_accounts = Data.Map.fromList $ Data.List.map (,())
["A":|[], "B":|[]]
}
Calc.Balance.balance
Calc.Balance.balance
~?=
- (Calc.Balance.balance::Calc.Balance.Balance Int String)
+ (Calc.Balance.balance::Calc.Balance.Balance Amount String)
, "{A+$1, $+1} {A+$1, $+1} = {A+$2, $+2}" ~:
Calc.Balance.union
(Calc.Balance.Balance
[ ("A":|[], Amount.from_List [ Amount.usd $ 1 ]) ]
, Calc.Balance.balance_by_unit =
Data.Map.fromList $
- Data.List.map (\s -> (Amount.unit $ Calc.Balance.unit_sum_amount s, s))
+ Data.List.map (\s -> (Amount.unit $ (Calc.Balance.amount_sum_balance $ Calc.Balance.unit_sum_amount s) Data.Map.! (), s))
[ Calc.Balance.Unit_Sum
- { Calc.Balance.unit_sum_amount = Amount.usd $ 1
+ { Calc.Balance.unit_sum_amount = Calc.Balance.amount_sum $ Data.Map.singleton () $ Amount.usd $ 1
, Calc.Balance.unit_sum_accounts = Data.Map.fromList $ Data.List.map (,())
["A":|[]]
}
[ ("A":|[], Amount.from_List [ Amount.usd $ 1 ]) ]
, Calc.Balance.balance_by_unit =
Data.Map.fromList $
- Data.List.map (\s -> (Amount.unit $ Calc.Balance.unit_sum_amount s, s))
+ Data.List.map (\s -> (Amount.unit $ (Calc.Balance.amount_sum_balance $ Calc.Balance.unit_sum_amount s) Data.Map.! (), s))
[ Calc.Balance.Unit_Sum
- { Calc.Balance.unit_sum_amount = Amount.usd $ 1
+ { Calc.Balance.unit_sum_amount = Calc.Balance.amount_sum $ Data.Map.singleton () $ Amount.usd $ 1
, Calc.Balance.unit_sum_accounts = Data.Map.fromList $ Data.List.map (,())
["A":|[]]
}
[ ("A":|[], Amount.from_List [ Amount.usd $ 2 ]) ]
, Calc.Balance.balance_by_unit =
Data.Map.fromList $
- Data.List.map (\s -> (Amount.unit $ Calc.Balance.unit_sum_amount s, s))
+ Data.List.map (\s -> (Amount.unit $ (Calc.Balance.amount_sum_balance $ Calc.Balance.unit_sum_amount s) Data.Map.! (), s))
[ Calc.Balance.Unit_Sum
- { Calc.Balance.unit_sum_amount = Amount.usd $ 2
+ { Calc.Balance.unit_sum_amount = Calc.Balance.amount_sum $ Data.Map.singleton () $ Amount.usd $ 2
, Calc.Balance.unit_sum_accounts = Data.Map.fromList $ Data.List.map (,())
["A":|[]]
}
[ ("A":|[], Amount.from_List [ Amount.usd $ 1 ]) ]
, Calc.Balance.balance_by_unit =
Data.Map.fromList $
- Data.List.map (\s -> (Amount.unit $ Calc.Balance.unit_sum_amount s, s))
+ Data.List.map (\s -> (Amount.unit $ (Calc.Balance.amount_sum_balance $ Calc.Balance.unit_sum_amount s) Data.Map.! (), s))
[ Calc.Balance.Unit_Sum
- { Calc.Balance.unit_sum_amount = Amount.usd $ 1
+ { Calc.Balance.unit_sum_amount = Calc.Balance.amount_sum $ Data.Map.singleton () $ Amount.usd $ 1
, Calc.Balance.unit_sum_accounts = Data.Map.fromList $ Data.List.map (,())
["A":|[]]
}
[ ("B":|[], Amount.from_List [ Amount.usd $ 1 ]) ]
, Calc.Balance.balance_by_unit =
Data.Map.fromList $
- Data.List.map (\s -> (Amount.unit $ Calc.Balance.unit_sum_amount s, s))
+ Data.List.map (\s -> (Amount.unit $ (Calc.Balance.amount_sum_balance $ Calc.Balance.unit_sum_amount s) Data.Map.! (), s))
[ Calc.Balance.Unit_Sum
- { Calc.Balance.unit_sum_amount = Amount.usd $ 1
+ { Calc.Balance.unit_sum_amount = Calc.Balance.amount_sum $ Data.Map.singleton () $ Amount.usd $ 1
, Calc.Balance.unit_sum_accounts = Data.Map.fromList $ Data.List.map (,())
["B":|[]]
}
, ("B":|[], Amount.from_List [ Amount.usd $ 1 ]) ]
, Calc.Balance.balance_by_unit =
Data.Map.fromList $
- Data.List.map (\s -> (Amount.unit $ Calc.Balance.unit_sum_amount s, s))
+ Data.List.map (\s -> (Amount.unit $ (Calc.Balance.amount_sum_balance $ Calc.Balance.unit_sum_amount s) Data.Map.! (), s))
[ Calc.Balance.Unit_Sum
- { Calc.Balance.unit_sum_amount = Amount.usd $ 2
+ { Calc.Balance.unit_sum_amount = Calc.Balance.amount_sum $ Data.Map.singleton () $ Amount.usd $ 2
, Calc.Balance.unit_sum_accounts = Data.Map.fromList $ Data.List.map (,())
["A":|[], "B":|[]]
}
[ ("A":|[], Amount.from_List [ Amount.usd $ 1 ]) ]
, Calc.Balance.balance_by_unit =
Data.Map.fromList $
- Data.List.map (\s -> (Amount.unit $ Calc.Balance.unit_sum_amount s, s))
+ Data.List.map (\s -> (Amount.unit $ (Calc.Balance.amount_sum_balance $ Calc.Balance.unit_sum_amount s) Data.Map.! (), s))
[ Calc.Balance.Unit_Sum
- { Calc.Balance.unit_sum_amount = Amount.usd $ 1
+ { Calc.Balance.unit_sum_amount = Calc.Balance.amount_sum $ Data.Map.singleton () $ Amount.usd $ 1
, Calc.Balance.unit_sum_accounts = Data.Map.fromList $ Data.List.map (,())
["A":|[]]
}
[ ("B":|[], Amount.from_List [ Amount.eur $ 1 ]) ]
, Calc.Balance.balance_by_unit =
Data.Map.fromList $
- Data.List.map (\s -> (Amount.unit $ Calc.Balance.unit_sum_amount s, s))
+ Data.List.map (\s -> (Amount.unit $ (Calc.Balance.amount_sum_balance $ Calc.Balance.unit_sum_amount s) Data.Map.! (), s))
[ Calc.Balance.Unit_Sum
- { Calc.Balance.unit_sum_amount = Amount.eur $ 1
+ { Calc.Balance.unit_sum_amount = Calc.Balance.amount_sum $ Data.Map.singleton () $ Amount.eur $ 1
, Calc.Balance.unit_sum_accounts = Data.Map.fromList $ Data.List.map (,())
["B":|[]]
}
, ("B":|[], Amount.from_List [ Amount.eur $ 1 ]) ]
, Calc.Balance.balance_by_unit =
Data.Map.fromList $
- Data.List.map (\s -> (Amount.unit $ Calc.Balance.unit_sum_amount s, s))
+ Data.List.map (\s -> (Amount.unit $ (Calc.Balance.amount_sum_balance $ Calc.Balance.unit_sum_amount s) Data.Map.! (), s))
[ Calc.Balance.Unit_Sum
- { Calc.Balance.unit_sum_amount = Amount.usd $ 1
+ { Calc.Balance.unit_sum_amount = Calc.Balance.amount_sum $ Data.Map.singleton () $ Amount.usd $ 1
, Calc.Balance.unit_sum_accounts = Data.Map.fromList $ Data.List.map (,())
["A":|[]]
}
, Calc.Balance.Unit_Sum
- { Calc.Balance.unit_sum_amount = Amount.eur $ 1
+ { Calc.Balance.unit_sum_amount = Calc.Balance.amount_sum $ Data.Map.singleton () $ Amount.eur $ 1
, Calc.Balance.unit_sum_accounts = Data.Map.fromList $ Data.List.map (,())
["B":|[]]
}
Calc.Balance.expanded
Lib.TreeMap.empty
~?=
- (Lib.TreeMap.empty::Calc.Balance.Expanded Int String)
+ (Lib.TreeMap.empty::Calc.Balance.Expanded Amount String)
, "A+$1 = A+$1" ~:
Calc.Balance.expanded
(Lib.TreeMap.from_List const
~?=
(Lib.TreeMap.from_List const
[ ("A":|[], Calc.Balance.Account_Sum_Expanded
- { Calc.Balance.inclusive = Amount.from_List [ Amount.usd $ 1 ]
+ { Calc.Balance.inclusive = Calc.Balance.amount_sum $ Amount.from_List [ Amount.usd $ 1 ]
, Calc.Balance.exclusive = Amount.from_List [ Amount.usd $ 1 ]
})
])
~?=
(Lib.TreeMap.from_List const
[ ("A":|[], Calc.Balance.Account_Sum_Expanded
- { Calc.Balance.inclusive = Amount.from_List [ Amount.usd $ 1 ]
+ { Calc.Balance.inclusive = Calc.Balance.amount_sum $ Amount.from_List [ Amount.usd $ 1 ]
, Calc.Balance.exclusive = Amount.from_List []
})
, ("A":|["A"], Calc.Balance.Account_Sum_Expanded
- { Calc.Balance.inclusive = Amount.from_List [ Amount.usd $ 1 ]
+ { Calc.Balance.inclusive = Calc.Balance.amount_sum $ Amount.from_List [ Amount.usd $ 1 ]
, Calc.Balance.exclusive = Amount.from_List [ Amount.usd $ 1 ]
})
])
~?=
(Lib.TreeMap.from_List const
[ ("A":|[], Calc.Balance.Account_Sum_Expanded
- { Calc.Balance.inclusive = Amount.from_List [ Amount.usd $ 1 ]
+ { Calc.Balance.inclusive = Calc.Balance.amount_sum $ Amount.from_List [ Amount.usd $ 1 ]
, Calc.Balance.exclusive = Amount.from_List []
})
, ("A":|["B"], Calc.Balance.Account_Sum_Expanded
- { Calc.Balance.inclusive = Amount.from_List [ Amount.usd $ 1 ]
+ { Calc.Balance.inclusive = Calc.Balance.amount_sum $ Amount.from_List [ Amount.usd $ 1 ]
, Calc.Balance.exclusive = Amount.from_List [ Amount.usd $ 1 ]
})
])
~?=
(Lib.TreeMap.from_List const
[ ("A":|[], Calc.Balance.Account_Sum_Expanded
- { Calc.Balance.inclusive = Amount.from_List [ Amount.usd $ 1 ]
+ { Calc.Balance.inclusive = Calc.Balance.amount_sum $ Amount.from_List [ Amount.usd $ 1 ]
, Calc.Balance.exclusive = Amount.from_List []
})
, ("A":|["B"], Calc.Balance.Account_Sum_Expanded
- { Calc.Balance.inclusive = Amount.from_List [ Amount.usd $ 1 ]
+ { Calc.Balance.inclusive = Calc.Balance.amount_sum $ Amount.from_List [ Amount.usd $ 1 ]
, Calc.Balance.exclusive = Amount.from_List []
})
, ("A":|["B", "C"], Calc.Balance.Account_Sum_Expanded
- { Calc.Balance.inclusive = Amount.from_List [ Amount.usd $ 1 ]
+ { Calc.Balance.inclusive = Calc.Balance.amount_sum $ Amount.from_List [ Amount.usd $ 1 ]
, Calc.Balance.exclusive = Amount.from_List [ Amount.usd $ 1 ]
})
])
~?=
(Lib.TreeMap.from_List const
[ ("A":|[], Calc.Balance.Account_Sum_Expanded
- { Calc.Balance.inclusive = Amount.from_List [ Amount.usd $ 2 ]
+ { Calc.Balance.inclusive = Calc.Balance.amount_sum $ Amount.from_List [ Amount.usd $ 2 ]
, Calc.Balance.exclusive = Amount.from_List [ Amount.usd $ 1 ]
})
, ("A":|["B"], Calc.Balance.Account_Sum_Expanded
- { Calc.Balance.inclusive = Amount.from_List [ Amount.usd $ 1 ]
+ { Calc.Balance.inclusive = Calc.Balance.amount_sum $ Amount.from_List [ Amount.usd $ 1 ]
, Calc.Balance.exclusive = Amount.from_List [ Amount.usd $ 1 ]
})
])
~?=
(Lib.TreeMap.from_List const
[ ("A":|[], Calc.Balance.Account_Sum_Expanded
- { Calc.Balance.inclusive = Amount.from_List [ Amount.usd $ 3 ]
+ { Calc.Balance.inclusive = Calc.Balance.amount_sum $ Amount.from_List [ Amount.usd $ 3 ]
, Calc.Balance.exclusive = Amount.from_List [ Amount.usd $ 1 ]
})
, ("A":|["B"], Calc.Balance.Account_Sum_Expanded
- { Calc.Balance.inclusive = Amount.from_List [ Amount.usd $ 2 ]
+ { Calc.Balance.inclusive = Calc.Balance.amount_sum $ Amount.from_List [ Amount.usd $ 2 ]
, Calc.Balance.exclusive = Amount.from_List [ Amount.usd $ 1 ]
})
, ("A":|["B", "C"], Calc.Balance.Account_Sum_Expanded
- { Calc.Balance.inclusive = Amount.from_List [ Amount.usd $ 1 ]
+ { Calc.Balance.inclusive = Calc.Balance.amount_sum $ Amount.from_List [ Amount.usd $ 1 ]
, Calc.Balance.exclusive = Amount.from_List [ Amount.usd $ 1 ]
})
])
~?=
(Lib.TreeMap.from_List const
[ ("A":|[], Calc.Balance.Account_Sum_Expanded
- { Calc.Balance.inclusive = Amount.from_List [ Amount.usd $ 4 ]
+ { Calc.Balance.inclusive = Calc.Balance.amount_sum $ Amount.from_List [ Amount.usd $ 4 ]
, Calc.Balance.exclusive = Amount.from_List [ Amount.usd $ 1 ]
})
, ("A":|["B"], Calc.Balance.Account_Sum_Expanded
- { Calc.Balance.inclusive = Amount.from_List [ Amount.usd $ 3 ]
+ { Calc.Balance.inclusive = Calc.Balance.amount_sum $ Amount.from_List [ Amount.usd $ 3 ]
, Calc.Balance.exclusive = Amount.from_List [ Amount.usd $ 1 ]
})
, ("A":|["B", "C"], Calc.Balance.Account_Sum_Expanded
- { Calc.Balance.inclusive = Amount.from_List [ Amount.usd $ 2 ]
+ { Calc.Balance.inclusive = Calc.Balance.amount_sum $ Amount.from_List [ Amount.usd $ 2 ]
, Calc.Balance.exclusive = Amount.from_List [ Amount.usd $ 1 ]
})
, ("A":|["B", "C", "D"], Calc.Balance.Account_Sum_Expanded
- { Calc.Balance.inclusive = Amount.from_List [ Amount.usd $ 1 ]
+ { Calc.Balance.inclusive = Calc.Balance.amount_sum $ Amount.from_List [ Amount.usd $ 1 ]
, Calc.Balance.exclusive = Amount.from_List [ Amount.usd $ 1 ]
})
])
~?=
(Lib.TreeMap.from_List const
[ ("A":|[], Calc.Balance.Account_Sum_Expanded
- { Calc.Balance.inclusive = Amount.from_List [ Amount.usd $ 3 ]
+ { Calc.Balance.inclusive = Calc.Balance.amount_sum $ Amount.from_List [ Amount.usd $ 3 ]
, Calc.Balance.exclusive = Amount.from_List [ Amount.usd $ 1 ]
})
, ("A":|["B"], Calc.Balance.Account_Sum_Expanded
- { Calc.Balance.inclusive = Amount.from_List [ Amount.usd $ 1 ]
+ { Calc.Balance.inclusive = Calc.Balance.amount_sum $ Amount.from_List [ Amount.usd $ 1 ]
, Calc.Balance.exclusive = Amount.from_List [ Amount.usd $ 1 ]
})
, ("A":|["BB"], Calc.Balance.Account_Sum_Expanded
- { Calc.Balance.inclusive = Amount.from_List [ Amount.usd $ 1 ]
+ { Calc.Balance.inclusive = Calc.Balance.amount_sum $ Amount.from_List [ Amount.usd $ 1 ]
, Calc.Balance.exclusive = Amount.from_List [ Amount.usd $ 1 ]
})
, ("AA":|[], Calc.Balance.Account_Sum_Expanded
- { Calc.Balance.inclusive = Amount.from_List [ Amount.usd $ 1 ]
+ { Calc.Balance.inclusive = Calc.Balance.amount_sum $ Amount.from_List [ Amount.usd $ 1 ]
, Calc.Balance.exclusive = Amount.from_List []
})
, ("AA":|["B"], Calc.Balance.Account_Sum_Expanded
- { Calc.Balance.inclusive = Amount.from_List [ Amount.usd $ 1 ]
+ { Calc.Balance.inclusive = Calc.Balance.amount_sum $ Amount.from_List [ Amount.usd $ 1 ]
, Calc.Balance.exclusive = Amount.from_List [ Amount.usd $ 1 ]
})
])
]
, Calc.Balance.balance_by_unit =
Data.Map.fromList $
- Data.List.map (\s -> (Amount.unit $ Calc.Balance.unit_sum_amount s, s))
+ Data.List.map (\s -> (Amount.unit $ (Calc.Balance.amount_sum_balance $ Calc.Balance.unit_sum_amount s) Data.Map.! (), s))
[ Calc.Balance.Unit_Sum
- { Calc.Balance.unit_sum_amount = Amount.usd $ 1
+ { Calc.Balance.unit_sum_amount = Calc.Balance.amount_sum $ Data.Map.singleton () $ Amount.usd $ 1
, Calc.Balance.unit_sum_accounts = Data.Map.fromList $ Data.List.map (,())
["A":|[]]
}
~?=
(Calc.Balance.Deviation $
Data.Map.fromList $
- Data.List.map (\s -> (Amount.unit $ Calc.Balance.unit_sum_amount s, s))
+ Data.List.map (\s -> (Amount.unit $ (Calc.Balance.amount_sum_balance $ Calc.Balance.unit_sum_amount s) Data.Map.! (), s))
[ Calc.Balance.Unit_Sum
- { Calc.Balance.unit_sum_amount = Amount.usd $ 1
+ { Calc.Balance.unit_sum_amount = Calc.Balance.amount_sum $ Data.Map.singleton () $ Amount.usd $ 1
, Calc.Balance.unit_sum_accounts = Data.Map.fromList $ Data.List.map (,())
["B":|[]]
}
]
, Calc.Balance.balance_by_unit =
Data.Map.fromList $
- Data.List.map (\s -> (Amount.unit $ Calc.Balance.unit_sum_amount s, s))
+ Data.List.map (\s -> (Amount.unit $ (Calc.Balance.amount_sum_balance $ Calc.Balance.unit_sum_amount s) Data.Map.! (), s))
[ Calc.Balance.Unit_Sum
- { Calc.Balance.unit_sum_amount = Amount.usd $ 2
+ { Calc.Balance.unit_sum_amount = Calc.Balance.amount_sum $ Data.Map.singleton () $ Amount.usd $ 2
, Calc.Balance.unit_sum_accounts = Data.Map.fromList $ Data.List.map (,())
[ "A":|[]
, "B":|[]
~?=
(Calc.Balance.Deviation $
Data.Map.fromList $
- Data.List.map (\s -> (Amount.unit $ Calc.Balance.unit_sum_amount s, s))
+ Data.List.map (\s -> (Amount.unit $ (Calc.Balance.amount_sum_balance $ Calc.Balance.unit_sum_amount s) Data.Map.! (), s))
[ Calc.Balance.Unit_Sum
- { Calc.Balance.unit_sum_amount = Amount.usd $ 2
+ { Calc.Balance.unit_sum_amount = Calc.Balance.amount_sum $ Data.Map.singleton () $ Amount.usd $ 2
, Calc.Balance.unit_sum_accounts = Data.Map.fromList $ Data.List.map (,())
[
]
]
, Calc.Balance.balance_by_unit =
Data.Map.fromList $
- Data.List.map (\s -> (Amount.unit $ Calc.Balance.unit_sum_amount s, s))
+ Data.List.map (\s -> (Amount.unit $ (Calc.Balance.amount_sum_balance $ Calc.Balance.unit_sum_amount s) Data.Map.! (), s))
[ Calc.Balance.Unit_Sum
- { Calc.Balance.unit_sum_amount = Amount.usd $ 0
+ { Calc.Balance.unit_sum_amount = Calc.Balance.amount_sum $ Data.Map.singleton () $ Amount.usd $ 0
, Calc.Balance.unit_sum_accounts = Data.Map.fromList $ Data.List.map (,())
["A":|[]]
}
]
, Calc.Balance.balance_by_unit =
Data.Map.fromList $
- Data.List.map (\s -> (Amount.unit $ Calc.Balance.unit_sum_amount s, s))
+ Data.List.map (\s -> (Amount.unit $ (Calc.Balance.amount_sum_balance $ Calc.Balance.unit_sum_amount s) Data.Map.! (), s))
[ Calc.Balance.Unit_Sum
- { Calc.Balance.unit_sum_amount = Amount.usd $ 1
+ { Calc.Balance.unit_sum_amount = Calc.Balance.amount_sum $ Data.Map.singleton () $ Amount.usd $ 1
, Calc.Balance.unit_sum_accounts = Data.Map.fromList $ Data.List.map (,())
["A":|[]]
}
]
, Calc.Balance.balance_by_unit =
Data.Map.fromList $
- Data.List.map (\s -> (Amount.unit $ Calc.Balance.unit_sum_amount s, s))
+ Data.List.map (\s -> (Amount.unit $ (Calc.Balance.amount_sum_balance $ Calc.Balance.unit_sum_amount s) Data.Map.! (), s))
[ Calc.Balance.Unit_Sum
- { Calc.Balance.unit_sum_amount = Amount.usd $ 0
+ { Calc.Balance.unit_sum_amount = Calc.Balance.amount_sum $ Data.Map.singleton () $ Amount.usd $ 0
, Calc.Balance.unit_sum_accounts = Data.Map.fromList $ Data.List.map (,())
["A":|[]]
}
, Calc.Balance.Unit_Sum
- { Calc.Balance.unit_sum_amount = Amount.eur $ 0
+ { Calc.Balance.unit_sum_amount = Calc.Balance.amount_sum $ Data.Map.singleton () $ Amount.eur $ 0
, Calc.Balance.unit_sum_accounts = Data.Map.fromList $ Data.List.map (,())
["A":|[]]
}
]
, Calc.Balance.balance_by_unit =
Data.Map.fromList $
- Data.List.map (\s -> (Amount.unit $ Calc.Balance.unit_sum_amount s, s))
+ Data.List.map (\s -> (Amount.unit $ (Calc.Balance.amount_sum_balance $ Calc.Balance.unit_sum_amount s) Data.Map.! (), s))
[ Calc.Balance.Unit_Sum
- { Calc.Balance.unit_sum_amount = Amount.usd $ 0
+ { Calc.Balance.unit_sum_amount = Calc.Balance.amount_sum $ Data.Map.singleton () $ Amount.usd $ 0
, Calc.Balance.unit_sum_accounts = Data.Map.fromList $ Data.List.map (,())
["A":|[], "B":|[]]
}
]
, Calc.Balance.balance_by_unit =
Data.Map.fromList $
- Data.List.map (\s -> (Amount.unit $ Calc.Balance.unit_sum_amount s, s))
+ Data.List.map (\s -> (Amount.unit $ (Calc.Balance.amount_sum_balance $ Calc.Balance.unit_sum_amount s) Data.Map.! (), s))
[ Calc.Balance.Unit_Sum
- { Calc.Balance.unit_sum_amount = Amount.usd $ 1
+ { Calc.Balance.unit_sum_amount = Calc.Balance.amount_sum $ Data.Map.singleton () $ Amount.usd $ 1
, Calc.Balance.unit_sum_accounts = Data.Map.fromList $ Data.List.map (,())
["A":|[]]
}
]
, Calc.Balance.balance_by_unit =
Data.Map.fromList $
- Data.List.map (\s -> (Amount.unit $ Calc.Balance.unit_sum_amount s, s))
+ Data.List.map (\s -> (Amount.unit $ (Calc.Balance.amount_sum_balance $ Calc.Balance.unit_sum_amount s) Data.Map.! (), s))
[ Calc.Balance.Unit_Sum
- { Calc.Balance.unit_sum_amount = Amount.usd $ 1
+ { Calc.Balance.unit_sum_amount = Calc.Balance.amount_sum $ Data.Map.singleton () $ Amount.usd $ 1
, Calc.Balance.unit_sum_accounts = Data.Map.fromList $ Data.List.map (,())
["A":|[]]
}
, Calc.Balance.Unit_Sum
- { Calc.Balance.unit_sum_amount = Amount.eur $ 1
+ { Calc.Balance.unit_sum_amount = Calc.Balance.amount_sum $ Data.Map.singleton () $ Amount.eur $ 1
, Calc.Balance.unit_sum_accounts = Data.Map.fromList $ Data.List.map (,())
["B":|[]]
}
]
, Calc.Balance.balance_by_unit =
Data.Map.fromList $
- Data.List.map (\s -> (Amount.unit $ Calc.Balance.unit_sum_amount s, s))
+ Data.List.map (\s -> (Amount.unit $ (Calc.Balance.amount_sum_balance $ Calc.Balance.unit_sum_amount s) Data.Map.! (), s))
[ Calc.Balance.Unit_Sum
- { Calc.Balance.unit_sum_amount = Amount.usd $ 0
+ { Calc.Balance.unit_sum_amount = Calc.Balance.amount_sum $ Data.Map.singleton () $ Amount.usd $ 0
, Calc.Balance.unit_sum_accounts = Data.Map.fromList $ Data.List.map (,())
["A":|[], "B":|[]]
}
, Calc.Balance.Unit_Sum
- { Calc.Balance.unit_sum_amount = Amount.eur $ 1
+ { Calc.Balance.unit_sum_amount = Calc.Balance.amount_sum $ Data.Map.singleton () $ Amount.eur $ 1
, Calc.Balance.unit_sum_accounts = Data.Map.fromList $ Data.List.map (,())
["B":|[]]
}
]
, Calc.Balance.balance_by_unit =
Data.Map.fromList $
- Data.List.map (\s -> (Amount.unit $ Calc.Balance.unit_sum_amount s, s))
+ Data.List.map (\s -> (Amount.unit $ (Calc.Balance.amount_sum_balance $ Calc.Balance.unit_sum_amount s) Data.Map.! (), s))
[ Calc.Balance.Unit_Sum
- { Calc.Balance.unit_sum_amount = Amount.usd $ 0
+ { Calc.Balance.unit_sum_amount = Calc.Balance.amount_sum $ Data.Map.singleton () $ Amount.usd $ 0
, Calc.Balance.unit_sum_accounts = Data.Map.fromList $ Data.List.map (,())
["A":|[], "B":|[]]
}
, Calc.Balance.Unit_Sum
- { Calc.Balance.unit_sum_amount = Amount.eur $ 0
+ { Calc.Balance.unit_sum_amount = Calc.Balance.amount_sum $ Data.Map.singleton () $ Amount.eur $ 0
, Calc.Balance.unit_sum_accounts = Data.Map.fromList $ Data.List.map (,())
["A":|[], "B":|[]]
}
, Calc.Balance.Unit_Sum
- { Calc.Balance.unit_sum_amount = Amount.gbp $ 0
+ { Calc.Balance.unit_sum_amount = Calc.Balance.amount_sum $ Data.Map.singleton () $ Amount.gbp $ 0
, Calc.Balance.unit_sum_accounts = Data.Map.fromList $ Data.List.map (,())
["A":|[], "B":|[]]
}
(Right $
Format.Ledger.posting_by_Account
[ (Format.Ledger.posting ("A":|[]))
- { Format.Ledger.posting_amounts=Amount.from_List [ Amount.eur $ 1 ] }
- , (Format.Ledger.posting ("A":|[]))
- { Format.Ledger.posting_amounts=Amount.from_List [ Amount.usd $ 1] }
- , (Format.Ledger.posting ("B":|[]))
- { Format.Ledger.posting_amounts=Amount.from_List [ Amount.usd $ -1 ] }
+ { Format.Ledger.posting_amounts=Amount.from_List [ Amount.usd $ 1, Amount.eur $ 1] }
, (Format.Ledger.posting ("B":|[]))
- { Format.Ledger.posting_amounts=Amount.from_List [ Amount.eur $ -1 ] }
+ { Format.Ledger.posting_amounts=Amount.from_List [ Amount.eur $ -1, Amount.usd $ -1 ] }
])
, "{A+$1 B+$1}" ~:
(snd $ Calc.Balance.infer_equilibrium $
~?=
(Left
[ Calc.Balance.Unit_Sum
- { Calc.Balance.unit_sum_amount = Amount.usd $ 2
+ { Calc.Balance.unit_sum_amount = Calc.Balance.amount_sum $ Data.Map.singleton () $ Amount.usd $ 2
, Calc.Balance.unit_sum_accounts = Data.Map.fromList []}
])
+ , "{A+$1 B-$1 B-1€}" ~:
+ (snd $ Calc.Balance.infer_equilibrium $
+ Format.Ledger.posting_by_Account
+ [ (Format.Ledger.posting ("A":|[]))
+ { Format.Ledger.posting_amounts=Amount.from_List [ Amount.usd $ 1 ] }
+ , (Format.Ledger.posting ("B":|[]))
+ { Format.Ledger.posting_amounts=Amount.from_List [ Amount.usd $ -1, Amount.eur $ -1 ] }
+ ])
+ ~?=
+ (Right $
+ Format.Ledger.posting_by_Account
+ [ (Format.Ledger.posting ("A":|[]))
+ { Format.Ledger.posting_amounts=Amount.from_List [ Amount.usd $ 1, Amount.eur $ 1 ] }
+ , (Format.Ledger.posting ("B":|[]))
+ { Format.Ledger.posting_amounts=Amount.from_List [ Amount.usd $ -1, Amount.eur $ -1 ] }
+ ])
]
]
]
, Format.Ledger.posting_sourcepos = P.newPos "" 2 1
}
, (Format.Ledger.posting ("a":|["b", "c"]))
- { Format.Ledger.posting_sourcepos = P.newPos "" 3 1
+ { Format.Ledger.posting_amounts = Data.Map.fromList
+ [ ("$", Amount.nil
+ { Amount.quantity = -1
+ , Amount.style = Amount.Style.nil
+ { Amount.Style.unit_side = Just Amount.Style.Side_Left
+ , Amount.Style.unit_spaced = Just False
+ }
+ , Amount.unit = "$"
+ })
+ ]
+ , Format.Ledger.posting_sourcepos = P.newPos "" 3 1
}
]
+ , Format.Ledger.transaction_postings_balance =
+ Calc.Balance.Balance
+ { Calc.Balance.balance_by_account =
+ Lib.TreeMap.from_List const
+ [ ("A":|["B", "C"], Amount.from_List [ Amount.usd $ 1 ])
+ , ("a":|["b", "c"], Amount.from_List [ Amount.usd $ -1 ])
+ ]
+ , Calc.Balance.balance_by_unit =
+ Data.Map.fromList $
+ Data.List.map (\s -> (Amount.unit $ (Calc.Balance.amount_sum_balance $ Calc.Balance.unit_sum_amount s) Data.Map.! (), s))
+ [ Calc.Balance.Unit_Sum
+ { Calc.Balance.unit_sum_amount = Calc.Balance.Amount_Sum
+ { Calc.Balance.amount_sum_negative = Data.Map.singleton () $ Amount.usd $ -1
+ , Calc.Balance.amount_sum_positive = Data.Map.singleton () $ Amount.usd $ 1
+ , Calc.Balance.amount_sum_balance = Data.Map.singleton () $ Amount.usd $ 0
+ }
+ , Calc.Balance.unit_sum_accounts = Data.Map.fromList $ Data.List.map (,())
+ [ "A":|["B", "C"]
+ , "a":|["b", "c"]
+ ]
+ }
+ ]
+ }
, Format.Ledger.transaction_sourcepos = P.newPos "" 1 1
}
]
, Format.Ledger.posting_sourcepos = P.newPos "" 2 1
}
, (Format.Ledger.posting ("a":|["b", "c"]))
- { Format.Ledger.posting_sourcepos = P.newPos "" 3 1
+ { Format.Ledger.posting_amounts = Data.Map.fromList
+ [ ("$", Amount.nil
+ { Amount.quantity = -1
+ , Amount.style = Amount.Style.nil
+ { Amount.Style.unit_side = Just Amount.Style.Side_Left
+ , Amount.Style.unit_spaced = Just False
+ }
+ , Amount.unit = "$"
+ })
+ ]
+ , Format.Ledger.posting_sourcepos = P.newPos "" 3 1
}
]
+ , Format.Ledger.transaction_postings_balance =
+ Calc.Balance.Balance
+ { Calc.Balance.balance_by_account =
+ Lib.TreeMap.from_List const
+ [ ("A":|["B", "C"], Amount.from_List [ Amount.usd $ 1 ])
+ , ("a":|["b", "c"], Amount.from_List [ Amount.usd $ -1 ])
+ ]
+ , Calc.Balance.balance_by_unit =
+ Data.Map.fromList $
+ Data.List.map (\s -> (Amount.unit $ (Calc.Balance.amount_sum_balance $ Calc.Balance.unit_sum_amount s) Data.Map.! (), s))
+ [ Calc.Balance.Unit_Sum
+ { Calc.Balance.unit_sum_amount = Calc.Balance.Amount_Sum
+ { Calc.Balance.amount_sum_negative = Data.Map.singleton () $ Amount.usd $ -1
+ , Calc.Balance.amount_sum_positive = Data.Map.singleton () $ Amount.usd $ 1
+ , Calc.Balance.amount_sum_balance = Data.Map.singleton () $ Amount.usd $ 0
+ }
+ , Calc.Balance.unit_sum_accounts = Data.Map.fromList $ Data.List.map (,())
+ [ "A":|["B", "C"]
+ , "a":|["b", "c"]
+ ]
+ }
+ ]
+ }
, Format.Ledger.transaction_sourcepos = P.newPos "" 1 1
}
]
, Format.Ledger.posting_sourcepos = P.newPos "" 5 1
}
, (Format.Ledger.posting ("a":|["b", "c"]))
- { Format.Ledger.posting_sourcepos = P.newPos "" 6 1
- , Format.Ledger.posting_tags = Data.Map.fromList []
+ { Format.Ledger.posting_amounts = Data.Map.fromList
+ [ ("$", Amount.nil
+ { Amount.quantity = -1
+ , Amount.style = Amount.Style.nil
+ { Amount.Style.unit_side = Just Amount.Style.Side_Left
+ , Amount.Style.unit_spaced = Just False
+ }
+ , Amount.unit = "$"
+ })
+ ]
+ , Format.Ledger.posting_sourcepos = P.newPos "" 6 1
}
]
- , Format.Ledger.transaction_sourcepos = P.newPos "" 1 1
, Format.Ledger.transaction_tags = Data.Map.fromList
[ ("Tag", [""])
]
+ , Format.Ledger.transaction_postings_balance =
+ Calc.Balance.Balance
+ { Calc.Balance.balance_by_account =
+ Lib.TreeMap.from_List const
+ [ ("A":|["B", "C"], Amount.from_List [ Amount.usd $ 1 ])
+ , ("a":|["b", "c"], Amount.from_List [ Amount.usd $ -1 ])
+ ]
+ , Calc.Balance.balance_by_unit =
+ Data.Map.fromList $
+ Data.List.map (\s -> (Amount.unit $ (Calc.Balance.amount_sum_balance $ Calc.Balance.unit_sum_amount s) Data.Map.! (), s))
+ [ Calc.Balance.Unit_Sum
+ { Calc.Balance.unit_sum_amount = Calc.Balance.Amount_Sum
+ { Calc.Balance.amount_sum_negative = Data.Map.singleton () $ Amount.usd $ -1
+ , Calc.Balance.amount_sum_positive = Data.Map.singleton () $ Amount.usd $ 1
+ , Calc.Balance.amount_sum_balance = Data.Map.singleton () $ Amount.usd $ 0
+ }
+ , Calc.Balance.unit_sum_accounts = Data.Map.fromList $ Data.List.map (,())
+ [ "A":|["B", "C"]
+ , "a":|["b", "c"]
+ ]
+ }
+ ]
+ }
+ , Format.Ledger.transaction_sourcepos = P.newPos "" 1 1
}
]
]
Data.Either.rights [jnl])
@?=
[ Format.Ledger.journal
- { Format.Ledger.journal_transactions = Format.Ledger.transaction_by_Date
+ { Format.Ledger.journal_transactions =
+ Format.Ledger.transaction_by_Date
[ Format.Ledger.transaction
{ Format.Ledger.transaction_dates=
( Time.ZonedTime
, Format.Ledger.posting_sourcepos = P.newPos "" 2 1
}
, (Format.Ledger.posting ("a":|["b", "c"]))
- { Format.Ledger.posting_sourcepos = P.newPos "" 3 1
+ { Format.Ledger.posting_amounts = Data.Map.fromList
+ [ ("$", Amount.nil
+ { Amount.quantity = -1
+ , Amount.style = Amount.Style.nil
+ { Amount.Style.unit_side = Just Amount.Style.Side_Left
+ , Amount.Style.unit_spaced = Just False
+ }
+ , Amount.unit = "$"
+ })
+ ]
+ , Format.Ledger.posting_sourcepos = P.newPos "" 3 1
}
]
+ , Format.Ledger.transaction_postings_balance =
+ Calc.Balance.Balance
+ { Calc.Balance.balance_by_account =
+ Lib.TreeMap.from_List const
+ [ ("A":|["B", "C"], Amount.from_List [ Amount.usd $ 1 ])
+ , ("a":|["b", "c"], Amount.from_List [ Amount.usd $ -1 ])
+ ]
+ , Calc.Balance.balance_by_unit =
+ Data.Map.fromList $
+ Data.List.map (\s -> (Amount.unit $ (Calc.Balance.amount_sum_balance $ Calc.Balance.unit_sum_amount s) Data.Map.! (), s))
+ [ Calc.Balance.Unit_Sum
+ { Calc.Balance.unit_sum_amount = Calc.Balance.Amount_Sum
+ { Calc.Balance.amount_sum_negative = Data.Map.singleton () $ Amount.usd $ -1
+ , Calc.Balance.amount_sum_positive = Data.Map.singleton () $ Amount.usd $ 1
+ , Calc.Balance.amount_sum_balance = Data.Map.singleton () $ Amount.usd $ 0
+ }
+ , Calc.Balance.unit_sum_accounts = Data.Map.fromList $ Data.List.map (,())
+ [ "A":|["B", "C"]
+ , "a":|["b", "c"]
+ ]
+ }
+ ]
+ }
, Format.Ledger.transaction_sourcepos = P.newPos "" 1 1
}
, Format.Ledger.transaction
, Format.Ledger.posting_sourcepos = P.newPos "" 5 1
}
, (Format.Ledger.posting ("x":|["y", "z"]))
- { Format.Ledger.posting_sourcepos = P.newPos "" 6 1
+ { Format.Ledger.posting_amounts = Data.Map.fromList
+ [ ("$", Amount.nil
+ { Amount.quantity = -1
+ , Amount.style = Amount.Style.nil
+ { Amount.Style.unit_side = Just Amount.Style.Side_Left
+ , Amount.Style.unit_spaced = Just False
+ }
+ , Amount.unit = "$"
+ })
+ ]
+ , Format.Ledger.posting_sourcepos = P.newPos "" 6 1
}
]
+ , Format.Ledger.transaction_postings_balance =
+ Calc.Balance.Balance
+ { Calc.Balance.balance_by_account =
+ Lib.TreeMap.from_List const
+ [ ("A":|["B", "C"], Amount.from_List [ Amount.usd $ 1 ])
+ , ("x":|["y", "z"], Amount.from_List [ Amount.usd $ -1 ])
+ ]
+ , Calc.Balance.balance_by_unit =
+ Data.Map.fromList $
+ Data.List.map (\s -> (Amount.unit $ (Calc.Balance.amount_sum_balance $ Calc.Balance.unit_sum_amount s) Data.Map.! (), s))
+ [ Calc.Balance.Unit_Sum
+ { Calc.Balance.unit_sum_amount = Calc.Balance.Amount_Sum
+ { Calc.Balance.amount_sum_negative = Data.Map.singleton () $ Amount.usd $ -1
+ , Calc.Balance.amount_sum_positive = Data.Map.singleton () $ Amount.usd $ 1
+ , Calc.Balance.amount_sum_balance = Data.Map.singleton () $ Amount.usd $ 0
+ }
+ , Calc.Balance.unit_sum_accounts = Data.Map.fromList $ Data.List.map (,())
+ [ "A":|["B", "C"]
+ , "x":|["y", "z"]
+ ]
+ }
+ ]
+ }
, Format.Ledger.transaction_sourcepos = P.newPos "" 4 1
}
]
, "Write" ~: TestList
[ "account" ~: TestList
[ "A" ~:
- ((Format.Ledger.Write.show False $
+ ((Format.Ledger.Write.show
+ Format.Ledger.Write.Style
+ { Format.Ledger.Write.style_color=False
+ , Format.Ledger.Write.style_align=True
+ } $
Format.Ledger.Write.account Format.Ledger.Posting_Type_Regular $
"A":|[])
~?=
"A")
, "A:B:C" ~:
- ((Format.Ledger.Write.show False $
+ ((Format.Ledger.Write.show
+ Format.Ledger.Write.Style
+ { Format.Ledger.Write.style_color=False
+ , Format.Ledger.Write.style_align=True
+ } $
Format.Ledger.Write.account Format.Ledger.Posting_Type_Regular $
"A":|["B", "C"])
~?=
"A:B:C")
, "(A:B:C)" ~:
- ((Format.Ledger.Write.show False $
+ ((Format.Ledger.Write.show
+ Format.Ledger.Write.Style
+ { Format.Ledger.Write.style_color=False
+ , Format.Ledger.Write.style_align=True
+ } $
Format.Ledger.Write.account Format.Ledger.Posting_Type_Virtual $
"A":|["B", "C"])
~?=
"(A:B:C)")
, "[A:B:C]" ~:
- ((Format.Ledger.Write.show False $
+ ((Format.Ledger.Write.show
+ Format.Ledger.Write.Style
+ { Format.Ledger.Write.style_color=False
+ , Format.Ledger.Write.style_align=True
+ } $
Format.Ledger.Write.account Format.Ledger.Posting_Type_Virtual_Balanced $
"A":|["B", "C"])
~?=
]
, "amount" ~: TestList
[ "nil" ~:
- ((Format.Ledger.Write.show False $
+ ((Format.Ledger.Write.show
+ Format.Ledger.Write.Style
+ { Format.Ledger.Write.style_color=False
+ , Format.Ledger.Write.style_align=True
+ } $
Format.Ledger.Write.amount
Amount.nil)
~?=
"0")
, "nil @ prec=2" ~:
- ((Format.Ledger.Write.show False $
+ ((Format.Ledger.Write.show
+ Format.Ledger.Write.Style
+ { Format.Ledger.Write.style_color=False
+ , Format.Ledger.Write.style_align=True
+ } $
Format.Ledger.Write.amount
Amount.nil
{ Amount.style = Amount.Style.nil
~?=
"0.00")
, "123" ~:
- ((Format.Ledger.Write.show False $
+ ((Format.Ledger.Write.show
+ Format.Ledger.Write.Style
+ { Format.Ledger.Write.style_color=False
+ , Format.Ledger.Write.style_align=True
+ } $
Format.Ledger.Write.amount
Amount.nil
{ Amount.quantity = Decimal 0 123
~?=
"123")
, "-123" ~:
- ((Format.Ledger.Write.show False $
+ ((Format.Ledger.Write.show
+ Format.Ledger.Write.Style
+ { Format.Ledger.Write.style_color=False
+ , Format.Ledger.Write.style_align=True
+ } $
Format.Ledger.Write.amount
Amount.nil
{ Amount.quantity = Decimal 0 (- 123)
~?=
"-123")
, "12.3 @ prec=0" ~:
- ((Format.Ledger.Write.show False $
+ ((Format.Ledger.Write.show
+ Format.Ledger.Write.Style
+ { Format.Ledger.Write.style_color=False
+ , Format.Ledger.Write.style_align=True
+ } $
Format.Ledger.Write.amount
Amount.nil
{ Amount.quantity = Decimal 1 123
~?=
"12")
, "12.5 @ prec=0" ~:
- ((Format.Ledger.Write.show False $
+ ((Format.Ledger.Write.show
+ Format.Ledger.Write.Style
+ { Format.Ledger.Write.style_color=False
+ , Format.Ledger.Write.style_align=True
+ } $
Format.Ledger.Write.amount
Amount.nil
{ Amount.quantity = Decimal 1 125
~?=
"13")
, "12.3 @ prec=1" ~:
- ((Format.Ledger.Write.show False $
+ ((Format.Ledger.Write.show
+ Format.Ledger.Write.Style
+ { Format.Ledger.Write.style_color=False
+ , Format.Ledger.Write.style_align=True
+ } $
Format.Ledger.Write.amount
Amount.nil
{ Amount.quantity = Decimal 1 123
~?=
"12.3")
, "1,234.56 @ prec=2" ~:
- ((Format.Ledger.Write.show False $
+ ((Format.Ledger.Write.show
+ Format.Ledger.Write.Style
+ { Format.Ledger.Write.style_color=False
+ , Format.Ledger.Write.style_align=True
+ } $
Format.Ledger.Write.amount
Amount.nil
{ Amount.quantity = Decimal 2 123456
~?=
"1,234.56")
, "123,456,789,01,2.3456789 @ prec=7" ~:
- ((Format.Ledger.Write.show False $
+ ((Format.Ledger.Write.show
+ Format.Ledger.Write.Style
+ { Format.Ledger.Write.style_color=False
+ , Format.Ledger.Write.style_align=True
+ } $
Format.Ledger.Write.amount
Amount.nil
{ Amount.quantity = Decimal 7 1234567890123456789
~?=
"123,456,789,01,2.3456789")
, "1234567.8,90,123,456,789 @ prec=12" ~:
- ((Format.Ledger.Write.show False $
+ ((Format.Ledger.Write.show
+ Format.Ledger.Write.Style
+ { Format.Ledger.Write.style_color=False
+ , Format.Ledger.Write.style_align=True
+ } $
Format.Ledger.Write.amount
Amount.nil
{ Amount.quantity = Decimal 12 1234567890123456789
~?=
"1234567.8,90,123,456,789")
, "1,2,3,4,5,6,7,89,012.3456789 @ prec=7" ~:
- ((Format.Ledger.Write.show False $
+ ((Format.Ledger.Write.show
+ Format.Ledger.Write.Style
+ { Format.Ledger.Write.style_color=False
+ , Format.Ledger.Write.style_align=True
+ } $
Format.Ledger.Write.amount
Amount.nil
{ Amount.quantity = Decimal 7 1234567890123456789
~?=
"1,2,3,4,5,6,7,89,012.3456789")
, "1234567.890,12,3,4,5,6,7,8,9 @ prec=12" ~:
- ((Format.Ledger.Write.show False $
+ ((Format.Ledger.Write.show
+ Format.Ledger.Write.Style
+ { Format.Ledger.Write.style_color=False
+ , Format.Ledger.Write.style_align=True
+ } $
Format.Ledger.Write.amount
Amount.nil
{ Amount.quantity = Decimal 12 1234567890123456789
]
, "date" ~: TestList
[ "nil" ~:
- ((Format.Ledger.Write.show False $
+ ((Format.Ledger.Write.show
+ Format.Ledger.Write.Style
+ { Format.Ledger.Write.style_color=False
+ , Format.Ledger.Write.style_align=True
+ } $
Format.Ledger.Write.date
Date.nil)
~?=
"1970/01/01")
, "2000/01/01 12:34:51 CET" ~:
- (Format.Ledger.Write.show False $
+ (Format.Ledger.Write.show
+ Format.Ledger.Write.Style
+ { Format.Ledger.Write.style_color=False
+ , Format.Ledger.Write.style_align=True
+ } $
Format.Ledger.Write.date $
Time.ZonedTime
(Time.LocalTime
~?=
"2000/01/01 12:34:51 CET"
, "2000/01/01 12:34:51 +0100" ~:
- (Format.Ledger.Write.show False $
+ (Format.Ledger.Write.show
+ Format.Ledger.Write.Style
+ { Format.Ledger.Write.style_color=False
+ , Format.Ledger.Write.style_align=True
+ } $
Format.Ledger.Write.date $
Time.ZonedTime
(Time.LocalTime
~?=
"2000/01/01 12:34:51 +0100"
, "2000/01/01 01:02:03" ~:
- (Format.Ledger.Write.show False $
+ (Format.Ledger.Write.show
+ Format.Ledger.Write.Style
+ { Format.Ledger.Write.style_color=False
+ , Format.Ledger.Write.style_align=True
+ } $
Format.Ledger.Write.date $
Time.ZonedTime
(Time.LocalTime
~?=
"2000/01/01 01:02:03"
, "01/01 01:02" ~:
- (Format.Ledger.Write.show False $
+ (Format.Ledger.Write.show
+ Format.Ledger.Write.Style
+ { Format.Ledger.Write.style_color=False
+ , Format.Ledger.Write.style_align=True
+ } $
Format.Ledger.Write.date $
Time.ZonedTime
(Time.LocalTime
~?=
"01/01 01:02"
, "01/01 01:00" ~:
- (Format.Ledger.Write.show False $
+ (Format.Ledger.Write.show
+ Format.Ledger.Write.Style
+ { Format.Ledger.Write.style_color=False
+ , Format.Ledger.Write.style_align=True
+ } $
Format.Ledger.Write.date $
Time.ZonedTime
(Time.LocalTime
~?=
"01/01 01:00"
, "01/01 00:01" ~:
- (Format.Ledger.Write.show False $
+ (Format.Ledger.Write.show
+ Format.Ledger.Write.Style
+ { Format.Ledger.Write.style_color=False
+ , Format.Ledger.Write.style_align=True
+ } $
Format.Ledger.Write.date $
Time.ZonedTime
(Time.LocalTime
~?=
"01/01 00:01"
, "01/01" ~:
- (Format.Ledger.Write.show False $
+ (Format.Ledger.Write.show
+ Format.Ledger.Write.Style
+ { Format.Ledger.Write.style_color=False
+ , Format.Ledger.Write.style_align=True
+ } $
Format.Ledger.Write.date $
Time.ZonedTime
(Time.LocalTime
]
, "transaction" ~: TestList
[ "nil" ~:
- ((Format.Ledger.Write.show False $
+ ((Format.Ledger.Write.show
+ Format.Ledger.Write.Style
+ { Format.Ledger.Write.style_color=False
+ , Format.Ledger.Write.style_align=True
+ } $
Format.Ledger.Write.transaction
Format.Ledger.transaction)
~?=
"1970/01/01\n")
- , "2000/01/01 some description\\n\\ta:b:c\\n\\t\\t; first comment\\n\\t\\t; second comment\\n\\t\\t; third comment\\n\\tA:B:C $1" ~:
- ((Format.Ledger.Write.show False $
+ , "2000/01/01 some description\\n\\ta:b:c\\n\\t ; first comment\\n\\t ; second comment\\n\\t ; third comment\\n\\tA:B:C $1" ~:
+ ((Format.Ledger.Write.show
+ Format.Ledger.Write.Style
+ { Format.Ledger.Write.style_color=False
+ , Format.Ledger.Write.style_align=True
+ } $
Format.Ledger.Write.transaction $
Format.Ledger.transaction
{ Format.Ledger.transaction_dates=
]
})
~?=
- "2000/01/01 some description\n\ta:b:c\n\t\t; first comment\n\t\t; second comment\n\t\t; third comment\n\tA:B:C $1")
+ "2000/01/01 some description\n\ta:b:c\n\t ; first comment\n\t ; second comment\n\t ; third comment\n\tA:B:C $1")
, "2000/01/01 some description\\n\\tA:B:C $1\\n\\tAA:BB:CC $123" ~:
- ((Format.Ledger.Write.show False $
+ ((Format.Ledger.Write.show
+ Format.Ledger.Write.Style
+ { Format.Ledger.Write.style_color=False
+ , Format.Ledger.Write.style_align=True
+ } $
Format.Ledger.Write.transaction $
Format.Ledger.transaction
{ Format.Ledger.transaction_dates=