fix: print: auto: The print command should always display inferred
amounts for --auto generated postings. (#1276)
This commit is contained in:
		
							parent
							
								
									4006ab6d2d
								
							
						
					
					
						commit
						9d5397deb6
					
				| @ -15,17 +15,17 @@ module Hledger.Cli.Commands.Print ( | ||||
| ) | ||||
| where | ||||
| 
 | ||||
| import Data.Maybe (isJust) | ||||
| import Data.Text (Text) | ||||
| import Data.List (intersperse) | ||||
| import qualified Data.Text as T | ||||
| import qualified Data.Text.IO as T | ||||
| import qualified Data.Text.Lazy as TL | ||||
| import qualified Data.Text.Lazy.Builder as TB | ||||
| import Lens.Micro (_Just, has) | ||||
| import System.Console.CmdArgs.Explicit | ||||
| import Hledger.Read.CsvReader (CSV, printCSV) | ||||
| 
 | ||||
| import Hledger | ||||
| import Hledger.Read.CsvReader (CSV, printCSV) | ||||
| import Hledger.Cli.CliOptions | ||||
| import Hledger.Cli.Utils | ||||
| 
 | ||||
| @ -76,21 +76,27 @@ entriesReportAsText opts = TB.toLazyText . foldMap (TB.fromText . showTransactio | ||||
|   where | ||||
|     whichtxn | ||||
|       -- With -x, use the fully-inferred txn with all amounts & txn prices explicit. | ||||
|       | boolopt "explicit" (rawopts_ opts) | ||||
|       | boolopt "explicit" (rawopts_ opts) = id | ||||
|       -- Or also, if any of -B/-V/-X/--value are active. | ||||
|       -- Because of #551, and because of print -V valuing only one | ||||
|       -- posting when there's an implicit txn price. | ||||
|       -- So -B/-V/-X/--value implies -x. Is this ok ? | ||||
|         || (isJust . value_ . _rsReportOpts $ reportspec_ opts) = id | ||||
|       | has (value . _Just) opts = id | ||||
|       -- By default, use the original as-written-in-the-journal txn. | ||||
|       | otherwise = originalTransaction | ||||
| 
 | ||||
| -- Replace this transaction's postings with the original postings if any, but keep the | ||||
| -- current possibly rewritten account names. | ||||
| -- current possibly rewritten account names, and the inferred values of any auto postings | ||||
| originalTransaction t = t { tpostings = map originalPostingPreservingAccount $ tpostings t } | ||||
| 
 | ||||
| -- Get the original posting if any, but keep the current possibly rewritten account name. | ||||
| originalPostingPreservingAccount p = (originalPosting p) { paccount = paccount p } | ||||
| -- Get the original posting if any, but keep the current possibly rewritten account name, and | ||||
| -- the inferred values of any auto postings | ||||
| originalPostingPreservingAccount p = orig | ||||
|     { paccount = paccount p | ||||
|     , pamount = pamount $ if isGenerated then p else orig } | ||||
|   where | ||||
|     orig = originalPosting p | ||||
|     isGenerated = "generated-posting" `elem` map fst (ptags p) | ||||
| 
 | ||||
| -- XXX | ||||
| -- tests_showTransactions = [ | ||||
|  | ||||
| @ -112,3 +112,23 @@ hledger -f - print --explicit | ||||
| 
 | ||||
| >>>2 | ||||
| >>>=0 | ||||
| 
 | ||||
| # 9. Auto postings are always explicit | ||||
| hledger -f - print --auto | ||||
| <<< | ||||
| = a | ||||
|     c  *-0.453 | ||||
|     d | ||||
| 
 | ||||
| 2021-09-01 | ||||
|     a    1000 EUR | ||||
|     b | ||||
| >>> | ||||
| 2021-09-01  ; modified: | ||||
|     a        1000 EUR | ||||
|     c        -453 EUR  ; generated-posting: = a | ||||
|     d         453 EUR  ; generated-posting: = a | ||||
|     b | ||||
| 
 | ||||
| >>>2 | ||||
| >>>=0 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user