lib: transaction, [v]post*, balassert* constructors, for tests etc.
This commit is contained in:
		
							parent
							
								
									115643a024
								
							
						
					
					
						commit
						ca565795ad
					
				| @ -15,9 +15,16 @@ module Hledger.Data.Posting ( | ||||
|   nullposting, | ||||
|   posting, | ||||
|   post, | ||||
|   vpost, | ||||
|   post', | ||||
|   vpost', | ||||
|   nullsourcepos, | ||||
|   nullassertion, | ||||
|   assertion, | ||||
|   balassert, | ||||
|   balassertTot, | ||||
|   balassertParInc, | ||||
|   balassertTotInc, | ||||
|   -- * operations | ||||
|   originalPosting, | ||||
|   postingStatus, | ||||
| @ -95,8 +102,23 @@ nullposting = Posting | ||||
|                 } | ||||
| posting = nullposting | ||||
| 
 | ||||
| -- constructors | ||||
| 
 | ||||
| -- | Make a posting to an account. | ||||
| post :: AccountName -> Amount -> Posting | ||||
| post acct amt = posting {paccount=acct, pamount=Mixed [amt]} | ||||
| post acc amt = posting {paccount=acc, pamount=Mixed [amt]} | ||||
| 
 | ||||
| -- | Make a virtual (unbalanced) posting to an account. | ||||
| vpost :: AccountName -> Amount -> Posting | ||||
| vpost acc amt = (post acc amt){ptype=VirtualPosting} | ||||
| 
 | ||||
| -- | Make a posting to an account, maybe with a balance assertion. | ||||
| post' :: AccountName -> Amount -> Maybe BalanceAssertion -> Posting | ||||
| post' acc amt ass = posting {paccount=acc, pamount=Mixed [amt], pbalanceassertion=ass} | ||||
| 
 | ||||
| -- | Make a virtual (unbalanced) posting to an account, maybe with a balance assertion. | ||||
| vpost' :: AccountName -> Amount -> Maybe BalanceAssertion -> Posting | ||||
| vpost' acc amt ass = (post' acc amt ass){ptype=VirtualPosting, pbalanceassertion=ass} | ||||
| 
 | ||||
| nullsourcepos :: GenericSourcePos | ||||
| nullsourcepos = JournalSourcePos "" (1,1) | ||||
| @ -110,6 +132,22 @@ nullassertion = BalanceAssertion | ||||
|                   } | ||||
| assertion = nullassertion | ||||
| 
 | ||||
| -- | Make a partial, exclusive balance assertion. | ||||
| balassert :: Amount -> Maybe BalanceAssertion | ||||
| balassert amt = Just $ nullassertion{baamount=amt} | ||||
| 
 | ||||
| -- | Make a total, exclusive balance assertion. | ||||
| balassertTot :: Amount -> Maybe BalanceAssertion | ||||
| balassertTot amt = Just $ nullassertion{baamount=amt, batotal=True} | ||||
| 
 | ||||
| -- | Make a partial, inclusive balance assertion. | ||||
| balassertParInc :: Amount -> Maybe BalanceAssertion | ||||
| balassertParInc amt = Just $ nullassertion{baamount=amt, bainclusive=True} | ||||
| 
 | ||||
| -- | Make a total, inclusive balance assertion. | ||||
| balassertTotInc :: Amount -> Maybe BalanceAssertion | ||||
| balassertTotInc amt = Just $ nullassertion{baamount=amt, batotal=True, bainclusive=True} | ||||
| 
 | ||||
| -- Get the original posting, if any. | ||||
| originalPosting :: Posting -> Posting | ||||
| originalPosting p = fromMaybe p $ poriginal p | ||||
|  | ||||
| @ -16,6 +16,7 @@ tags. | ||||
| module Hledger.Data.Transaction ( | ||||
|   -- * Transaction | ||||
|   nulltransaction, | ||||
|   transaction, | ||||
|   txnTieKnot, | ||||
|   txnUntieKnot, | ||||
|   -- * operations | ||||
| @ -95,6 +96,10 @@ nulltransaction = Transaction { | ||||
|                     tprecedingcomment="" | ||||
|                   } | ||||
| 
 | ||||
| -- | Make a simple transaction with the given date and postings. | ||||
| transaction :: String -> [Posting] -> Transaction  | ||||
| transaction datestr ps = txnTieKnot $ nulltransaction{tdate=parsedate datestr, tpostings=ps} | ||||
| 
 | ||||
| {-| | ||||
| Render a journal transaction as text in the style of Ledger's print command.  | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user