summaryrefslogtreecommitdiff
path: root/src/xact.h
Commit message (Collapse)AuthorAgeFilesLines
* Use #pragma onceAlexis Hildebrandt2023-04-101-4/+1
|
* Update copyright yearAlexis Hildebrandt2023-02-021-1/+1
| | | | [skip ci]
* Update copyright statement for 2022Alexis Hildebrandt2022-07-021-1/+1
|
* Change header guard names to use `INCLUDED_` prefixPhil Newton2022-04-061-3/+3
| | | | Fixes #2049
* Fix some boost format stringsTommi Komulainen2019-01-171-3/+3
| | | | | | Fixes: Error: boost::bad_format_string: format-string is ill-formed
* [misc] Update year in copyright notice to 2017Alexis Hildebrandt2018-01-271-1/+1
| | | | [ci skip]
* [misc] Update year in copyright notice to 2017Alexis Hildebrandt2017-01-051-1/+1
| | | | [ci skip]
* [misc] Update year in copyright notice to 2016Alexis Hildebrandt2016-01-021-1/+1
| | | | [ci skip]
* [ledger] Remove --cache optionAlexis Hildebrandt2015-02-181-72/+0
| | | | and all boost serialisation related code.
* Bump copyright notice to 2015Alexis Hildebrandt2014-12-271-1/+1
| | | | | | The following script makes it a no-brainer: % NEXT_YEAR=2015; ag -l 'Copyright.*Wiegley' \ | xargs sed -i '' -e "s/\(Copyright.*\)-20[0-9]\{2\}/\1-${NEXT_YEAR}/"
* Bump copyright information to 2014Alexis Hildebrandt2014-02-021-1/+1
|
* Bump copyright information to 2013John Wiegley2013-02-181-1/+1
|
* Converted the Ledger build system to use CMakeJohn Wiegley2012-05-201-7/+7
|
* Switched to Boost.PropertyTree for XML generationJohn Wiegley2012-05-181-1/+1
|
* Switch to using Boost.FormatJohn Wiegley2012-05-141-3/+3
|
* Add 'data' member to account/journal objectsJohn Wiegley2012-04-131-2/+6
|
* Started work on a "views" report document modelJohn Wiegley2012-04-081-0/+4
|
* Allow serialization to be enabled againJohn Wiegley2012-03-291-0/+15
|
* Fixed parsing of "deferred notes" in auto xactsJohn Wiegley2012-03-071-6/+8
|
* Refactored the notion of "the current parsing context"John Wiegley2012-03-011-1/+2
|
* Increased file copyrights to 2012John Wiegley2012-02-291-1/+1
|
* Implement the "tag" metadata directiveJohn Wiegley2012-02-271-13/+3
|
* The "id" of an item now maps to its UUIDJohn Wiegley2012-02-271-3/+0
|
* Cleanup whitespaceJohn Wiegley2011-08-181-1/+1
|
* Scopes can now provide a description of themselvesJohn Wiegley2010-06-241-0/+30
| | | | | | This isn't being used yet, but it likely will to improve the information presented to users if their value expressions fail to compile or evaluate.
* Revised how Ledger handles the "current year"John Wiegley2010-06-141-4/+2
| | | | | Now when the Y directive sets the current year for a region, it affects everything, as if the clock really were set back to that year.
* Added support for assert, check and expr directivesJohn Wiegley2010-06-131-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | These can occur in many places: ; Within an automated transaction, the assert is evaluated every time ; a posting is matched, with the expression context set to the ; matching posting. = /Food/ assert account("Expenses:Food").total >= $100 2010-06-12 Sample Expenses:Food $100 Assets:Checking ; At file scope, the expression is evaluated with "global" scope. assert account("Expenses:Food").total == $100 ; At the top of a transction, the assertion's scope is the ; transaction. After a posting, the scope is that posting. Note ; however that account totals are only adjusted after successful ; parsing of a transaction, which means that all the assertions below ; are true, even though it appears as though the middle posting should ; affect the total immediately (which is not the case). 2010-06-12 Sample 2 assert account("Expenses:Food").total == $100 Expenses:Food $50 assert account("Expenses:Food").total == $100 Assets:Checking assert account("Expenses:Food").total == $100
* Automated xacts may now contain "deferred tags"John Wiegley2010-06-131-1/+27
| | | | | | | | | | | | | | | | For example, consider the following automated transaction: = /Food/ ; Next Date:: date + 10 (Expenses:Tax) 1.00 ; Next Date:: date + 20 This will add a metadata field named 'Next Date' to the _matching posting_, with a value that is 10 days later than that posting. It will also generate a new posting for that transaction, whose amount is the same as the matching posting. Further, it will add a 'Next Date' metadata tag to the _generated posting_ whose value is 20 days later than the date of the matching posting.
* Untabified all source filesJohn Wiegley2010-06-111-4/+4
|
* Updated copyrights to 2003-2010John Wiegley2010-03-051-1/+1
|
* Memoize results from the fast predicate matcherJohn Wiegley2009-11-141-0/+2
| | | | | This gains another 15% for the parser, again with a very simple change that has no impact if the fast predicate matcher fails to work.
* Spot optimization for simple automated xact exprsJohn Wiegley2009-11-141-3/+5
| | | | | | This reduces parsing time in the optimized build by 25%, and was a safe, easy patch. If the "quick predicate evaluator" fails, we disable it from that point on go back to what the standard code does.
* Added has_xdata() methods for journal_t and xact_tJohn Wiegley2009-11-121-0/+1
|
* Transactions now verified after applying auto xactsJohn Wiegley2009-11-111-1/+2
| | | | | This way you cannot violate the balancing rules, not even by adding a stray posting via an automated transaction.
* Did away with the "finalizer" abstractionJohn Wiegley2009-11-111-70/+0
| | | | | This was from an earlier time, when it was intended to be used by Python. But it's not needed anymore.
* Automated postings defer amount expression calculationJohn Wiegley2009-11-111-9/+9
| | | | | | | | | | | | | | | | | This allows for value expressions to be used which reference the incoming posting, for example: = Income:Clients: (Liabilities:Taxes:VAT1) (floor(amount) * 1) (Liabilities:Taxes:VAT2) 0.19 2009/07/27 * Invoice Assets:Bank:Checking $1,190.45 Income:Clients:ACME_Inc The automated posting for VAT1 will use the floored amount multiplied by a factor, while the posting for VAT2 multiples the whole amount as before.
* XML reporting now works via the "xml" commandJohn Wiegley2009-11-091-0/+2
|
* Redesigned the expr_t, predicate_t, query_t classesJohn Wiegley2009-11-091-3/+3
|
* Removed a bunch of empty commentsJohn Wiegley2009-11-081-39/+0
|
* Report sought magnitude when balancing errors occurJohn Wiegley2009-11-051-1/+2
|
* Moved xdata clearing code into each type properJohn Wiegley2009-11-051-0/+3
|
* Transactions, etc., are now accessed by iteratorsJohn Wiegley2009-11-051-0/+7
|
* Segregated symbols into 5 separate namespacesJohn Wiegley2009-11-041-1/+2
| | | | | | | | | | | | | | | | | | | | | The different namespaces are: Function Value expression functions, which receive a "context" Option Command-line options Precommand Commands which are invoked before reading the journal Command Commands which are invoked after reading the journal Directive Directives that occur at column 0 in a data file This greatly eases the ability for Python uses to add intercept hooks to change how the basic Ledger module functions. An example of what should be possible soon: import ledger def my_foo_handler(value): print "--foo received:", value ledger.add_handler(ledger.Option, "foo=", my_foo_handler)
* Whitespace fixJohn Wiegley2009-11-041-5/+5
|
* Whitespace fixesJohn Wiegley2009-11-011-1/+0
|
* Fix to xact_t::valid()John Wiegley2009-11-011-12/+3
|
* Removed most #if 0 blocks and callout commentsJohn Wiegley2009-10-311-2/+0
|
* Added serialization methods for most typeJohn Wiegley2009-10-301-0/+67
| | | | | This allows journal_t objects to be completed serialized to disk and deserialized.
* Removed erroneous throw specifier from period_xact_tJohn Wiegley2009-10-301-1/+1
|
* Made the id function available in post contextsJohn Wiegley2009-10-271-0/+4
|