fix: Add balancing amounts in periodic transactions before applying auto-postings. (#1412)
This commit is contained in:
		
							parent
							
								
									04a36d4942
								
							
						
					
					
						commit
						2da0e67141
					
				| @ -122,8 +122,14 @@ journalAddForecast :: CliOpts -> Journal -> Journal | |||||||
| journalAddForecast CliOpts{inputopts_=iopts, reportspec_=rspec} j = | journalAddForecast CliOpts{inputopts_=iopts, reportspec_=rspec} j = | ||||||
|     case forecast_ ropts of |     case forecast_ ropts of | ||||||
|         Nothing -> j |         Nothing -> j | ||||||
|         Just _  -> either (error') id . journalApplyCommodityStyles $  -- PARTIAL: |         Just _  -> either error id $ do  -- PARTIAL: | ||||||
|                      journalBalanceTransactions' iopts j{ jtxns = concat [jtxns j, forecasttxns'] } |             forecasttxns <- addAutoTxns =<< mapM (balanceTransaction (balancingopts_ iopts)) | ||||||
|  |                 [ txnTieKnot t | pt <- jperiodictxns j | ||||||
|  |                                , t <- runPeriodicTransaction pt forecastspan | ||||||
|  |                                , spanContainsDate forecastspan (tdate t) | ||||||
|  |                                ] | ||||||
|  |             journalBalanceTransactions (balancingopts_ iopts) j{ jtxns = concat [jtxns j, forecasttxns] } | ||||||
|  |               >>= journalApplyCommodityStyles | ||||||
|   where |   where | ||||||
|     today = _rsDay rspec |     today = _rsDay rspec | ||||||
|     ropts = _rsReportOpts rspec |     ropts = _rsReportOpts rspec | ||||||
| @ -141,18 +147,7 @@ journalAddForecast CliOpts{inputopts_=iopts, reportspec_=rspec} j = | |||||||
|         (fromMaybe nulldatespan $ dbg2 "forecastspan flag" $ forecast_ ropts) |         (fromMaybe nulldatespan $ dbg2 "forecastspan flag" $ forecast_ ropts) | ||||||
|         (DateSpan (Just forecastbeginDefault) (Just forecastendDefault)) |         (DateSpan (Just forecastbeginDefault) (Just forecastendDefault)) | ||||||
| 
 | 
 | ||||||
|     forecasttxns = |     addAutoTxns = if auto_ iopts then modifyTransactions today (jtxnmodifiers j) else return | ||||||
|       [ txnTieKnot t | pt <- jperiodictxns j |  | ||||||
|                      , t <- runPeriodicTransaction pt forecastspan |  | ||||||
|                      , spanContainsDate forecastspan (tdate t) |  | ||||||
|                      ] |  | ||||||
|     -- With --auto enabled, transaction modifiers are also applied to forecast txns |  | ||||||
|     forecasttxns' = |  | ||||||
|       (if auto_ iopts then either error' id . modifyTransactions today (jtxnmodifiers j) else id)  -- PARTIAL: |  | ||||||
|       forecasttxns |  | ||||||
| 
 |  | ||||||
|     journalBalanceTransactions' iopts j = |  | ||||||
|        either error' id $ journalBalanceTransactions (balancingopts_ iopts) j  -- PARTIAL: |  | ||||||
| 
 | 
 | ||||||
| -- | Write some output to stdout or to a file selected by --output-file. | -- | Write some output to stdout or to a file selected by --output-file. | ||||||
| -- If the file exists it will be overwritten. | -- If the file exists it will be overwritten. | ||||||
|  | |||||||
| @ -384,3 +384,30 @@ $ hledger -f- print --auto | |||||||
|     (b)                 100 EUR  ; generated-posting: = assets amt:>50 |     (b)                 100 EUR  ; generated-posting: = assets amt:>50 | ||||||
| 
 | 
 | ||||||
| >=0 | >=0 | ||||||
|  | 
 | ||||||
|  | # 20. Auto-generated postings apply on auto-balanced periodic postings. | ||||||
|  | < | ||||||
|  | 2021-01-01   Fixed | ||||||
|  |     Checking            -10 | ||||||
|  |     Costs | ||||||
|  | 
 | ||||||
|  | ~ 2021-01-02   Periodic | ||||||
|  |     Checking            -10 | ||||||
|  |     Costs | ||||||
|  | 
 | ||||||
|  | = acct:Costs | ||||||
|  |     (Auto)     *1 | ||||||
|  | 
 | ||||||
|  | $ hledger -f- print --forecast --auto --explicit | ||||||
|  | 2021-01-01 Fixed  ; modified: | ||||||
|  |     Checking             -10 | ||||||
|  |     Costs                 10 | ||||||
|  |     (Auto)                10  ; generated-posting: = acct:Costs | ||||||
|  | 
 | ||||||
|  | 2021-01-02 Periodic | ||||||
|  |     ; generated-transaction: ~ 2021-01-02, modified:  | ||||||
|  |     Checking             -10 | ||||||
|  |     Costs                 10 | ||||||
|  |     (Auto)                10  ; generated-posting: = acct:Costs | ||||||
|  | 
 | ||||||
|  | >=0 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user