==============================================
   Differences between Beancount and Ledger
==============================================
:Date: 2008-04-23
:Author: Martin Blais <blais@furius.ca>
:Abstract:

  A document that summarizes the differences between the valid syntax
  for Beancount and the syntax of Ledger. 


Introduction
============

Beancount is an accounting system that uses simple text files, whose
syntax is meant to be compatible with John Wiegley's Ledger program.
Beancount supports a subset of the Ledger syntax, but also provides
some additional directives not found in Ledger. This document
summarizes those differences. (This document is meant to be
complementary to the Ledger documentation.)

Some of the unsupported syntax is due to the fact that only a partial
parser for the Ledger syntax was implement, because the intention is
to eventually use the Ledger program as a Python module to do the
parsing, but some of it is there because we felt that some features
were not necessary.


Unsupported Syntax
==================

Beancount...

- does not support expressions.

- does not support the syntax that uses symbols instead of explicit
  commodities, e,g. ``$10.00``. You have to use ``10.00 USD``

- does not infer the format of the output for each commodity

  This is by choice, the definition is ambiguous: if you use two
  different syntaxes, which one is preferred? Instead, Beancount will
  provide a way to "set" the syntax, and will do something reasonable
  with defaults.


About Dates
-----------

All check dates are assumed to be at midnight at the start of the
given day. All transaction dates are assumed to occur something
withint the day. Therefore, when you place an @check directive, you
are asserting this amount at the **beginning** of the day, before any
of the transactions of that day occur.


Features not found in Ledger
============================

FIXME todo


- @pad

    The @pad directive automatically inserts an entry to make the
    assertions that come before and after itself automatically match.
    It is used to fill in for missing data in the file, and is
    typically used to have an opening balances entry automatically
    created for it.

    Here is its format:

        @pad  <DATE>  <ACCOUNT>   <BALANCE-ACCOUNT>



- @check





