# * balance command
# ** 1.
$ hledger -f sample.journal balance --tree
                 $-1  assets
                  $1    bank:saving
                 $-2    cash
                  $2  expenses
                  $1    food
                  $1    supplies
                 $-2  income
                 $-1    gifts
                 $-1    salary
                  $1  liabilities:debts
--------------------
                   0  

# ** 2.
$ hledger -f sample.journal balance --tree o
                  $1  expenses:food
                 $-2  income
                 $-1    gifts
                 $-1    salary
--------------------
                 $-1  

# ** 3. Period reporting works for a specific year
<
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
$ hledger -f - balance -b 2016 -e 2017 -N
             $-40.00  assets:checking
              $50.00  expense:hosting
             $-10.00  revenue:clients:B

# ** 4. Period reporting works for two years
<
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
$ hledger -f - balance --tree -b 2015 -e 2017 -N
           $9,960.00  assets:checking
              $50.00  expense:hosting
         $-10,010.00  revenue:clients
         $-10,000.00    A
             $-10.00    B

# ** 5. Period reporting works for one month
<
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
$ hledger -f - balance --tree -b 2015/11 -e 2015/12 -N
                   0  assets
          $10,000.00    checking
         $-10,000.00    receivables

# ** 6. Period reporting works for one month in another year
<
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
$ hledger -f - balance -b 2016/10 -e 2016/11
--------------------
                   0  

# ** 7. Default CSV output. 
<
2021-01-01 Test
    Assets:ABC   "AB.C" 1
    Assets:Cash       -$1
$ hledger -f - balance -N --output-format=csv
"account","balance"
"Assets:ABC","""AB.C"" 1"
"Assets:Cash","$-1"

# ** 8. CSV output always shows full account names, even in tree mode (#1565).
<
2021-01-01 Test
    Assets:ABC   "AB.C" 1
    Assets:Cash       -$1
$ hledger -f - balance -N --output-format=csv --tree
"account","balance"
"Assets","$-1, ""AB.C"" 1"
"Assets:ABC","""AB.C"" 1"
"Assets:Cash","$-1"

# ** 9. CSV output always does not show thousands separators
<
2021-01-01 Test
    Assets:ABC    $10 000.00
    Assets:Cash  -$10 000.00
$ hledger -f - balance -N --output-format=csv
"account","balance"
"Assets:ABC","$10000.00"
"Assets:Cash","$-10000.00"

# ** 10. --declared includes all declared leaf accounts, even if they have no postings.
# They are filtered, depth-clipped, and form trees like the others.
# (XXX Here a:ac is not declared and so not shown, even though normally a balance report clipped to depth 2 would show it. Wrong ?)
<
account a
account a:aa
account a:ab
account a:ac:aca
account b
$ hledger -f - balance -NE --declared --tree --depth 2 a
                   0  a
                   0    aa
                   0    ab

# ** 11. In list mode we can see that non-leaf declared accounts are excluded.
<
account a
account a:aa
account a:ab
account a:ac:aca
account b
$ hledger -f - balance -NE --declared --flat
                   0  a:aa
                   0  a:ab
                   0  a:ac:aca
                   0  b

# ** 12. not:ACCT queries work with declared accounts.
<
account a
account a:aa
account a:ab
account a:ac:aca
account b
$ hledger -f - balance -NE --declared not:a
                   0  b

# ** 13. An empty periodic report in HTML output does not break.
<
$ hledger -f- bal -M -O html
> //

# ** 14. An empty totals column in HTML output does not break (#1933).
<
$ hledger -f- bal -MT -O html
> //

# ** 15. --count counts postings.
<
2023-01-01
  a      10
  a:aa   20
  b
$ hledger -f- bal --count -1
                   2  a
                   1  b
--------------------
                   3  
