reg: fix --value-at=transaction with -M (#329)
This commit is contained in:
parent
30a35230d2
commit
72214a5747
@ -95,11 +95,12 @@ postingsReport ropts@ReportOpts{..} q j =
|
||||
if multiperiod then
|
||||
let
|
||||
showempty = empty_ || average_
|
||||
summaryps = summarisePostingsByInterval interval_ whichdate depth showempty reportspan reportps
|
||||
-- for --value-at=transaction, need to value the postings before summarising them
|
||||
maybevaluedreportps
|
||||
| mvalueat==Just AtTransaction = [postingValueAtDate j (postingDate p) p | p <- reportps]
|
||||
| otherwise = reportps
|
||||
summaryps = summarisePostingsByInterval interval_ whichdate depth showempty reportspan maybevaluedreportps
|
||||
in case mvalueat of
|
||||
Nothing -> [(p , periodend) | (p,periodend) <- summaryps]
|
||||
Just AtTransaction -> [(postingValueAtDate j (postingDate p) p , periodend) | (p,periodend) <- summaryps]
|
||||
-- ^ XXX shouldn't this value the individual ps at postingdate before summarising
|
||||
Just AtPeriod -> [(postingValueAtDate j periodlastday p , periodend) | (p,periodend) <- summaryps
|
||||
,let periodlastday = maybe
|
||||
(error' "postingsReport: expected a subperiod end date") -- XXX shouldn't happen
|
||||
@ -108,6 +109,7 @@ postingsReport ropts@ReportOpts{..} q j =
|
||||
]
|
||||
Just AtNow -> [(postingValueAtDate j today p , periodend) | (p,periodend) <- summaryps]
|
||||
Just (AtDate d) -> [(postingValueAtDate j d p , periodend) | (p,periodend) <- summaryps]
|
||||
_ -> summaryps
|
||||
else
|
||||
let reportperiodlastday =
|
||||
fromMaybe (error' "postingsReport: expected a non-empty journal") -- XXX shouldn't happen
|
||||
@ -119,8 +121,6 @@ postingsReport ropts@ReportOpts{..} q j =
|
||||
Just AtNow -> [(postingValueAtDate j today p , Nothing) | p <- reportps]
|
||||
Just (AtDate d) -> [(postingValueAtDate j d p , Nothing) | p <- reportps]
|
||||
|
||||
-- For -H: postings preceding the report period, to calculate the initial running total/average.
|
||||
|
||||
-- posting report items ready for display
|
||||
items = dbg1 "postingsReport items" $ postingsReportItems displayps (nullposting,Nothing) whichdate depth valuedstartbal runningcalc startnum
|
||||
where
|
||||
|
||||
@ -611,7 +611,7 @@ types, "-M" means any report interval, "Y" means supported):
|
||||
|-----------------------|:--------------------------------:|:---------------------------:|:-------------------------------:|
|
||||
| print | Y | Y | Y |
|
||||
| register | Y | Y | Y |
|
||||
| register -M | *retest* | Y | Y |
|
||||
| register -M | Y | Y | Y |
|
||||
| register -H | Y | Y | Y |
|
||||
| balance | Y | Y | Y |
|
||||
| balance -MTA | Y | Y | Y |
|
||||
|
||||
@ -255,11 +255,50 @@ $ hledger -f- reg --value-at=2000-01-15 -b 200002 -H
|
||||
|
||||
# register, periodic
|
||||
|
||||
# 22. periodic register report valued at transaction
|
||||
# 22. periodic register report valued at transaction.
|
||||
# The total for january is 6 B (1 A valued at 1/1, price 1 B, and 1 A
|
||||
# valued at 1/20, price 5 B).
|
||||
# Need an extra transaction for this test:
|
||||
<
|
||||
P 2000/01/01 A 1 B
|
||||
P 2000/01/15 A 5 B
|
||||
P 2000/02/01 A 2 B
|
||||
P 2000/03/01 A 3 B
|
||||
P 2000/04/01 A 4 B
|
||||
|
||||
2000/01/01
|
||||
(a) 1 A
|
||||
|
||||
2000/01/20
|
||||
(a) 1 A
|
||||
|
||||
2000/02/01
|
||||
(a) 1 A
|
||||
|
||||
2000/03/01
|
||||
(a) 1 A
|
||||
|
||||
$ hledger -f- reg --value-at=transaction -M
|
||||
2000/01 a 1 B 1 B
|
||||
2000/02 a 2 B 3 B
|
||||
2000/03 a 3 B 6 B
|
||||
2000/01 a 6 B 6 B
|
||||
2000/02 a 2 B 8 B
|
||||
2000/03 a 3 B 11 B
|
||||
|
||||
# back to the original test journal:
|
||||
<
|
||||
P 2000/01/01 A 1 B
|
||||
P 2000/01/15 A 5 B
|
||||
P 2000/02/01 A 2 B
|
||||
P 2000/03/01 A 3 B
|
||||
P 2000/04/01 A 4 B
|
||||
|
||||
2000/01/01
|
||||
(a) 1 A
|
||||
|
||||
2000/02/01
|
||||
(a) 1 A
|
||||
|
||||
2000/03/01
|
||||
(a) 1 A
|
||||
|
||||
# 23. periodic register report valued at period end
|
||||
$ hledger -f- reg --value-at=period -M
|
||||
|
||||
Loading…
Reference in New Issue
Block a user