hledger/tests/incomestatement.test
Michael Kainer 79ca4a767e cli: Add -% to compound balance commands
This commit introduces the commandline argument -%/--percent to show
percentages of the column's total instead of the absolute amounts for
each account in reports. The signs of the values are preserved.

This option is especially useful for the balance and incomestatement
commands.

If there are multiple commodities involved in a report hledger bails
with an error message. This can be avoided by using --cost. Also note
that if one uses -% with the balance command the chances are high that
all numbers are 0. This is due to the fact that by default balance sums
up to zero. If one wants to use -% in a meaningful way with balance one
has to add a query.

In order to keep the implementation as simple as possible --tree has no
influence over how the percentages are calculated, i.e., the percentages
always represent the fraction of the columns total. If one wants to know
the percentages relative to a parent account, one has to use a query to
narrow down the accounts.
2019-11-18 17:10:59 -08:00

309 lines
16 KiB
Plaintext

# 1. Simple statement works
hledger -f - incomestatement
<<<
2016/1/1
income 1
b
>>>
Income Statement 2016/01/01
|| 2016/01/01
==========++============
Revenues ||
----------++------------
income || -1
----------++------------
|| -1
==========++============
Expenses ||
----------++------------
----------++------------
||
==========++============
Net: || -1
>>>2
>>>= 0
# 2. Period reporting works for a specific year
hledger -f - incomestatement -b 2016 -e 2017
<<<
2015/10/10 Client A | Invoice #1
assets:receivables $10,000.00
revenue:clients:A -$10,000.00
2015/11/02 Deposit | Invoice #1
assets:checking $10,000.00
assets:receivables -$10,000.00
2016/02/01 Client B | Invoice #2
assets:receivables $10.00
revenue:clients:B -$10.00
2016/02/15 ACME | Hosting Costs
expense:hosting $50.00
assets:checking -$50.00
2016/03/01 Deposit | Invoice #2
assets:checking $10.00
assets:receivables -$10.00
>>>
Income Statement 2016
|| 2016
===================++=========
Revenues ||
-------------------++---------
revenue:clients:B || $10.00
-------------------++---------
|| $10.00
===================++=========
Expenses ||
-------------------++---------
expense:hosting || $50.00
-------------------++---------
|| $50.00
===================++=========
Net: || $-40.00
>>>2
>>>= 0
# 3. Period reporting works for two years
hledger -f - incomestatement -b 2015 -e 2017
<<<
2015/10/10 Client A | Invoice #1
assets:receivables $10,000.00
revenue:clients:A -$10,000.00
2015/11/02 Deposit | Invoice #1
assets:checking $10,000.00
assets:receivables -$10,000.00
2016/02/01 Client B | Invoice #2
assets:receivables $10.00
revenue:clients:B -$10.00
2016/02/15 ACME | Hosting Costs
expense:hosting $50.00
assets:checking -$50.00
2016/03/01 Deposit | Invoice #2
assets:checking $10.00
assets:receivables -$10.00
>>>
Income Statement 2015/01/01-2016/12/31
|| 2015/01/01-2016/12/31
===================++=======================
Revenues ||
-------------------++-----------------------
revenue:clients:A || $10,000.00
revenue:clients:B || $10.00
-------------------++-----------------------
|| $10,010.00
===================++=======================
Expenses ||
-------------------++-----------------------
expense:hosting || $50.00
-------------------++-----------------------
|| $50.00
===================++=======================
Net: || $9,960.00
>>>2
>>>= 0
# 4. Period reporting works for one month
hledger -f - incomestatement -b 2015/10 -e 2015/11
<<<
2015/10/10 Client A | Invoice #1
assets:receivables $10,000.00
revenue:clients:A -$10,000.00
2015/11/02 Deposit | Invoice #1
assets:checking $10,000.00
assets:receivables -$10,000.00
2016/02/01 Client B | Invoice #2
assets:receivables $10.00
revenue:clients:B -$10.00
2016/02/15 ACME | Hosting Costs
expense:hosting $50.00
assets:checking -$50.00
2016/03/01 Deposit | Invoice #2
assets:checking $10.00
assets:receivables -$10.00
>>>
Income Statement 2015/10
|| Oct
===================++============
Revenues ||
-------------------++------------
revenue:clients:A || $10,000.00
-------------------++------------
|| $10,000.00
===================++============
Expenses ||
-------------------++------------
-------------------++------------
||
===================++============
Net: || $10,000.00
>>>2
>>>= 0
# 5. Period reporting works for one month in another year
hledger -f - incomestatement -b 2016/10 -e 2016/11
<<<
2015/10/10 Client A | Invoice #1
assets:receivables $10,000.00
revenue:clients:A -$10,000.00
2015/11/02 Deposit | Invoice #1
assets:checking $10,000.00
assets:receivables -$10,000.00
2016/02/01 Client B | Invoice #2
assets:receivables $10.00
revenue:clients:B -$10.00
2016/02/15 ACME | Hosting Costs
expense:hosting $50.00
assets:checking -$50.00
2016/03/01 Deposit | Invoice #2
assets:checking $10.00
assets:receivables -$10.00
>>>
Income Statement 2016/10
|| Oct
==========++=====
Revenues ||
----------++-----
----------++-----
|| 0
==========++=====
Expenses ||
----------++-----
----------++-----
|| 0
==========++=====
Net: || 0
>>>2
>>>= 0
# 6. Multicolumn test
# old (arithmetic sign):
# Income Statement
#
# || 2008/01 2008/02 2008/03 2008/04 2008/05 2008/06 2008/07 2008/08 2008/09 2008/10 2008/11 2008/12 Total Average
# ===================++==============================================================================================================================
# Revenues ||
# -------------------++------------------------------------------------------------------------------------------------------------------------------
# income:gifts || 0 0 0 0 0 $-1 0 0 0 0 0 0 $-1 0
# income:salary || $-1 0 0 0 0 0 0 0 0 0 0 0 $-1 0
# -------------------++------------------------------------------------------------------------------------------------------------------------------
# || $-1 0 0 0 0 $-1 0 0 0 0 0 0 $-2 0
# ===================++==============================================================================================================================
# Expenses ||
# -------------------++------------------------------------------------------------------------------------------------------------------------------
# expenses:food || 0 0 0 0 0 $1 0 0 0 0 0 0 $1 0
# expenses:supplies || 0 0 0 0 0 $1 0 0 0 0 0 0 $1 0
# -------------------++------------------------------------------------------------------------------------------------------------------------------
# || 0 0 0 0 0 $2 0 0 0 0 0 0 $2 0
# ===================++==============================================================================================================================
# Total || $-1 0 0 0 0 $1 0 0 0 0 0 0 0 0
#
hledger -f sample.journal incomestatement -p 'monthly in 2008' -AT
>>>
Income Statement 2008
|| Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec Total Average
===================++==============================================================================
Revenues ||
-------------------++------------------------------------------------------------------------------
income:gifts || 0 0 0 0 0 $1 0 0 0 0 0 0 $1 0
income:salary || $1 0 0 0 0 0 0 0 0 0 0 0 $1 0
-------------------++------------------------------------------------------------------------------
|| $1 0 0 0 0 $1 0 0 0 0 0 0 $2 0
===================++==============================================================================
Expenses ||
-------------------++------------------------------------------------------------------------------
expenses:food || 0 0 0 0 0 $1 0 0 0 0 0 0 $1 0
expenses:supplies || 0 0 0 0 0 $1 0 0 0 0 0 0 $1 0
-------------------++------------------------------------------------------------------------------
|| 0 0 0 0 0 $2 0 0 0 0 0 0 $2 0
===================++==============================================================================
Net: || $1 0 0 0 0 $-1 0 0 0 0 0 0 0 0
>>>= 0
# 7. Multicolumn test (historical)
# old (arithmetic sign):
# Income Statement (Historical Ending Balances)
#
# || 2008/01/31 2008/02/29 2008/03/31 2008/04/30 2008/05/31 2008/06/30 2008/07/31 2008/08/31 2008/09/30 2008/10/31 2008/11/30 2008/12/31
# ===================++================================================================================================================================================
# Revenues ||
# -------------------++------------------------------------------------------------------------------------------------------------------------------------------------
# income:gifts || 0 0 0 0 0 $-1 $-1 $-1 $-1 $-1 $-1 $-1
# income:salary || $-1 $-1 $-1 $-1 $-1 $-1 $-1 $-1 $-1 $-1 $-1 $-1
# -------------------++------------------------------------------------------------------------------------------------------------------------------------------------
# || $-1 $-1 $-1 $-1 $-1 $-2 $-2 $-2 $-2 $-2 $-2 $-2
# ===================++================================================================================================================================================
# Expenses ||
# -------------------++------------------------------------------------------------------------------------------------------------------------------------------------
# expenses:food || 0 0 0 0 0 $1 $1 $1 $1 $1 $1 $1
# expenses:supplies || 0 0 0 0 0 $1 $1 $1 $1 $1 $1 $1
# -------------------++------------------------------------------------------------------------------------------------------------------------------------------------
# || 0 0 0 0 0 $2 $2 $2 $2 $2 $2 $2
# ===================++================================================================================================================================================
# Total || $-1 $-1 $-1 $-1 $-1 0 0 0 0 0 0 0
#
hledger -f sample.journal incomestatement -p 'monthly in 2008' --historical
>>>
Income Statement 2008/01/31,,2008/12/31 (Historical Ending Balances)
|| 2008/01/31 2008/02/29 2008/03/31 2008/04/30 2008/05/31 2008/06/30 2008/07/31 2008/08/31 2008/09/30 2008/10/31 2008/11/30 2008/12/31
===================++================================================================================================================================================
Revenues ||
-------------------++------------------------------------------------------------------------------------------------------------------------------------------------
income:gifts || 0 0 0 0 0 $1 $1 $1 $1 $1 $1 $1
income:salary || $1 $1 $1 $1 $1 $1 $1 $1 $1 $1 $1 $1
-------------------++------------------------------------------------------------------------------------------------------------------------------------------------
|| $1 $1 $1 $1 $1 $2 $2 $2 $2 $2 $2 $2
===================++================================================================================================================================================
Expenses ||
-------------------++------------------------------------------------------------------------------------------------------------------------------------------------
expenses:food || 0 0 0 0 0 $1 $1 $1 $1 $1 $1 $1
expenses:supplies || 0 0 0 0 0 $1 $1 $1 $1 $1 $1 $1
-------------------++------------------------------------------------------------------------------------------------------------------------------------------------
|| 0 0 0 0 0 $2 $2 $2 $2 $2 $2 $2
===================++================================================================================================================================================
Net: || $1 $1 $1 $1 $1 0 0 0 0 0 0 0
>>>= 0
# 8. Percentage test
hledger -f sample.journal incomestatement -p 'quarterly 2008' -T --average -%
>>>
Income Statement 2008
|| 2008q1 2008q2 2008q3 2008q4 Total Average
===================++====================================================
Revenues ||
-------------------++----------------------------------------------------
income:gifts || 0 100.0 % 0 0 50.0 % 50.0 %
income:salary || 100.0 % 0 0 0 50.0 % 50.0 %
-------------------++----------------------------------------------------
|| 100.0 % 100.0 % 0 0 100.0 % 100.0 %
===================++====================================================
Expenses ||
-------------------++----------------------------------------------------
expenses:food || 0 50.0 % 0 0 50.0 % 50.0 %
expenses:supplies || 0 50.0 % 0 0 50.0 % 50.0 %
-------------------++----------------------------------------------------
|| 0 100.0 % 0 0 100.0 % 100.0 %
>>>= 0