packages feed

hledger-lib 1.15.1 → 1.15.2

raw patch · 20 files changed

+288/−289 lines, 20 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Hledger.Data.Posting: postingApplyValuation :: PriceOracle -> Map CommoditySymbol AmountStyle -> Day -> Day -> Bool -> Posting -> ValuationType -> Posting
+ Hledger.Data.Posting: postingApplyValuation :: PriceOracle -> Map CommoditySymbol AmountStyle -> Day -> Maybe Day -> Day -> Bool -> Posting -> ValuationType -> Posting
- Hledger.Data.Valuation: mixedAmountApplyValuation :: PriceOracle -> Map CommoditySymbol AmountStyle -> Day -> Day -> Bool -> ValuationType -> MixedAmount -> MixedAmount
+ Hledger.Data.Valuation: mixedAmountApplyValuation :: PriceOracle -> Map CommoditySymbol AmountStyle -> Day -> Maybe Day -> Day -> Bool -> ValuationType -> MixedAmount -> MixedAmount

Files

CHANGES.md view
@@ -1,7 +1,14 @@ Internal/api/developer-ish changes in the hledger-lib (and hledger) packages. For user-visible changes, see the hledger package changelog. -# 16a3c96d+# 1.15.2 2019-09-05++Changes:++- postingApplyValuation, mixedAmountApplyValuation, amountApplyValuation+  take an argument, the report end date if one was specified.++# 1.15.1 2019-09-02  - fix failing doctests 
Hledger/Data/Posting.hs view
@@ -331,19 +331,20 @@   | otherwise = a aliasReplace (RegexAlias re repl) a = T.pack $ regexReplaceCIMemo re repl $ T.unpack a -- XXX --- Apply a specified valuation to this posting's amount, using the provided--- price oracle, commodity styles, period-end/current dates, and whether--- this is for a multiperiod report or not.-postingApplyValuation :: PriceOracle -> M.Map CommoditySymbol AmountStyle -> Day -> Day -> Bool -> Posting -> ValuationType -> Posting-postingApplyValuation priceoracle styles periodend today ismultiperiod p v =+-- | Apply a specified valuation to this posting's amount, using the+-- provided price oracle, commodity styles, reference dates, and+-- whether this is for a multiperiod report or not. See+-- amountApplyValuation.+postingApplyValuation :: PriceOracle -> M.Map CommoditySymbol AmountStyle -> Day -> Maybe Day -> Day -> Bool -> Posting -> ValuationType -> Posting+postingApplyValuation priceoracle styles periodlast mreportlast today ismultiperiod p v =   case v of     AtCost    Nothing            -> postingToCost styles p-    AtCost    mc                 -> postingValueAtDate priceoracle styles mc periodend $ postingToCost styles p-    AtEnd     mc                 -> postingValueAtDate priceoracle styles mc periodend p-    AtNow     mc                 -> postingValueAtDate priceoracle styles mc today     p-    AtDefault mc | ismultiperiod -> postingValueAtDate priceoracle styles mc periodend p-    AtDefault mc                 -> postingValueAtDate priceoracle styles mc today     p-    AtDate d  mc                 -> postingValueAtDate priceoracle styles mc d         p+    AtCost    mc                 -> postingValueAtDate priceoracle styles mc periodlast $ postingToCost styles p+    AtEnd     mc                 -> postingValueAtDate priceoracle styles mc periodlast p+    AtNow     mc                 -> postingValueAtDate priceoracle styles mc today p+    AtDefault mc | ismultiperiod -> postingValueAtDate priceoracle styles mc periodlast p+    AtDefault mc                 -> postingValueAtDate priceoracle styles mc (fromMaybe today mreportlast) p+    AtDate d  mc                 -> postingValueAtDate priceoracle styles mc d p  -- | Convert this posting's amount to cost, and apply the appropriate amount styles. postingToCost :: M.Map CommoditySymbol AmountStyle -> Posting -> Posting
Hledger/Data/Valuation.hs view
@@ -97,26 +97,52 @@ ------------------------------------------------------------------------------ -- Valuation --- | Apply a specified valuation to this mixed amount, using the provided--- price oracle, commodity styles, period-end/current dates,--- and whether this is for a multiperiod report or not.-mixedAmountApplyValuation :: PriceOracle -> M.Map CommoditySymbol AmountStyle -> Day -> Day -> Bool -> ValuationType -> MixedAmount -> MixedAmount-mixedAmountApplyValuation priceoracle styles periodend today ismultiperiod v (Mixed as) =-  Mixed $ map (amountApplyValuation priceoracle styles periodend today ismultiperiod v) as+-- | Apply a specified valuation to this mixed amount, using the+-- provided price oracle, commodity styles, reference dates, and+-- whether this is for a multiperiod report or not.+-- See amountApplyValuation.+mixedAmountApplyValuation :: PriceOracle -> M.Map CommoditySymbol AmountStyle -> Day -> Maybe Day -> Day -> Bool -> ValuationType -> MixedAmount -> MixedAmount+mixedAmountApplyValuation priceoracle styles periodlast mreportlast today ismultiperiod v (Mixed as) =+  Mixed $ map (amountApplyValuation priceoracle styles periodlast mreportlast today ismultiperiod v) as  -- | Apply a specified valuation to this amount, using the provided--- price oracle, commodity styles, period-end/current dates,--- and whether this is for a multiperiod report or not.-amountApplyValuation :: PriceOracle -> M.Map CommoditySymbol AmountStyle -> Day -> Day -> Bool -> ValuationType -> Amount -> Amount-amountApplyValuation priceoracle styles periodend today ismultiperiod v a =+-- price oracle, reference dates, and whether this is for a+-- multiperiod report or not. Also fix up its display style using the+-- provided commodity styles.+--+-- When the valuation requires converting to another commodity, a+-- valuation (conversion) date is chosen based on the valuation type,+-- the provided reference dates, and whether this is for a+-- single-period or multi-period report. It will be one of:+--+-- - a fixed date specified by the ValuationType itself+--   (--value=DATE).+-- +-- - the provided "period end" date - this is typically the last day+--   of a subperiod (--value=end with a multi-period report), or of+--   the specified report period or the journal (--value=end with a+--   single-period report).+--+-- - the provided "report end" date - the last day of the specified+--   report period, if any (-V/-X with a report end date).+--+-- - the provided "today" date - (--value=now, or -V/X with no report+--   end date).+-- +-- This is all a bit complicated. See the reference doc at+-- https://hledger.org/hledger.html#effect-of-value-on-reports+-- (hledger_options.m4.md "Effect of --value on reports"), and #1083.+--+amountApplyValuation :: PriceOracle -> M.Map CommoditySymbol AmountStyle -> Day -> Maybe Day -> Day -> Bool -> ValuationType -> Amount -> Amount+amountApplyValuation priceoracle styles periodlast mreportlast today ismultiperiod v a =   case v of     AtCost    Nothing            -> amountToCost styles a-    AtCost    mc                 -> amountValueAtDate priceoracle styles mc periodend $ amountToCost styles a-    AtEnd     mc                 -> amountValueAtDate priceoracle styles mc periodend a-    AtNow     mc                 -> amountValueAtDate priceoracle styles mc today     a-    AtDefault mc | ismultiperiod -> amountValueAtDate priceoracle styles mc periodend a-    AtDefault mc                 -> amountValueAtDate priceoracle styles mc today     a-    AtDate d  mc                 -> amountValueAtDate priceoracle styles mc d         a+    AtCost    mc                 -> amountValueAtDate priceoracle styles mc periodlast $ amountToCost styles a+    AtEnd     mc                 -> amountValueAtDate priceoracle styles mc periodlast a+    AtNow     mc                 -> amountValueAtDate priceoracle styles mc today a+    AtDefault mc | ismultiperiod -> amountValueAtDate priceoracle styles mc periodlast a+    AtDefault mc                 -> amountValueAtDate priceoracle styles mc (fromMaybe today mreportlast) a+    AtDate d  mc                 -> amountValueAtDate priceoracle styles mc d a  -- | Find the market value of each component amount in the given -- commodity, or its default valuation commodity, at the given
Hledger/Reports/BalanceReport.hs view
@@ -71,25 +71,24 @@       -- dbg1 = const id -- exclude from debug output       dbg1 s = let p = "balanceReport" in Hledger.Utils.dbg1 (p++" "++s)  -- add prefix in debug output -      today = fromMaybe (error' "balanceReport: ReportOpts today_ is unset so could not satisfy --value=now") today_-      multiperiod = interval_ /= NoInterval-      styles = journalCommodityStyles j-       -- Get all the summed accounts & balances, according to the query, as an account tree.       -- If doing cost valuation, amounts will be converted to cost first.       accttree = ledgerRootAccount $ ledgerFromJournal q $ journalSelectingAmountFromOpts ropts j -      -- For other kinds of valuation, convert the summed amounts to value.-      priceoracle = journalPriceOracle j-      valuedaccttree = mapAccounts valueaccount accttree+      -- For other kinds of valuation, convert the summed amounts to value,+      -- per hledger_options.m4.md "Effect of --value on reports".+      valuedaccttree = mapAccounts avalue accttree         where-          valueaccount a@Account{..} = a{aebalance=val aebalance, aibalance=val aibalance}+          avalue a@Account{..} = a{aebalance=bvalue aebalance, aibalance=bvalue aibalance}             where-              val = maybe id (mixedAmountApplyValuation priceoracle styles periodlastday today multiperiod) value_+              bvalue = maybe id (mixedAmountApplyValuation (journalPriceOracle j) (journalCommodityStyles j) periodlast mreportlast today multiperiod) value_                 where-                  periodlastday =+                  periodlast =                     fromMaybe (error' "balanceReport: expected a non-empty journal") $ -- XXX shouldn't happen                     reportPeriodOrJournalLastDay ropts j+                  mreportlast = reportPeriodLastDay ropts+                  today = fromMaybe (error' "balanceReport: could not pick a valuation date, ReportOpts today_ is unset") today_+                  multiperiod = interval_ /= NoInterval        -- Modify this tree for display - depth limit, boring parents, zeroes - and convert to a list.       displayaccts :: [Account]
Hledger/Reports/EntriesReport.hs view
@@ -14,11 +14,9 @@ ) where -import Control.Applicative ((<|>)) import Data.List import Data.Maybe import Data.Ord-import Data.Time.Calendar (Day, addDays)  import Hledger.Data import Hledger.Query@@ -35,28 +33,19 @@ -- | Select transactions for an entries report. entriesReport :: ReportOpts -> Query -> Journal -> EntriesReport entriesReport ropts@ReportOpts{..} q j@Journal{..} =-  sortBy (comparing datefn) $ filter (q `matchesTransaction`) $ map tvalue jtxns+  sortBy (comparing getdate) $ filter (q `matchesTransaction`) $ map tvalue jtxns   where-    datefn = transactionDateFn ropts-    styles = journalCommodityStyles j+    getdate = transactionDateFn ropts+    -- We may be converting posting amounts to value, per hledger_options.m4.md "Effect of --value on reports".     tvalue t@Transaction{..} = t{tpostings=map pvalue tpostings}-    priceoracle = journalPriceOracle j-    pvalue p = maybe p (postingApplyValuation priceoracle styles end today False p) value_       where-        today  = fromMaybe (error' "erValue: ReportOpts today_ is unset so could not satisfy --value=now") today_-        end    = fromMaybe (postingDate p) mperiodorjournallastday+        pvalue p = maybe p+          (postingApplyValuation (journalPriceOracle j) (journalCommodityStyles j) periodlast mreportlast today False p)+          value_           where-            mperiodorjournallastday = mperiodlastday <|> journalEndDate False j-              where-                -- The last day of the report period.-                -- Will be Nothing if no report period is specified, or also-                -- if ReportOpts does not have today_ set, since we need that-                -- to get the report period robustly.-                mperiodlastday :: Maybe Day = do-                  t <- today_-                  let q = queryFromOpts t ropts-                  qend <- queryEndDate False q-                  return $ addDays (-1) qend+            periodlast  = fromMaybe today $ reportPeriodOrJournalLastDay ropts j+            mreportlast = reportPeriodLastDay ropts+            today       = fromMaybe (error' "erValue: could not pick a valuation date, ReportOpts today_ is unset") today_  -- should not happen  tests_EntriesReport = tests "EntriesReport" [   tests "entriesReport" [
Hledger/Reports/MultiBalanceReport.hs view
@@ -245,9 +245,6 @@       -- 6. Build the report rows.        -- One row per account, with account name info, row amounts, row total and row average.-      -- Row amounts are converted to value if that has been requested.-      -- Row total/average are always simply the sum/average of the row amounts.-      multiperiod = interval_ /= NoInterval       rows :: [MultiBalanceReportRow] =           dbg1 "rows" $           [(a, accountLeafName a, accountNameLevel a, valuedrowbals, rowtot, rowavg)@@ -259,38 +256,25 @@                    PeriodChange      -> changes                    CumulativeChange  -> drop 1 $ scanl (+) 0                      changes                    HistoricalBalance -> drop 1 $ scanl (+) (startingBalanceFor a) changes-             -- The row amounts valued according to --value if needed.-           , let val end = maybe id (mixedAmountApplyValuation priceoracle styles end today multiperiod) value_-           , let valuedrowbals = dbg1 "valuedrowbals" $ [val periodlastday amt | (amt,periodlastday) <- zip rowbals lastdays]-             -- The total and average for the row, and their values.+             -- We may be converting amounts to value, per hledger_options.m4.md "Effect of --value on reports".+           , let valuedrowbals = dbg1 "valuedrowbals" $ [avalue periodlastday amt | (amt,periodlastday) <- zip rowbals lastdays]+             -- The total and average for the row.+             -- These are always simply the sum/average of the displayed row amounts.              -- Total for a cumulative/historical report is always zero.            , let rowtot = if balancetype_==PeriodChange then sum valuedrowbals else 0            , let rowavg = averageMixedAmounts valuedrowbals            , empty_ || depth == 0 || any (not . isZeroMixedAmount) valuedrowbals            ]         where-          -- Some things needed if doing valuation.-          -- Here's the current intended effect of --value on each part of the report:-          --  -H/--historical starting balances:-          --   cost: summed cost of previous postings-          --   end:  historical starting balances valued at day before report start-          --   date: historical starting balances valued at date-          --  table cells:-          --   cost: summed costs of postings-          --   end:  summed postings, valued at subperiod end-          --   date: summed postings, valued at date-          --  column totals:-          --   cost: summed column amounts-          --   end:  summed column amounts-          --   date: summed column amounts-          --  row totals & averages, grand total & average:-          --   cost: summed/averaged row amounts-          --   end:  summed/averaged row amounts-          --   date: summed/averaged row amounts-          today = fromMaybe (error' "multiBalanceReport: ReportOpts today_ is unset so could not satisfy --value=now") today_  -- XXX shouldn't error if not needed, eg valuation type is AtDate-          -- Market prices, commodity display styles.-          styles = journalCommodityStyles j-          -- The last day of each column subperiod.+          avalue periodlast =+            maybe id (mixedAmountApplyValuation priceoracle styles periodlast mreportlast today multiperiod) value_+            where+              -- Some things needed if doing valuation.+              styles = journalCommodityStyles j+              mreportlast = reportPeriodLastDay ropts+              today = fromMaybe (error' "multiBalanceReport: could not pick a valuation date, ReportOpts today_ is unset") today_  -- XXX shouldn't happen+              multiperiod = interval_ /= NoInterval+          -- The last day of each column's subperiod.           lastdays =             map ((maybe                   (error' "multiBalanceReport: expected all spans to have an end date")  -- XXX should not happen
Hledger/Reports/PostingsReport.hs view
@@ -70,67 +70,60 @@ postingsReport ropts@ReportOpts{..} q j@Journal{..} =   (totallabel, items)     where-      reportspan = adjustReportDates ropts q j-      whichdate = whichDateFromOpts ropts-      depth = queryDepth q-      styles = journalCommodityStyles j+      reportspan  = adjustReportDates ropts q j+      whichdate   = whichDateFromOpts ropts+      depth       = queryDepth q+      styles      = journalCommodityStyles j+      priceoracle = journalPriceOracle j+      multiperiod = interval_ /= NoInterval+      today       = fromMaybe (error' "postingsReport: could not pick a valuation date, ReportOpts today_ is unset") today_        -- postings to be included in the report, and similarly-matched postings before the report start date       (precedingps, reportps) = matchedPostingsBeforeAndDuring ropts q j reportspan -      -- We may be converting amounts to value.-      -- Currently this is done as follows (keep synced with hledger_options.m4.md):-      --  register -M --value-      --   cost: value each posting at cost, then summarise ; value -H starting balance at cost-      --   end:  value each summary posting at period end   ; value -H starting balance at day before report start-      --   date: value each summary posting at date         ; value -H starting balance at date-      --  register --value-      --   cost: value each posting at cost                 ; value -H starting balance at cost-      --   end:  value each posting at report end           ; value -H starting balance at day before report start-      --   date: value each posting at date                 ; value -H starting balance at date-      ---      --  In all cases, the running total/average is calculated from the above numbers.-      --  "Day before report start" is a bit arbitrary.-      today =-        fromMaybe (error' "postingsReport: ReportOpts today_ is unset so could not satisfy --value=now")-        today_-      reportperiodlastday =-        fromMaybe (error' "postingsReport: expected a non-empty journal") $ -- XXX shouldn't happen-        reportPeriodOrJournalLastDay ropts j-      multiperiod = interval_ /= NoInterval-      showempty = empty_ || average_-      priceoracle = journalPriceOracle j-      pvalue p end = maybe p (postingApplyValuation priceoracle styles end today multiperiod p) value_-       -- Postings, or summary postings with their subperiod's end date, to be displayed.       displayps :: [(Posting, Maybe Day)]         | multiperiod =             let summaryps = summarisePostingsByInterval interval_ whichdate depth showempty reportspan reportps             in [(pvalue p lastday, Just periodend) | (p, periodend) <- summaryps, let lastday = addDays (-1) periodend]         | otherwise =-            [(pvalue p reportperiodlastday, Nothing) | p <- reportps]+            [(pvalue p reportorjournallast, Nothing) | p <- reportps]+        where+          showempty = empty_ || average_+          -- We may be converting posting amounts to value, per hledger_options.m4.md "Effect of --value on reports".+          pvalue p periodlast = maybe p (postingApplyValuation priceoracle styles periodlast mreportlast today multiperiod p) value_+            where+              mreportlast = reportPeriodLastDay ropts+          reportorjournallast =+            fromMaybe (error' "postingsReport: expected a non-empty journal") $ -- XXX shouldn't happen+            reportPeriodOrJournalLastDay ropts j -      -- posting report items ready for display-      items = dbg1 "postingsReport items" $ postingsReportItems displayps (nullposting,Nothing) whichdate depth startbalvalued runningcalc startnum+      -- Posting report items ready for display.+      items =+        dbg1 "postingsReport items" $+        postingsReportItems displayps (nullposting,Nothing) whichdate depth startbal runningcalc startnum         where+          -- In historical mode we'll need a starting balance, which we+          -- may be converting to value per hledger_options.m4.md "Effect+          -- of --value on reports".+          -- XXX balance report doesn't value starting balance.. should this ?           historical = balancetype_ == HistoricalBalance-          precedingsum = sumPostings precedingps-          precedingavg | null precedingps = 0-                       | otherwise        = divideMixedAmount (fromIntegral $ length precedingps) precedingsum-          startbal | average_  = if historical then precedingavg else 0-                   | otherwise = if historical then precedingsum else 0-          -- For --value=end/now/DATE, convert the initial running total/average to value.-          startbalvalued = val startbal+          startbal | average_  = if historical then bvalue precedingavg else 0+                   | otherwise = if historical then bvalue precedingsum else 0             where-              val = maybe id (mixedAmountApplyValuation priceoracle styles daybeforereportstart today multiperiod) value_+              precedingsum = sumPostings precedingps+              precedingavg | null precedingps = 0+                           | otherwise        = divideMixedAmount (fromIntegral $ length precedingps) precedingsum+              bvalue = maybe id (mixedAmountApplyValuation priceoracle styles daybeforereportstart Nothing today multiperiod) value_+                  -- XXX constrain valuation type to AtDate daybeforereportstart here ?                 where-                  daybeforereportstart = maybe-                                         (error' "postingsReport: expected a non-empty journal") -- XXX shouldn't happen-                                         (addDays (-1))-                                         $ reportPeriodOrJournalStart ropts j+                  daybeforereportstart =+                    maybe (error' "postingsReport: expected a non-empty journal") -- XXX shouldn't happen+                    (addDays (-1))+                    $ reportPeriodOrJournalStart ropts j -          startnum = if historical then length precedingps + 1 else 1           runningcalc = registerRunningCalculationFn ropts+          startnum = if historical then length precedingps + 1 else 1  -- | Based on the given report options, return a function that does the appropriate -- running calculation for the register report, ie a running average or running total.
hledger-lib.cabal view
@@ -4,10 +4,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: f27fe6795990dd3740ec4ca8e421ad8faaf22945809a16448fcf4d5ac0174165+-- hash: 567ed725b211714a0f6db5e17a68d670789c7e603020b42d6b8f18e7af5ceb63  name:           hledger-lib-version:        1.15.1+version:        1.15.2 synopsis:       Core data types, parsers and functionality for the hledger accounting tools description:    This is a reusable library containing hledger's core functionality.                 .
hledger_csv.5 view
@@ -1,5 +1,5 @@ -.TH "hledger_csv" "5" "August 2019" "hledger 1.15" "hledger User Manuals"+.TH "hledger_csv" "5" "September 2019" "hledger 1.15.2" "hledger User Manuals"   
hledger_csv.info view
@@ -3,8 +3,8 @@  File: hledger_csv.info,  Node: Top,  Next: CSV RULES,  Up: (dir) -hledger_csv(5) hledger 1.15-***************************+hledger_csv(5) hledger 1.15.2+*****************************  hledger can read CSV (comma-separated value) files as if they were journal files, automatically converting each CSV record into a@@ -350,35 +350,35 @@  Tag Table: Node: Top72-Node: CSV RULES2161-Ref: #csv-rules2269-Node: skip2532-Ref: #skip2626-Node: date-format2798-Ref: #date-format2925-Node: field list3475-Ref: #field-list3612-Node: field assignment4342-Ref: #field-assignment4497-Node: conditional block5121-Ref: #conditional-block5275-Node: include6171-Ref: #include6301-Node: newest-first6532-Ref: #newest-first6646-Node: CSV TIPS7057-Ref: #csv-tips7151-Node: CSV ordering7295-Ref: #csv-ordering7413-Node: CSV accounts7594-Ref: #csv-accounts7732-Node: CSV amounts7986-Ref: #csv-amounts8144-Node: CSV balance assertions/assignments9224-Ref: #csv-balance-assertionsassignments9442-Node: Reading multiple CSV files9763-Ref: #reading-multiple-csv-files9963-Node: Valid CSV10237-Ref: #valid-csv10360+Node: CSV RULES2165+Ref: #csv-rules2273+Node: skip2536+Ref: #skip2630+Node: date-format2802+Ref: #date-format2929+Node: field list3479+Ref: #field-list3616+Node: field assignment4346+Ref: #field-assignment4501+Node: conditional block5125+Ref: #conditional-block5279+Node: include6175+Ref: #include6305+Node: newest-first6536+Ref: #newest-first6650+Node: CSV TIPS7061+Ref: #csv-tips7155+Node: CSV ordering7299+Ref: #csv-ordering7417+Node: CSV accounts7598+Ref: #csv-accounts7736+Node: CSV amounts7990+Ref: #csv-amounts8148+Node: CSV balance assertions/assignments9228+Ref: #csv-balance-assertionsassignments9446+Node: Reading multiple CSV files9767+Ref: #reading-multiple-csv-files9967+Node: Valid CSV10241+Ref: #valid-csv10364  End Tag Table
hledger_csv.txt view
@@ -276,4 +276,4 @@   -hledger 1.15                      August 2019                   hledger_csv(5)+hledger 1.15.2                  September 2019                  hledger_csv(5)
hledger_journal.5 view
@@ -1,6 +1,6 @@ .\"t -.TH "hledger_journal" "5" "August 2019" "hledger 1.15" "hledger User Manuals"+.TH "hledger_journal" "5" "September 2019" "hledger 1.15.2" "hledger User Manuals"   
hledger_journal.info view
@@ -4,8 +4,8 @@  File: hledger_journal.info,  Node: Top,  Next: FILE FORMAT,  Up: (dir) -hledger_journal(5) hledger 1.15-*******************************+hledger_journal(5) hledger 1.15.2+*********************************  hledger's usual data source is a plain text file containing journal entries in hledger journal format.  This file represents a standard@@ -1668,113 +1668,113 @@  Tag Table: Node: Top76-Node: FILE FORMAT2352-Ref: #file-format2476-Node: Transactions2779-Ref: #transactions2900-Node: Postings3584-Ref: #postings3711-Node: Dates4706-Ref: #dates4821-Node: Simple dates4886-Ref: #simple-dates5012-Node: Secondary dates5378-Ref: #secondary-dates5532-Node: Posting dates7095-Ref: #posting-dates7224-Node: Status8596-Ref: #status8716-Node: Description10424-Ref: #description10562-Node: Payee and note10882-Ref: #payee-and-note10996-Node: Account names11331-Ref: #account-names11474-Node: Amounts11961-Ref: #amounts12097-Node: Virtual Postings15114-Ref: #virtual-postings15273-Node: Balance Assertions16493-Ref: #balance-assertions16668-Node: Assertions and ordering17627-Ref: #assertions-and-ordering17813-Node: Assertions and included files18513-Ref: #assertions-and-included-files18754-Node: Assertions and multiple -f options19087-Ref: #assertions-and-multiple--f-options19341-Node: Assertions and commodities19473-Ref: #assertions-and-commodities19703-Node: Assertions and prices20859-Ref: #assertions-and-prices21071-Node: Assertions and subaccounts21511-Ref: #assertions-and-subaccounts21738-Node: Assertions and virtual postings22062-Ref: #assertions-and-virtual-postings22302-Node: Assertions and precision22444-Ref: #assertions-and-precision22635-Node: Balance Assignments22902-Ref: #balance-assignments23083-Node: Balance assignments and prices24248-Ref: #balance-assignments-and-prices24420-Node: Transaction prices24644-Ref: #transaction-prices24813-Node: Comments27079-Ref: #comments27213-Node: Tags28383-Ref: #tags28501-Node: Directives29894-Ref: #directives30037-Node: Comment blocks35645-Ref: #comment-blocks35790-Node: Including other files35966-Ref: #including-other-files36146-Node: Default year36554-Ref: #default-year36723-Node: Declaring commodities37130-Ref: #declaring-commodities37313-Node: Default commodity38742-Ref: #default-commodity38918-Node: Market prices39552-Ref: #market-prices39717-Node: Declaring accounts40558-Ref: #declaring-accounts40734-Node: Account comments41659-Ref: #account-comments41822-Node: Account subdirectives42217-Ref: #account-subdirectives42412-Node: Account types42725-Ref: #account-types42909-Node: Account display order44551-Ref: #account-display-order44721-Node: Rewriting accounts45850-Ref: #rewriting-accounts46035-Node: Basic aliases46771-Ref: #basic-aliases46917-Node: Regex aliases47621-Ref: #regex-aliases47793-Node: Combining aliases48511-Ref: #combining-aliases48689-Node: end aliases49965-Ref: #end-aliases50113-Node: Default parent account50214-Ref: #default-parent-account50380-Node: Periodic transactions51264-Ref: #periodic-transactions51462-Node: Two spaces after the period expression52588-Ref: #two-spaces-after-the-period-expression52833-Node: Forecasting with periodic transactions53318-Ref: #forecasting-with-periodic-transactions53608-Node: Budgeting with periodic transactions55634-Ref: #budgeting-with-periodic-transactions55873-Node: Auto postings / transaction modifiers56332-Ref: #auto-postings-transaction-modifiers56543-Node: Auto postings and dates58772-Ref: #auto-postings-and-dates59029-Node: Auto postings and transaction balancing / inferred amounts / balance assertions59204-Ref: #auto-postings-and-transaction-balancing-inferred-amounts-balance-assertions59579-Node: Auto posting tags59957-Ref: #auto-posting-tags60196-Node: EDITOR SUPPORT60861-Ref: #editor-support60979+Node: FILE FORMAT2356+Ref: #file-format2480+Node: Transactions2783+Ref: #transactions2904+Node: Postings3588+Ref: #postings3715+Node: Dates4710+Ref: #dates4825+Node: Simple dates4890+Ref: #simple-dates5016+Node: Secondary dates5382+Ref: #secondary-dates5536+Node: Posting dates7099+Ref: #posting-dates7228+Node: Status8600+Ref: #status8720+Node: Description10428+Ref: #description10566+Node: Payee and note10886+Ref: #payee-and-note11000+Node: Account names11335+Ref: #account-names11478+Node: Amounts11965+Ref: #amounts12101+Node: Virtual Postings15118+Ref: #virtual-postings15277+Node: Balance Assertions16497+Ref: #balance-assertions16672+Node: Assertions and ordering17631+Ref: #assertions-and-ordering17817+Node: Assertions and included files18517+Ref: #assertions-and-included-files18758+Node: Assertions and multiple -f options19091+Ref: #assertions-and-multiple--f-options19345+Node: Assertions and commodities19477+Ref: #assertions-and-commodities19707+Node: Assertions and prices20863+Ref: #assertions-and-prices21075+Node: Assertions and subaccounts21515+Ref: #assertions-and-subaccounts21742+Node: Assertions and virtual postings22066+Ref: #assertions-and-virtual-postings22306+Node: Assertions and precision22448+Ref: #assertions-and-precision22639+Node: Balance Assignments22906+Ref: #balance-assignments23087+Node: Balance assignments and prices24252+Ref: #balance-assignments-and-prices24424+Node: Transaction prices24648+Ref: #transaction-prices24817+Node: Comments27083+Ref: #comments27217+Node: Tags28387+Ref: #tags28505+Node: Directives29898+Ref: #directives30041+Node: Comment blocks35649+Ref: #comment-blocks35794+Node: Including other files35970+Ref: #including-other-files36150+Node: Default year36558+Ref: #default-year36727+Node: Declaring commodities37134+Ref: #declaring-commodities37317+Node: Default commodity38746+Ref: #default-commodity38922+Node: Market prices39556+Ref: #market-prices39721+Node: Declaring accounts40562+Ref: #declaring-accounts40738+Node: Account comments41663+Ref: #account-comments41826+Node: Account subdirectives42221+Ref: #account-subdirectives42416+Node: Account types42729+Ref: #account-types42913+Node: Account display order44555+Ref: #account-display-order44725+Node: Rewriting accounts45854+Ref: #rewriting-accounts46039+Node: Basic aliases46775+Ref: #basic-aliases46921+Node: Regex aliases47625+Ref: #regex-aliases47797+Node: Combining aliases48515+Ref: #combining-aliases48693+Node: end aliases49969+Ref: #end-aliases50117+Node: Default parent account50218+Ref: #default-parent-account50384+Node: Periodic transactions51268+Ref: #periodic-transactions51466+Node: Two spaces after the period expression52592+Ref: #two-spaces-after-the-period-expression52837+Node: Forecasting with periodic transactions53322+Ref: #forecasting-with-periodic-transactions53612+Node: Budgeting with periodic transactions55638+Ref: #budgeting-with-periodic-transactions55877+Node: Auto postings / transaction modifiers56336+Ref: #auto-postings-transaction-modifiers56547+Node: Auto postings and dates58776+Ref: #auto-postings-and-dates59033+Node: Auto postings and transaction balancing / inferred amounts / balance assertions59208+Ref: #auto-postings-and-transaction-balancing-inferred-amounts-balance-assertions59583+Node: Auto posting tags59961+Ref: #auto-posting-tags60200+Node: EDITOR SUPPORT60865+Ref: #editor-support60983  End Tag Table
hledger_journal.txt view
@@ -1362,4 +1362,4 @@   -hledger 1.15                      August 2019               hledger_journal(5)+hledger 1.15.2                  September 2019              hledger_journal(5)
hledger_timeclock.5 view
@@ -1,5 +1,5 @@ -.TH "hledger_timeclock" "5" "August 2019" "hledger 1.15" "hledger User Manuals"+.TH "hledger_timeclock" "5" "September 2019" "hledger 1.15.2" "hledger User Manuals"   
hledger_timeclock.info view
@@ -4,8 +4,8 @@  File: hledger_timeclock.info,  Node: Top,  Up: (dir) -hledger_timeclock(5) hledger 1.15-*********************************+hledger_timeclock(5) hledger 1.15.2+***********************************  hledger can read timeclock files.  As with Ledger, these are (a subset of) timeclock.el's format, containing clock-in and clock-out entries as
hledger_timeclock.txt view
@@ -78,4 +78,4 @@   -hledger 1.15                      August 2019             hledger_timeclock(5)+hledger 1.15.2                  September 2019            hledger_timeclock(5)
hledger_timedot.5 view
@@ -1,5 +1,5 @@ -.TH "hledger_timedot" "5" "August 2019" "hledger 1.15" "hledger User Manuals"+.TH "hledger_timedot" "5" "September 2019" "hledger 1.15.2" "hledger User Manuals"   
hledger_timedot.info view
@@ -4,8 +4,8 @@  File: hledger_timedot.info,  Node: Top,  Next: FILE FORMAT,  Up: (dir) -hledger_timedot(5) hledger 1.15-*******************************+hledger_timedot(5) hledger 1.15.2+*********************************  Timedot is a plain text format for logging dated, categorised quantities (of time, usually), supported by hledger.  It is convenient for@@ -111,7 +111,7 @@  Tag Table: Node: Top76-Node: FILE FORMAT808-Ref: #file-format909+Node: FILE FORMAT812+Ref: #file-format913  End Tag Table
hledger_timedot.txt view
@@ -124,4 +124,4 @@   -hledger 1.15                      August 2019               hledger_timedot(5)+hledger 1.15.2                  September 2019              hledger_timedot(5)