<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Hledger.Data.Transaction</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[ window.onload = function () {pageLoad();setSynopsis("mini_Hledger-Data-Transaction.html");}; //]]> </script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/Hledger-Data-Transaction.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">hledger-lib-0.14: Reusable types and utilities for the hledger accounting tool and financial apps in general.</p></div><div id="content"><div id="module-header"><p class="caption">Hledger.Data.Transaction</p></div><div id="description"><p class="caption">Description</p><div class="doc"><p>A <code><a href="Hledger-Data-Types.html#t:Transaction">Transaction</a></code> consists of two or more related <code><a href="Hledger-Data-Types.html#t:Posting">Posting</a></code>s which balance to zero, representing a movement of some commodity(ies) between accounts, plus a date and optional metadata like description and cleared status. </p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><a href="#v:nulltransaction">nulltransaction</a> :: <a href="Hledger-Data-Types.html#t:Transaction">Transaction</a></li><li class="src short"><a href="#v:showTransaction">showTransaction</a> :: <a href="Hledger-Data-Types.html#t:Transaction">Transaction</a> -> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Char.html#t:String">String</a></li><li class="src short"><a href="#v:showTransactionUnelided">showTransactionUnelided</a> :: <a href="Hledger-Data-Types.html#t:Transaction">Transaction</a> -> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Char.html#t:String">String</a></li><li class="src short"><a href="#v:showTransactionForPrint">showTransactionForPrint</a> :: <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Bool.html#t:Bool">Bool</a> -> <a href="Hledger-Data-Types.html#t:Transaction">Transaction</a> -> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Char.html#t:String">String</a></li><li class="src short"><a href="#v:showTransaction-39-">showTransaction'</a> :: <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Bool.html#t:Bool">Bool</a> -> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Bool.html#t:Bool">Bool</a> -> <a href="Hledger-Data-Types.html#t:Transaction">Transaction</a> -> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Char.html#t:String">String</a></li><li class="src short"><a href="#v:showAccountName">showAccountName</a> :: <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Int.html#t:Int">Int</a> -> <a href="Hledger-Data-Types.html#t:PostingType">PostingType</a> -> <a href="Hledger-Data-Types.html#t:AccountName">AccountName</a> -> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Char.html#t:String">String</a></li><li class="src short"><a href="#v:realPostings">realPostings</a> :: <a href="Hledger-Data-Types.html#t:Transaction">Transaction</a> -> [<a href="Hledger-Data-Types.html#t:Posting">Posting</a>]</li><li class="src short"><a href="#v:virtualPostings">virtualPostings</a> :: <a href="Hledger-Data-Types.html#t:Transaction">Transaction</a> -> [<a href="Hledger-Data-Types.html#t:Posting">Posting</a>]</li><li class="src short"><a href="#v:balancedVirtualPostings">balancedVirtualPostings</a> :: <a href="Hledger-Data-Types.html#t:Transaction">Transaction</a> -> [<a href="Hledger-Data-Types.html#t:Posting">Posting</a>]</li><li class="src short"><a href="#v:transactionPostingBalances">transactionPostingBalances</a> :: <a href="Hledger-Data-Types.html#t:Transaction">Transaction</a> -> (<a href="Hledger-Data-Types.html#t:MixedAmount">MixedAmount</a>, <a href="Hledger-Data-Types.html#t:MixedAmount">MixedAmount</a>, <a href="Hledger-Data-Types.html#t:MixedAmount">MixedAmount</a>)</li><li class="src short"><a href="#v:isTransactionBalanced">isTransactionBalanced</a> :: <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="/usr/share/doc/ghc/html/libraries/containers-0.4.0.0/Data-Map.html#t:Map">Map</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Char.html#t:String">String</a> <a href="Hledger-Data-Types.html#t:Commodity">Commodity</a>) -> <a href="Hledger-Data-Types.html#t:Transaction">Transaction</a> -> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Bool.html#t:Bool">Bool</a></li><li class="src short"><a href="#v:balanceTransaction">balanceTransaction</a> :: <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="/usr/share/doc/ghc/html/libraries/containers-0.4.0.0/Data-Map.html#t:Map">Map</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Char.html#t:String">String</a> <a href="Hledger-Data-Types.html#t:Commodity">Commodity</a>) -> <a href="Hledger-Data-Types.html#t:Transaction">Transaction</a> -> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Either.html#t:Either">Either</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Char.html#t:String">String</a> <a href="Hledger-Data-Types.html#t:Transaction">Transaction</a></li><li class="src short"><a href="#v:nonzerobalanceerror">nonzerobalanceerror</a> :: <a href="Hledger-Data-Types.html#t:Transaction">Transaction</a> -> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Char.html#t:String">String</a></li><li class="src short"><a href="#v:journalTransactionWithDate">journalTransactionWithDate</a> :: <a href="Hledger-Data-Types.html#t:WhichDate">WhichDate</a> -> <a href="Hledger-Data-Types.html#t:Transaction">Transaction</a> -> <a href="Hledger-Data-Types.html#t:Transaction">Transaction</a></li><li class="src short"><a href="#v:txnTieKnot">txnTieKnot</a> :: <a href="Hledger-Data-Types.html#t:Transaction">Transaction</a> -> <a href="Hledger-Data-Types.html#t:Transaction">Transaction</a></li><li class="src short"><a href="#v:settxn">settxn</a> :: <a href="Hledger-Data-Types.html#t:Transaction">Transaction</a> -> <a href="Hledger-Data-Types.html#t:Posting">Posting</a> -> <a href="Hledger-Data-Types.html#t:Posting">Posting</a></li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><a name="v:nulltransaction" class="def">nulltransaction</a> :: <a href="Hledger-Data-Types.html#t:Transaction">Transaction</a><a href="src/Hledger-Data-Transaction.html#nulltransaction" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:showTransaction" class="def">showTransaction</a> :: <a href="Hledger-Data-Types.html#t:Transaction">Transaction</a> -> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Char.html#t:String">String</a><a href="src/Hledger-Data-Transaction.html#showTransaction" class="link">Source</a></p><div class="doc"><p>Show a journal transaction, formatted for the print command. ledger 2.x's standard format looks like this: </p><pre> yyyy<em>mm</em>dd[ *][ CODE] description......... [ ; comment...............] account name 1..................... ...$amount1[ ; comment...............] account name 2..................... ..$-amount1[ ; comment...............] pcodewidth = no limit -- 10 -- mimicking ledger layout. pdescwidth = no limit -- 20 -- I don't remember what these mean, pacctwidth = 35 minimum, no maximum -- they were important at the time. pamtwidth = 11 pcommentwidth = no limit -- 22 </pre></div></div><div class="top"><p class="src"><a name="v:showTransactionUnelided" class="def">showTransactionUnelided</a> :: <a href="Hledger-Data-Types.html#t:Transaction">Transaction</a> -> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Char.html#t:String">String</a><a href="src/Hledger-Data-Transaction.html#showTransactionUnelided" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:showTransactionForPrint" class="def">showTransactionForPrint</a> :: <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Bool.html#t:Bool">Bool</a> -> <a href="Hledger-Data-Types.html#t:Transaction">Transaction</a> -> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Char.html#t:String">String</a><a href="src/Hledger-Data-Transaction.html#showTransactionForPrint" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:showTransaction-39-" class="def">showTransaction'</a> :: <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Bool.html#t:Bool">Bool</a> -> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Bool.html#t:Bool">Bool</a> -> <a href="Hledger-Data-Types.html#t:Transaction">Transaction</a> -> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Char.html#t:String">String</a><a href="src/Hledger-Data-Transaction.html#showTransaction%27" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:showAccountName" class="def">showAccountName</a> :: <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Maybe.html#t:Maybe">Maybe</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Int.html#t:Int">Int</a> -> <a href="Hledger-Data-Types.html#t:PostingType">PostingType</a> -> <a href="Hledger-Data-Types.html#t:AccountName">AccountName</a> -> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Char.html#t:String">String</a><a href="src/Hledger-Data-Transaction.html#showAccountName" class="link">Source</a></p><div class="doc"><p>Show an account name, clipped to the given width if any, and appropriately bracketed/parenthesised for the given posting type. </p></div></div><div class="top"><p class="src"><a name="v:realPostings" class="def">realPostings</a> :: <a href="Hledger-Data-Types.html#t:Transaction">Transaction</a> -> [<a href="Hledger-Data-Types.html#t:Posting">Posting</a>]<a href="src/Hledger-Data-Transaction.html#realPostings" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:virtualPostings" class="def">virtualPostings</a> :: <a href="Hledger-Data-Types.html#t:Transaction">Transaction</a> -> [<a href="Hledger-Data-Types.html#t:Posting">Posting</a>]<a href="src/Hledger-Data-Transaction.html#virtualPostings" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:balancedVirtualPostings" class="def">balancedVirtualPostings</a> :: <a href="Hledger-Data-Types.html#t:Transaction">Transaction</a> -> [<a href="Hledger-Data-Types.html#t:Posting">Posting</a>]<a href="src/Hledger-Data-Transaction.html#balancedVirtualPostings" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:transactionPostingBalances" class="def">transactionPostingBalances</a> :: <a href="Hledger-Data-Types.html#t:Transaction">Transaction</a> -> (<a href="Hledger-Data-Types.html#t:MixedAmount">MixedAmount</a>, <a href="Hledger-Data-Types.html#t:MixedAmount">MixedAmount</a>, <a href="Hledger-Data-Types.html#t:MixedAmount">MixedAmount</a>)<a href="src/Hledger-Data-Transaction.html#transactionPostingBalances" class="link">Source</a></p><div class="doc"><p>Get the sums of a transaction's real, virtual, and balanced virtual postings. </p></div></div><div class="top"><p class="src"><a name="v:isTransactionBalanced" class="def">isTransactionBalanced</a> :: <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="/usr/share/doc/ghc/html/libraries/containers-0.4.0.0/Data-Map.html#t:Map">Map</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Char.html#t:String">String</a> <a href="Hledger-Data-Types.html#t:Commodity">Commodity</a>) -> <a href="Hledger-Data-Types.html#t:Transaction">Transaction</a> -> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Bool.html#t:Bool">Bool</a><a href="src/Hledger-Data-Transaction.html#isTransactionBalanced" class="link">Source</a></p><div class="doc"><p>Is this transaction balanced ? A balanced transaction's real (non-virtual) postings sum to 0, and any balanced virtual postings also sum to 0. </p></div></div><div class="top"><p class="src"><a name="v:balanceTransaction" class="def">balanceTransaction</a> :: <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Maybe.html#t:Maybe">Maybe</a> (<a href="/usr/share/doc/ghc/html/libraries/containers-0.4.0.0/Data-Map.html#t:Map">Map</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Char.html#t:String">String</a> <a href="Hledger-Data-Types.html#t:Commodity">Commodity</a>) -> <a href="Hledger-Data-Types.html#t:Transaction">Transaction</a> -> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Either.html#t:Either">Either</a> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Char.html#t:String">String</a> <a href="Hledger-Data-Types.html#t:Transaction">Transaction</a><a href="src/Hledger-Data-Transaction.html#balanceTransaction" class="link">Source</a></p><div class="doc"><p>Ensure this transaction is balanced, possibly inferring a missing amount or a conversion price first, or return an error message. </p><p>Balancing is affected by the provided commodities' display precisions. </p><p>We can infer an amount when there are multiple real postings and exactly one of them is amountless; likewise for balanced virtual postings. Inferred amounts are converted to cost basis when possible. </p><p>We can infer a price when all amounts were specified and the sum of real postings' amounts is exactly two non-explicitly-priced amounts in different commodities; likewise for balanced virtual postings. </p></div></div><div class="top"><p class="src"><a name="v:nonzerobalanceerror" class="def">nonzerobalanceerror</a> :: <a href="Hledger-Data-Types.html#t:Transaction">Transaction</a> -> <a href="/usr/share/doc/ghc/html/libraries/base-4.3.1.0/Data-Char.html#t:String">String</a><a href="src/Hledger-Data-Transaction.html#nonzerobalanceerror" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:journalTransactionWithDate" class="def">journalTransactionWithDate</a> :: <a href="Hledger-Data-Types.html#t:WhichDate">WhichDate</a> -> <a href="Hledger-Data-Types.html#t:Transaction">Transaction</a> -> <a href="Hledger-Data-Types.html#t:Transaction">Transaction</a><a href="src/Hledger-Data-Transaction.html#journalTransactionWithDate" class="link">Source</a></p><div class="doc"><p>Convert the primary date to either the actual or effective date. </p></div></div><div class="top"><p class="src"><a name="v:txnTieKnot" class="def">txnTieKnot</a> :: <a href="Hledger-Data-Types.html#t:Transaction">Transaction</a> -> <a href="Hledger-Data-Types.html#t:Transaction">Transaction</a><a href="src/Hledger-Data-Transaction.html#txnTieKnot" class="link">Source</a></p><div class="doc"><p>Ensure a transaction's postings refer back to it. </p></div></div><div class="top"><p class="src"><a name="v:settxn" class="def">settxn</a> :: <a href="Hledger-Data-Types.html#t:Transaction">Transaction</a> -> <a href="Hledger-Data-Types.html#t:Posting">Posting</a> -> <a href="Hledger-Data-Types.html#t:Posting">Posting</a><a href="src/Hledger-Data-Transaction.html#settxn" class="link">Source</a></p><div class="doc"><p>Set a posting's parent transaction. </p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.9.2</p></div></body></html>