register: --average/-A shows a running average, like ledger
				
					
				
			This commit is contained in:
		
							parent
							
								
									3d205ec03f
								
							
						
					
					
						commit
						7ed0705398
					
				| @ -720,15 +720,17 @@ summary postings within each interval: | |||||||
|     $ hledger register --monthly rent |     $ hledger register --monthly rent | ||||||
|     $ hledger register --monthly -E food --depth 4 |     $ hledger register --monthly -E food --depth 4 | ||||||
| 
 | 
 | ||||||
|  | The `--average`/`-A` flag shows a running average instead of the running total. | ||||||
|  | 
 | ||||||
|  | The `--related`/`-r` flag shows the *other* postings in the transactions | ||||||
|  | of the postings which would normally be shown. | ||||||
|  | 
 | ||||||
| The `--width`/`-w` option adjusts the width of the output. By default, | The `--width`/`-w` option adjusts the width of the output. By default, | ||||||
| this is 80 characters. To allow more space for descriptions and account | this is 80 characters. To allow more space for descriptions and account | ||||||
| names, use `-w` to increase the width to 120 characters, or `-wN` to set | names, use `-w` to increase the width to 120 characters, or `-wN` to set | ||||||
| any desired width (at least 50 recommended, with no space before the N - | any desired width (at least 50 recommended, with no space before the N - | ||||||
| eg `-w200` or `--width=200`, | eg `-w200` or `--width=200`, | ||||||
| 
 | 
 | ||||||
| The `--related`/`-r` flag shows the *other* postings in the transactions |  | ||||||
| of the postings which would normally be shown. |  | ||||||
| 
 |  | ||||||
| #### balance | #### balance | ||||||
| 
 | 
 | ||||||
| The balance command displays accounts and their balances, indented to show the account hierarchy. | The balance command displays accounts and their balances, indented to show the account hierarchy. | ||||||
|  | |||||||
							
								
								
									
										1
									
								
								NEWS.md
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								NEWS.md
									
									
									
									
									
								
							| @ -6,6 +6,7 @@ title: hledger news | |||||||
| 
 | 
 | ||||||
| ## unreleased | ## unreleased | ||||||
| 
 | 
 | ||||||
|  | - register: `--average/-A` shows a running average, like ledger | ||||||
| - queries: `sym:REGEXP` matches (whole) commodity symbols | - queries: `sym:REGEXP` matches (whole) commodity symbols | ||||||
| - queries: `amt` now uses the = operator by default, eg amt:50 finds amounts equal to 50 | - queries: `amt` now uses the = operator by default, eg amt:50 finds amounts equal to 50 | ||||||
| - don't break when there are non-ascii characters in CSV files | - don't break when there are non-ascii characters in CSV files | ||||||
|  | |||||||
| @ -94,6 +94,7 @@ data ReportOpts = ReportOpts { | |||||||
|     ,yearly_         :: Bool |     ,yearly_         :: Bool | ||||||
|     ,format_         :: Maybe FormatStr |     ,format_         :: Maybe FormatStr | ||||||
|     ,related_        :: Bool |     ,related_        :: Bool | ||||||
|  |     ,average_        :: Bool | ||||||
|     ,query_          :: String -- all arguments, as a string |     ,query_          :: String -- all arguments, as a string | ||||||
|  } deriving (Show) |  } deriving (Show) | ||||||
| 
 | 
 | ||||||
| @ -124,6 +125,7 @@ defreportopts = ReportOpts | |||||||
|     def |     def | ||||||
|     def |     def | ||||||
|     def |     def | ||||||
|  |     def | ||||||
| 
 | 
 | ||||||
| instance Default ReportOpts where def = defreportopts | instance Default ReportOpts where def = defreportopts | ||||||
| 
 | 
 | ||||||
| @ -254,14 +256,14 @@ type PostingsReport = (String               -- label for the running balance col | |||||||
| type PostingsReportItem = (Maybe Day    -- posting date, if this is the first posting in a transaction or if it's different from the previous posting's date | type PostingsReportItem = (Maybe Day    -- posting date, if this is the first posting in a transaction or if it's different from the previous posting's date | ||||||
|                           ,Maybe String -- transaction description, if this is the first posting in a transaction |                           ,Maybe String -- transaction description, if this is the first posting in a transaction | ||||||
|                           ,Posting      -- the posting, possibly with account name depth-clipped |                           ,Posting      -- the posting, possibly with account name depth-clipped | ||||||
|                           ,MixedAmount  -- the running total after this posting |                           ,MixedAmount  -- the running total after this posting (or with --average, the running average) | ||||||
|                           ) |                           ) | ||||||
| 
 | 
 | ||||||
| -- | Select postings from the journal and add running balance and other | -- | Select postings from the journal and add running balance and other | ||||||
| -- information to make a postings report. Used by eg hledger's register command. | -- information to make a postings report. Used by eg hledger's register command. | ||||||
| postingsReport :: ReportOpts -> Query -> Journal -> PostingsReport | postingsReport :: ReportOpts -> Query -> Journal -> PostingsReport | ||||||
| postingsReport opts q j = -- trace ("q: "++show q++"\nq': "++show q') $ | postingsReport opts q j = -- trace ("q: "++show q++"\nq': "++show q') $ | ||||||
|                           (totallabel, postingsReportItems ps nullposting wd depth startbal (+)) |                           (totallabel, postingsReportItems ps nullposting wd depth startbal runningcalcfn 1) | ||||||
|     where |     where | ||||||
|       ps | interval == NoInterval = displayableps |       ps | interval == NoInterval = displayableps | ||||||
|          | otherwise              = summarisePostingsByInterval interval depth empty reportspan displayableps |          | otherwise              = summarisePostingsByInterval interval depth empty reportspan displayableps | ||||||
| @ -293,14 +295,16 @@ postingsReport opts q j = -- trace ("q: "++show q++"\nq': "++show q') $ | |||||||
|       reportspan | empty     = requestedspan `orDatesFrom` journalspan |       reportspan | empty     = requestedspan `orDatesFrom` journalspan | ||||||
|                  | otherwise = requestedspan `spanIntersect` matchedspan |                  | otherwise = requestedspan `spanIntersect` matchedspan | ||||||
|       startbal = sumPostings precedingps |       startbal = sumPostings precedingps | ||||||
|  |       runningcalcfn | average_ opts = \i avg amt -> avg + (amt - avg) `divideMixedAmount` (fromIntegral i) | ||||||
|  |                     | otherwise     = \_ bal amt -> bal + amt | ||||||
| 
 | 
 | ||||||
| totallabel = "Total" | totallabel = "Total" | ||||||
| balancelabel = "Balance" | balancelabel = "Balance" | ||||||
| 
 | 
 | ||||||
| -- | Generate postings report line items. | -- | Generate postings report line items. | ||||||
| postingsReportItems :: [Posting] -> Posting -> WhichDate -> Int -> MixedAmount -> (MixedAmount -> MixedAmount -> MixedAmount) -> [PostingsReportItem] | postingsReportItems :: [Posting] -> Posting -> WhichDate -> Int -> MixedAmount -> (Int -> MixedAmount -> MixedAmount -> MixedAmount) -> Int -> [PostingsReportItem] | ||||||
| postingsReportItems [] _ _ _ _ _ = [] | postingsReportItems [] _ _ _ _ _ _ = [] | ||||||
| postingsReportItems (p:ps) pprev wd d b sumfn = i:(postingsReportItems ps p wd d b' sumfn) | postingsReportItems (p:ps) pprev wd d b runningcalcfn itemnum = i:(postingsReportItems ps p wd d b' runningcalcfn (itemnum+1)) | ||||||
|     where |     where | ||||||
|       i = mkpostingsReportItem showdate showdesc wd p' b' |       i = mkpostingsReportItem showdate showdesc wd p' b' | ||||||
|       showdate = isfirstintxn || isdifferentdate |       showdate = isfirstintxn || isdifferentdate | ||||||
| @ -309,7 +313,7 @@ postingsReportItems (p:ps) pprev wd d b sumfn = i:(postingsReportItems ps p wd d | |||||||
|       isdifferentdate = case wd of PrimaryDate   -> postingDate p  /= postingDate pprev |       isdifferentdate = case wd of PrimaryDate   -> postingDate p  /= postingDate pprev | ||||||
|                                    SecondaryDate -> postingDate2 p /= postingDate2 pprev |                                    SecondaryDate -> postingDate2 p /= postingDate2 pprev | ||||||
|       p' = p{paccount=clipAccountName d $ paccount p} |       p' = p{paccount=clipAccountName d $ paccount p} | ||||||
|       b' = b `sumfn` pamount p |       b' = runningcalcfn itemnum b (pamount p) | ||||||
| 
 | 
 | ||||||
| -- | Generate one postings report line item, containing the posting, | -- | Generate one postings report line item, containing the posting, | ||||||
| -- the current running balance, and optionally the posting date and/or | -- the current running balance, and optionally the posting date and/or | ||||||
|  | |||||||
| @ -215,6 +215,7 @@ postingsmode = (commandmode ["register","postings"]) { | |||||||
|  ,modeGroupFlags = Group { |  ,modeGroupFlags = Group { | ||||||
|      groupUnnamed = [ |      groupUnnamed = [ | ||||||
|       flagOpt (show defaultWidthWithFlag) ["width","w"] (\s opts -> Right $ setopt "width" s opts) "N" "increase or set the output width (default: 80)" |       flagOpt (show defaultWidthWithFlag) ["width","w"] (\s opts -> Right $ setopt "width" s opts) "N" "increase or set the output width (default: 80)" | ||||||
|  |      ,flagNone ["average","A"] (\opts -> setboolopt "average" opts) "show the running average instead of the running total" | ||||||
|      ,flagNone ["related","r"] (\opts -> setboolopt "related" opts) "show the other postings in the transactions of those that would have been shown" |      ,flagNone ["related","r"] (\opts -> setboolopt "related" opts) "show the other postings in the transactions of those that would have been shown" | ||||||
|      ] |      ] | ||||||
|     ,groupHidden = [] |     ,groupHidden = [] | ||||||
| @ -350,6 +351,7 @@ toCliOpts rawopts = do | |||||||
|                             ,quarterly_ = boolopt "quarterly" rawopts |                             ,quarterly_ = boolopt "quarterly" rawopts | ||||||
|                             ,yearly_    = boolopt "yearly" rawopts |                             ,yearly_    = boolopt "yearly" rawopts | ||||||
|                             ,format_    = maybestringopt "format" rawopts |                             ,format_    = maybestringopt "format" rawopts | ||||||
|  |                             ,average_   = boolopt "average" rawopts  -- register | ||||||
|                             ,related_   = boolopt "related" rawopts  -- register |                             ,related_   = boolopt "related" rawopts  -- register | ||||||
|                             ,query_     = unwords $ listofstringopt "args" rawopts |                             ,query_     = unwords $ listofstringopt "args" rawopts | ||||||
|                             } |                             } | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user