fix: Correctly infer Cash accounts using accountNameInferType.
This commit is contained in:
		
							parent
							
								
									4aa06d7920
								
							
						
					
					
						commit
						e17cd1540d
					
				| @ -99,16 +99,16 @@ revenueAccountRegex   = toRegexCI' "^(income|revenue)s?(:|$)" | |||||||
| expenseAccountRegex   = toRegexCI' "^expenses?(:|$)" | expenseAccountRegex   = toRegexCI' "^expenses?(:|$)" | ||||||
| 
 | 
 | ||||||
| -- | Try to guess an account's type from its name, | -- | 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 :: AccountName -> Maybe AccountType | ||||||
| accountNameInferType a | accountNameInferType a | ||||||
|   | regexMatchText cashAccountRegex      a = Just Cash |   | a == "asset" || a == "assets"          = Just Asset | ||||||
|   | regexMatchText assetAccountRegex     a = Just Asset |   | regexMatchText assetAccountRegex     a = Just $ if regexMatchText cashAccountRegex a then Asset else Cash | ||||||
|   | regexMatchText liabilityAccountRegex a = Just Liability |   | regexMatchText liabilityAccountRegex a = Just Liability | ||||||
|   | regexMatchText equityAccountRegex    a = Just Equity |   | regexMatchText equityAccountRegex    a = Just Equity | ||||||
|   | regexMatchText revenueAccountRegex   a = Just Revenue |   | regexMatchText revenueAccountRegex   a = Just Revenue | ||||||
|   | regexMatchText expenseAccountRegex   a = Just Expense |   | regexMatchText expenseAccountRegex   a = Just Expense | ||||||
|   | otherwise                          = Nothing |   | otherwise                              = Nothing | ||||||
| 
 | 
 | ||||||
| accountNameLevel :: AccountName -> Int | accountNameLevel :: AccountName -> Int | ||||||
| accountNameLevel "" = 0 | accountNameLevel "" = 0 | ||||||
| @ -283,5 +283,15 @@ tests_AccountName = testGroup "AccountName" [ | |||||||
|     "assets:bank" `isSubAccountNameOf` "assets" @?= True |     "assets:bank" `isSubAccountNameOf` "assets" @?= True | ||||||
|     "assets:bank:checking" `isSubAccountNameOf` "assets" @?= False |     "assets:bank:checking" `isSubAccountNameOf` "assets" @?= False | ||||||
|     "assets:bank" `isSubAccountNameOf` "my 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 | ||||||
|  ] |  ] | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user