fix: Correctly infer Cash accounts using accountNameInferType.

This commit is contained in:
Stephen Morgan 2022-02-01 16:04:03 +11:00 committed by Simon Michael
parent 4aa06d7920
commit e17cd1540d

View File

@ -99,11 +99,11 @@ revenueAccountRegex = toRegexCI' "^(income|revenue)s?(:|$)"
expenseAccountRegex = toRegexCI' "^expenses?(:|$)"
-- | Try to guess an account's type from its name,
-- matching common english top-level account names.
-- matching common English top-level account names.
accountNameInferType :: AccountName -> Maybe AccountType
accountNameInferType a
| regexMatchText cashAccountRegex a = Just Cash
| regexMatchText assetAccountRegex a = Just Asset
| a == "asset" || a == "assets" = Just Asset
| regexMatchText assetAccountRegex a = Just $ if regexMatchText cashAccountRegex a then Asset else Cash
| regexMatchText liabilityAccountRegex a = Just Liability
| regexMatchText equityAccountRegex a = Just Equity
| regexMatchText revenueAccountRegex a = Just Revenue
@ -283,5 +283,15 @@ tests_AccountName = testGroup "AccountName" [
"assets:bank" `isSubAccountNameOf` "assets" @?= True
"assets:bank:checking" `isSubAccountNameOf` "assets" @?= False
"assets:bank" `isSubAccountNameOf` "my assets" @?= False
,testCase "accountNameInferType" $ do
accountNameInferType "assets" @?= Just Asset
accountNameInferType "assets:cash" @?= Just Cash
accountNameInferType "assets:A/R" @?= Just Asset
accountNameInferType "liabilities" @?= Just Liability
accountNameInferType "equity" @?= Just Equity
accountNameInferType "expenses" @?= Just Expense
accountNameInferType "revenues" @?= Just Revenue
accountNameInferType "revenue" @?= Just Revenue
accountNameInferType "income" @?= Just Revenue
]