mirror of
https://github.com/simonmichael/hledger.git
synced 2024-11-10 05:39:31 +03:00
budget: --drop preserves the <unbudgeted> top-level account
This commit is contained in:
parent
43287a3e26
commit
e2c55aafa9
@ -57,8 +57,24 @@ accountNameLevel :: AccountName -> Int
|
||||
accountNameLevel "" = 0
|
||||
accountNameLevel a = T.length (T.filter (==acctsepchar) a) + 1
|
||||
|
||||
-- | Remove some number of account name components from the front of the account name.
|
||||
-- If the special "<unbudgeted>" top-level account is present, it is preserved and
|
||||
-- dropping affects the rest of the account name.
|
||||
accountNameDrop :: Int -> AccountName -> AccountName
|
||||
accountNameDrop n = accountNameFromComponents . drop n . accountNameComponents
|
||||
accountNameDrop n a
|
||||
| a == unbudgetedAccount = a
|
||||
| unbudgetedAccountAndSep `T.isPrefixOf` a =
|
||||
case accountNameDrop n $ T.drop (T.length unbudgetedAccountAndSep) a of
|
||||
"" -> unbudgetedAccount
|
||||
a' -> unbudgetedAccountAndSep <> a'
|
||||
| otherwise = accountNameFromComponents $ drop n $ accountNameComponents a
|
||||
where
|
||||
unbudgetedAccountAndSep = unbudgetedAccount <> acctsep
|
||||
|
||||
-- | A top-level account prefixed to some accounts in budget reports.
|
||||
-- Defined here so it can be ignored by accountNameDrop.
|
||||
unbudgetedAccount :: T.Text
|
||||
unbudgetedAccount = "<unbudgeted>"
|
||||
|
||||
-- | Sorted unique account names implied by these account names,
|
||||
-- ie these plus all their parent accounts up to the root.
|
||||
|
@ -106,7 +106,7 @@ budgetRollUp showunbudgeted budget j = j { jtxns = remapTxn <$> jtxns j }
|
||||
| otherwise =
|
||||
case parentAccountName acctName of
|
||||
"" | showunbudgeted -> origAcctName
|
||||
| otherwise -> T.append (T.pack "<unbudgeted>:") acctName -- TODO: --drop should not remove this
|
||||
| otherwise -> unbudgetedAccount <> acctsep <> acctName
|
||||
parent -> remapAccount' parent
|
||||
remapPosting p = p { paccount = remapAccount $ paccount p, porigin = Just . fromMaybe p $ porigin p }
|
||||
remapTxn = mapPostings (map remapPosting)
|
||||
|
Loading…
Reference in New Issue
Block a user