ref: areg: Avoid reversing transactions list by making sure we sort them
in the correct order to start with.
This commit is contained in:
		
							parent
							
								
									4e0dcec096
								
							
						
					
					
						commit
						b7e40a9e63
					
				| @ -23,9 +23,10 @@ module Hledger.Reports.AccountTransactionsReport ( | |||||||
| ) | ) | ||||||
| where | where | ||||||
| 
 | 
 | ||||||
| import Data.List (mapAccumL, nub, partition, sortOn) | import Data.List (mapAccumR, nub, partition, sortOn) | ||||||
| import Data.List.Extra (nubSort) | import Data.List.Extra (nubSort) | ||||||
| import Data.Maybe (catMaybes) | import Data.Maybe (catMaybes) | ||||||
|  | import Data.Ord (Down(..)) | ||||||
| import Data.Text (Text) | import Data.Text (Text) | ||||||
| import qualified Data.Text as T | import qualified Data.Text as T | ||||||
| import Data.Time.Calendar (Day, addDays) | import Data.Time.Calendar (Day, addDays) | ||||||
| @ -116,7 +117,7 @@ accountTransactionsReport rspec@ReportSpec{_rsReportOpts=ropts} j thisacctq = it | |||||||
|     -- sort by the transaction's register date, for accurate starting balance |     -- sort by the transaction's register date, for accurate starting balance | ||||||
|     transactions = |     transactions = | ||||||
|         ptraceAtWith 5 (("ts4:\n"++).pshowTransactions) |         ptraceAtWith 5 (("ts4:\n"++).pshowTransactions) | ||||||
|       . sortOn (transactionRegisterDate reportq thisacctq) |       . sortOn (Down . transactionRegisterDate reportq thisacctq) | ||||||
|       . jtxns |       . jtxns | ||||||
|       . ptraceAtWith 5 (("ts3:\n"++).pshowTransactions.jtxns) |       . ptraceAtWith 5 (("ts3:\n"++).pshowTransactions.jtxns) | ||||||
|       -- maybe convert these transactions to cost or value |       -- maybe convert these transactions to cost or value | ||||||
| @ -154,7 +155,7 @@ accountTransactionsReport rspec@ReportSpec{_rsReportOpts=ropts} j thisacctq = it | |||||||
|         mstartdate = queryStartDate (date2_ ropts) reportq |         mstartdate = queryStartDate (date2_ ropts) reportq | ||||||
|         datelessreportq = filterQuery (not . queryIsDateOrDate2) reportq |         datelessreportq = filterQuery (not . queryIsDateOrDate2) reportq | ||||||
| 
 | 
 | ||||||
|     items = reverse $ accountTransactionsReportItems reportq thisacctq startbal maNegate transactions |     items = accountTransactionsReportItems reportq thisacctq startbal maNegate transactions | ||||||
| 
 | 
 | ||||||
| pshowTransactions :: [Transaction] -> String | pshowTransactions :: [Transaction] -> String | ||||||
| pshowTransactions = pshow . map (\t -> unwords [show $ tdate t, T.unpack $ tdescription t]) | pshowTransactions = pshow . map (\t -> unwords [show $ tdate t, T.unpack $ tdescription t]) | ||||||
| @ -166,7 +167,7 @@ pshowTransactions = pshow . map (\t -> unwords [show $ tdate t, T.unpack $ tdesc | |||||||
| accountTransactionsReportItems :: Query -> Query -> MixedAmount -> (MixedAmount -> MixedAmount) -> [Transaction] -> [AccountTransactionsReportItem] | accountTransactionsReportItems :: Query -> Query -> MixedAmount -> (MixedAmount -> MixedAmount) -> [Transaction] -> [AccountTransactionsReportItem] | ||||||
| accountTransactionsReportItems reportq thisacctq bal signfn = | accountTransactionsReportItems reportq thisacctq bal signfn = | ||||||
|     catMaybes . snd . |     catMaybes . snd . | ||||||
|     mapAccumL (accountTransactionsReportItem reportq thisacctq signfn) bal |     mapAccumR (accountTransactionsReportItem reportq thisacctq signfn) bal | ||||||
| 
 | 
 | ||||||
| accountTransactionsReportItem :: Query -> Query -> (MixedAmount -> MixedAmount) -> MixedAmount -> Transaction -> (MixedAmount, Maybe AccountTransactionsReportItem) | accountTransactionsReportItem :: Query -> Query -> (MixedAmount -> MixedAmount) -> MixedAmount -> Transaction -> (MixedAmount, Maybe AccountTransactionsReportItem) | ||||||
| accountTransactionsReportItem reportq thisacctq signfn bal torig = balItem | accountTransactionsReportItem reportq thisacctq signfn bal torig = balItem | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user