Revert "add: suggest only one commodity at a time as default amount #383"
Overcommitted.
This reverts commit 92b97e7bd3.
			
			
This commit is contained in:
		
							parent
							
								
									92b97e7bd3
								
							
						
					
					
						commit
						009fe6d09f
					
				| @ -48,20 +48,13 @@ nullacct = Account | |||||||
|   , asubs = [] |   , asubs = [] | ||||||
|   , anumpostings = 0 |   , anumpostings = 0 | ||||||
|   , aebalance = nullmixedamt |   , aebalance = nullmixedamt | ||||||
|   , aestartbalance = nullmixedamt |  | ||||||
|   , aeperiodchange = nullmixedamt |  | ||||||
|   , aeendbalance   = nullmixedamt |  | ||||||
|   , aibalance = nullmixedamt |   , aibalance = nullmixedamt | ||||||
|   , aistartbalance = nullmixedamt |  | ||||||
|   , aiperiodchange = nullmixedamt |  | ||||||
|   , aiendbalance   = nullmixedamt |  | ||||||
|   , aboring = False |   , aboring = False | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
| -- | Derive 1. an account tree and 2. their total changes from a list of postings. | -- | Derive 1. an account tree and 2. their balances from a list of postings. | ||||||
| -- (ledger's core feature). The accounts are returned in a list, but | -- (ledger's core feature). The accounts are returned in a list, but | ||||||
| -- also reference each other as a tree structure; the first account is | -- retain their tree structure; the first one is the root of the tree. | ||||||
| -- the root of the tree. |  | ||||||
| accountsFromPostings :: [Posting] -> [Account] | accountsFromPostings :: [Posting] -> [Account] | ||||||
| accountsFromPostings ps = | accountsFromPostings ps = | ||||||
|   let |   let | ||||||
|  | |||||||
| @ -18,11 +18,9 @@ import Text.Printf | |||||||
| 
 | 
 | ||||||
| import Hledger.Data.Types | import Hledger.Data.Types | ||||||
| import Hledger.Data.Account | import Hledger.Data.Account | ||||||
| import Hledger.Data.Dates |  | ||||||
| import Hledger.Data.Journal | import Hledger.Data.Journal | ||||||
| import Hledger.Data.Posting | import Hledger.Data.Posting | ||||||
| import Hledger.Query | import Hledger.Query | ||||||
| import Hledger.Utils.Debug |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| instance Show Ledger where | instance Show Ledger where | ||||||
| @ -41,33 +39,16 @@ nullledger = Ledger { | |||||||
| 
 | 
 | ||||||
| -- | Filter a journal's transactions with the given query, then derive | -- | Filter a journal's transactions with the given query, then derive | ||||||
| -- a ledger containing the chart of accounts and balances. If the | -- a ledger containing the chart of accounts and balances. If the | ||||||
| -- query includes a depth limit, that will affect the ledger's | -- query includes a depth limit, that will affect the this ledger's | ||||||
| -- journal but not the ledger's account tree. | -- journal but not the ledger's account tree. | ||||||
| ledgerFromJournal :: Query -> Journal -> Ledger | ledgerFromJournal :: Query -> Journal -> Ledger | ||||||
| ledgerFromJournal q j = nullledger{ljournal=depthclippedperiodj, laccounts=as} | ledgerFromJournal q j = nullledger{ljournal=j'', laccounts=as} | ||||||
|   where |   where | ||||||
|     symq        = filterQuery queryIsSym q |     (q',depthq)  = (filterQuery (not . queryIsDepth) q, filterQuery queryIsDepth q) | ||||||
|     depthq      = filterQuery queryIsDepth q |     j'  = filterJournalAmounts (filterQuery queryIsSym q) $ -- remove amount parts which the query's sym: terms would exclude | ||||||
|     periodq     = filterQuery (not . queryIsDepth) q |           filterJournalPostings q' j | ||||||
|     -- get account totals before and during report period |     as  = accountsFromPostings $ journalPostings j' | ||||||
|     datelessq   = filterQuery (not . queryIsDateOrDate2) periodq |     j'' = filterJournalPostings depthq j' | ||||||
|     dateqcons  = Date -- if date2_ opts then Date2 else Date  -- import cycle, don't bother supporting date2 |  | ||||||
|     reportspan = queryDateSpan False {-(date2_ opts)-} q   -- date span specified by -b/-e/-p options and query args |  | ||||||
|     mstartdate = dbg1 "mstartdate" $ spanStart reportspan |  | ||||||
|     menddate   = dbg1 "menddate"   $ spanEnd   reportspan |  | ||||||
|     precedingq = dbg1 "precedingq" $ |  | ||||||
|                  case mstartdate of |  | ||||||
|                    Just _  -> And [datelessq, dateqcons $ DateSpan Nothing mstartdate] |  | ||||||
|                    Nothing -> None |  | ||||||
| 
 |  | ||||||
|     -- remove amount parts which the query's sym: terms would exclude |  | ||||||
|     precedingj  = filterJournalAmounts symq $ filterJournalPostings precedingq j |  | ||||||
|     periodj     = filterJournalAmounts symq $ filterJournalPostings periodq j |  | ||||||
|     precedingas = accountsFromPostings $ journalPostings precedingj |  | ||||||
|     as          = accountsFromPostings $ journalPostings periodj |  | ||||||
|     depthclippedperiodj = filterJournalPostings depthq periodj |  | ||||||
| 
 |  | ||||||
| --     j' = journalSelectingAmountFromOpts opts j |  | ||||||
| 
 | 
 | ||||||
| -- | List a ledger's account names. | -- | List a ledger's account names. | ||||||
| ledgerAccountNames :: Ledger -> [AccountName] | ledgerAccountNames :: Ledger -> [AccountName] | ||||||
|  | |||||||
| @ -281,8 +281,8 @@ instance NFData MarketPrice | |||||||
| -- | -- | ||||||
| data Journal = Journal { | data Journal = Journal { | ||||||
|   -- parsing-related data |   -- parsing-related data | ||||||
|    jparsedefaultyear      :: Maybe Year                            -- ^ the current default year, specified by the most recent Y directive (or current date) |    jparsedefaultyear      :: (Maybe Year)                          -- ^ the current default year, specified by the most recent Y directive (or current date) | ||||||
|   ,jparsedefaultcommodity :: Maybe (CommoditySymbol,AmountStyle)   -- ^ the current default commodity and its format, specified by the most recent D directive |   ,jparsedefaultcommodity :: (Maybe (CommoditySymbol,AmountStyle)) -- ^ the current default commodity and its format, specified by the most recent D directive | ||||||
|   ,jparseparentaccounts   :: [AccountName]                         -- ^ the current stack of parent account names, specified by apply account directives |   ,jparseparentaccounts   :: [AccountName]                         -- ^ the current stack of parent account names, specified by apply account directives | ||||||
|   ,jparsealiases          :: [AccountAlias]                        -- ^ the current account name aliases in effect, specified by alias directives (& options ?) |   ,jparsealiases          :: [AccountAlias]                        -- ^ the current account name aliases in effect, specified by alias directives (& options ?) | ||||||
|   ,jparsetransactioncount :: Integer                               -- ^ the current count of transactions parsed so far (only journal format txns, currently) |   ,jparsetransactioncount :: Integer                               -- ^ the current count of transactions parsed so far (only journal format txns, currently) | ||||||
| @ -329,23 +329,15 @@ data Reader = Reader { | |||||||
| 
 | 
 | ||||||
| instance Show Reader where show r = rFormat r ++ " reader" | instance Show Reader where show r = rFormat r ++ " reader" | ||||||
| 
 | 
 | ||||||
| -- | An account, with name, links to parent/subaccounts | -- | An account, with name, balances and links to parent/subaccounts | ||||||
| -- which let you walk up or down the account tree, and | -- which let you walk up or down the account tree. | ||||||
| -- and start/end balances and balance change amount relative to |  | ||||||
| -- some report period. |  | ||||||
| data Account = Account { | data Account = Account { | ||||||
|   aname                     :: AccountName,   -- ^ this account's full name |   aname                     :: AccountName,   -- ^ this account's full name | ||||||
|   aebalance                 :: MixedAmount,   -- ^ this account's balance, excluding subaccounts |   aebalance                 :: MixedAmount,   -- ^ this account's balance, excluding subaccounts | ||||||
|   aestartbalance            :: MixedAmount,   -- ^ this account's balance at start of report period, excluding subaccounts |  | ||||||
|   aeperiodchange            :: MixedAmount,   -- ^ the change in this account's balance during the report period, excluding subaccounts |  | ||||||
|   aeendbalance              :: MixedAmount,   -- ^ this account's balance at end of report period, excluding subaccounts |  | ||||||
|   asubs                     :: [Account],     -- ^ sub-accounts |   asubs                     :: [Account],     -- ^ sub-accounts | ||||||
|   anumpostings              :: Int,           -- ^ number of postings to this account |   anumpostings              :: Int,           -- ^ number of postings to this account | ||||||
|   -- derived from the above : |   -- derived from the above : | ||||||
|   aibalance                 :: MixedAmount,   -- ^ this account's balance, including subaccounts |   aibalance                 :: MixedAmount,   -- ^ this account's balance, including subaccounts | ||||||
|   aistartbalance            :: MixedAmount,   -- ^ this account's balance at start of report period, excluding subaccounts |  | ||||||
|   aiperiodchange            :: MixedAmount,   -- ^ the change in this account's balance during the report period, excluding subaccounts |  | ||||||
|   aiendbalance              :: MixedAmount,   -- ^ this account's balance at end of report period, excluding subaccounts |  | ||||||
|   aparent                   :: Maybe Account, -- ^ parent account |   aparent                   :: Maybe Account, -- ^ parent account | ||||||
|   aboring                   :: Bool           -- ^ used in the accounts report to label elidable parents |   aboring                   :: Bool           -- ^ used in the accounts report to label elidable parents | ||||||
|   } deriving (Typeable, Data, Generic) |   } deriving (Typeable, Data, Generic) | ||||||
|  | |||||||
| @ -22,7 +22,7 @@ import Hledger.Reports.ReportOptions | |||||||
| import Hledger.Reports.TransactionsReports | import Hledger.Reports.TransactionsReports | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| -- | Get the historical inclusive balance of a particular account over time, | -- | Get the historical running inclusive balance of a particular account, | ||||||
| -- from earliest to latest posting date. | -- from earliest to latest posting date. | ||||||
| accountBalanceHistory :: ReportOpts -> Journal -> Account -> [(Day, MixedAmount)] | accountBalanceHistory :: ReportOpts -> Journal -> Account -> [(Day, MixedAmount)] | ||||||
| accountBalanceHistory ropts j a = [(getdate t, bal) | (t,_,_,_,_,bal) <- items] | accountBalanceHistory ropts j a = [(getdate t, bal) | (t,_,_,_,_,bal) <- items] | ||||||
|  | |||||||
| @ -5,13 +5,6 @@ Balance report, used by the balance command. | |||||||
| 
 | 
 | ||||||
| -} | -} | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| module Hledger.Reports.BalanceReport ( | module Hledger.Reports.BalanceReport ( | ||||||
|   BalanceReport, |   BalanceReport, | ||||||
|   BalanceReportItem, |   BalanceReportItem, | ||||||
| @ -38,12 +31,6 @@ import Hledger.Utils | |||||||
| import Hledger.Reports.ReportOptions | import Hledger.Reports.ReportOptions | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| -- | A simple single-column balance report. It has: | -- | A simple single-column balance report. It has: | ||||||
| -- | -- | ||||||
| -- 1. a list of rows, each containing a renderable account name and a corresponding amount | -- 1. a list of rows, each containing a renderable account name and a corresponding amount | ||||||
| @ -154,8 +141,8 @@ mixedAmountValue :: Journal -> Day -> MixedAmount -> MixedAmount | |||||||
| mixedAmountValue j d (Mixed as) = Mixed $ map (amountValue j d) as | mixedAmountValue j d (Mixed as) = Mixed $ map (amountValue j d) as | ||||||
| 
 | 
 | ||||||
| -- | Find the market value of this amount on the given date, in it's | -- | Find the market value of this amount on the given date, in it's | ||||||
| -- default valuation commodity, based on recorded market prices. | -- default valuation commodity, based on historical prices. If no | ||||||
| -- If no default valuation commodity can be found, the amount is left | -- default valuation commodity can be found, the amount is left | ||||||
| -- unchanged. | -- unchanged. | ||||||
| amountValue :: Journal -> Day -> Amount -> Amount | amountValue :: Journal -> Day -> Amount -> Amount | ||||||
| amountValue j d a = | amountValue j d a = | ||||||
| @ -168,7 +155,7 @@ amountValue j d a = | |||||||
| -- | Find the market value, if known, of one unit of this commodity on | -- | Find the market value, if known, of one unit of this commodity on | ||||||
| -- the given date, in the commodity in which it has most recently been | -- the given date, in the commodity in which it has most recently been | ||||||
| -- market-priced (ie the commodity mentioned in the most recent | -- market-priced (ie the commodity mentioned in the most recent | ||||||
| -- applicable market price directive before this date). | -- applicable historical price directive before this date). | ||||||
| commodityValue :: Journal -> Day -> CommoditySymbol -> Maybe Amount | commodityValue :: Journal -> Day -> CommoditySymbol -> Maybe Amount | ||||||
| commodityValue j d c | commodityValue j d c | ||||||
|     | null applicableprices = Nothing |     | null applicableprices = Nothing | ||||||
| @ -176,13 +163,6 @@ commodityValue j d c | |||||||
|   where |   where | ||||||
|     applicableprices = [p | p <- sort $ jmarketprices j, mpcommodity p == c, mpdate p <= d] |     applicableprices = [p | p <- sort $ jmarketprices j, mpcommodity p == c, mpdate p <= d] | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| tests_balanceReport = | tests_balanceReport = | ||||||
|   let |   let | ||||||
|     (opts,journal) `gives` r = do |     (opts,journal) `gives` r = do | ||||||
|  | |||||||
| @ -260,7 +260,6 @@ accountWizard EntryState{..} = do | |||||||
|                             | otherwise = Just t |                             | otherwise = Just t | ||||||
|       dbg1 = id -- strace |       dbg1 = id -- strace | ||||||
| 
 | 
 | ||||||
| amountAndCommentWizard :: EntryState -> Wizard Haskeline (Amount, Text) |  | ||||||
| amountAndCommentWizard EntryState{..} = do | amountAndCommentWizard EntryState{..} = do | ||||||
|   let pnum = length esPostings + 1 |   let pnum = length esPostings + 1 | ||||||
|       (mhistoricalp,followedhistoricalsofar) = |       (mhistoricalp,followedhistoricalsofar) = | ||||||
| @ -271,7 +270,7 @@ amountAndCommentWizard EntryState{..} = do | |||||||
|       def = case (esArgs, mhistoricalp, followedhistoricalsofar) of |       def = case (esArgs, mhistoricalp, followedhistoricalsofar) of | ||||||
|               (d:_,_,_)                                             -> d |               (d:_,_,_)                                             -> d | ||||||
|               (_,Just hp,True)                                      -> showamt $ pamount hp |               (_,Just hp,True)                                      -> showamt $ pamount hp | ||||||
|               _  | pnum > 1 && not (isZeroMixedAmount balancingamt) -> showamt balancingamtfirstcommodity |               _  | pnum > 1 && not (isZeroMixedAmount balancingamt) -> showamt balancingamt | ||||||
|               _                                                     -> "" |               _                                                     -> "" | ||||||
|   retryMsg "A valid hledger amount is required. Eg: 1, $2, 3 EUR, \"4 red apples\"." $ |   retryMsg "A valid hledger amount is required. Eg: 1, $2, 3 EUR, \"4 red apples\"." $ | ||||||
|    parser parseAmountAndComment $ |    parser parseAmountAndComment $ | ||||||
| @ -294,9 +293,7 @@ amountAndCommentWizard EntryState{..} = do | |||||||
|         -- eof |         -- eof | ||||||
|         return (a,c) |         return (a,c) | ||||||
|       balancingamt = negate $ sum $ map pamount realps where realps = filter isReal esPostings |       balancingamt = negate $ sum $ map pamount realps where realps = filter isReal esPostings | ||||||
|       balancingamtfirstcommodity = Mixed $ take 1 $ amounts balancingamt |       showamt = showMixedAmountWithPrecision | ||||||
|       showamt = |  | ||||||
|         showMixedAmountWithPrecision |  | ||||||
|                   -- what should this be ? |                   -- what should this be ? | ||||||
|                   -- 1 maxprecision (show all decimal places or none) ? |                   -- 1 maxprecision (show all decimal places or none) ? | ||||||
|                   -- 2 maxprecisionwithpoint (show all decimal places or .0 - avoids some but not all confusion with thousands separators) ? |                   -- 2 maxprecisionwithpoint (show all decimal places or .0 - avoids some but not all confusion with thousands separators) ? | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user