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
|
where
|
||||||
|
|
||||||
import Data.Maybe (isJust)
|
|
||||||
import Data.Text (Text)
|
import Data.Text (Text)
|
||||||
import Data.List (intersperse)
|
import Data.List (intersperse)
|
||||||
import qualified Data.Text as T
|
import qualified Data.Text as T
|
||||||
import qualified Data.Text.IO as T
|
import qualified Data.Text.IO as T
|
||||||
import qualified Data.Text.Lazy as TL
|
import qualified Data.Text.Lazy as TL
|
||||||
import qualified Data.Text.Lazy.Builder as TB
|
import qualified Data.Text.Lazy.Builder as TB
|
||||||
|
import Lens.Micro (_Just, has)
|
||||||
import System.Console.CmdArgs.Explicit
|
import System.Console.CmdArgs.Explicit
|
||||||
import Hledger.Read.CsvReader (CSV, printCSV)
|
|
||||||
|
|
||||||
import Hledger
|
import Hledger
|
||||||
|
import Hledger.Read.CsvReader (CSV, printCSV)
|
||||||
import Hledger.Cli.CliOptions
|
import Hledger.Cli.CliOptions
|
||||||
import Hledger.Cli.Utils
|
import Hledger.Cli.Utils
|
||||||
|
|
||||||
@ -76,21 +76,27 @@ entriesReportAsText opts = TB.toLazyText . foldMap (TB.fromText . showTransactio
|
|||||||
where
|
where
|
||||||
whichtxn
|
whichtxn
|
||||||
-- With -x, use the fully-inferred txn with all amounts & txn prices explicit.
|
-- 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.
|
-- Or also, if any of -B/-V/-X/--value are active.
|
||||||
-- Because of #551, and because of print -V valuing only one
|
-- Because of #551, and because of print -V valuing only one
|
||||||
-- posting when there's an implicit txn price.
|
-- posting when there's an implicit txn price.
|
||||||
-- So -B/-V/-X/--value implies -x. Is this ok ?
|
-- 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.
|
-- By default, use the original as-written-in-the-journal txn.
|
||||||
| otherwise = originalTransaction
|
| otherwise = originalTransaction
|
||||||
|
|
||||||
-- Replace this transaction's postings with the original postings if any, but keep the
|
-- 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 }
|
originalTransaction t = t { tpostings = map originalPostingPreservingAccount $ tpostings t }
|
||||||
|
|
||||||
-- Get the original posting if any, but keep the current possibly rewritten account name.
|
-- Get the original posting if any, but keep the current possibly rewritten account name, and
|
||||||
originalPostingPreservingAccount p = (originalPosting p) { paccount = paccount p }
|
-- 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
|
-- XXX
|
||||||
-- tests_showTransactions = [
|
-- tests_showTransactions = [
|
||||||
|
|||||||
@ -112,3 +112,23 @@ hledger -f - print --explicit
|
|||||||
|
|
||||||
>>>2
|
>>>2
|
||||||
>>>=0
|
>>>=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