bal: --budget: don't always convert to cost

And don't show a percentage when budgeted and actual amounts are in
different commodities.
This commit is contained in:
Simon Michael 2019-05-23 13:27:37 -07:00
parent 2355da0f93
commit adbce22152
2 changed files with 10 additions and 10 deletions

View File

@ -308,19 +308,19 @@ budgetReportAsText ropts@ReportOpts{..} budgetr@(PeriodicReport ( _, rows, _)) =
(showbudgetamt budget)
-- | Calculate the percentage of actual change to budget goal to show, if any.
-- Both amounts are converted to cost, if possible, before comparing.
-- If valuing at cost, both amounts are converted to cost before comparing.
-- A percentage will not be shown if:
-- - actual or goal are not the same, single, commodity
-- - the goal is zero
percentage :: Change -> BudgetGoal -> Maybe Percentage
percentage actual budget =
case (toCost actual, toCost budget) of
case (maybecost $ normaliseMixedAmount actual, maybecost $ normaliseMixedAmount budget) of
(Mixed [a], Mixed [b]) | (acommodity a == acommodity b || isZeroAmount a) && not (isZeroAmount b)
-> Just $ 100 * aquantity a / aquantity b
_ -> Nothing
_ -> -- trace (pshow $ (maybecost actual, maybecost budget)) -- debug missing percentage
Nothing
where
toCost = normaliseMixedAmount . costOfMixedAmount
maybecost = if valuationTypeIsCost ropts then costOfMixedAmount else id
showamt :: MixedAmount -> String
showamt | color_ = cshowMixedAmountOneLineWithoutPrice
| otherwise = showMixedAmountOneLineWithoutPrice

View File

@ -31,7 +31,7 @@
# 1. Test --budget switch
$ hledger bal -D -b 2016-12-01 -e 2016-12-04 -f - --budget
$ hledger -f- bal -D -b 2016-12-01 -e 2016-12-04 --budget
Budget performance in 2016/12/01-2016/12/03:
|| 2016/12/01 2016/12/02 2016/12/03
@ -45,7 +45,7 @@ Budget performance in 2016/12/01-2016/12/03:
|| 0 [ 0] 0 [ 0] 0 [ 0]
# 2. -E
$ hledger bal -D -b 2016-12-01 -e 2016-12-04 -f - --budget -E
$ hledger -f- bal -D -b 2016-12-01 -e 2016-12-04 --budget -E
Budget performance in 2016/12/01-2016/12/03:
|| 2016/12/01 2016/12/02 2016/12/03
@ -95,15 +95,15 @@ Budget performance in 2016/12/01-2016/12/03:
expenses:leisure $15
assets:cash
$ hledger bal -D -b 2016-12-01 -e 2016-12-04 -f - --budget
$ hledger -f- bal -D -b 2016-12-01 -e 2016-12-04 --budget
Budget performance in 2016/12/01-2016/12/03:
|| 2016/12/01 2016/12/02 2016/12/03
==================++======================================================================================
assets || $-15 [ 60% of $-25] $-26 [ 104% of $-25] $-51 [ 204% of $-25]
assets:cash || $-15 [ 60% of $-25] $-26 [ 104% of $-25] $-51 [ 204% of $-25]
expenses || £10 [ 60% of $25] $5, 20 CAD [ 104% of $25] $51 [ 204% of $25]
expenses:food || £10 [ 150% of $10] 20 CAD [ 210% of $10] $11 [ 110% of $10]
expenses || £10 [ $25] $5, 20 CAD [ $25] $51 [ 204% of $25]
expenses:food || £10 [ $10] 20 CAD [ $10] $11 [ 110% of $10]
expenses:leisure || 0 [ 0% of $15] $5 [ 33% of $15] 0 [ 0% of $15]
------------------++--------------------------------------------------------------------------------------
|| $-15, £10 [ 0] $-21, 20 CAD [ 0] 0 [ 0]