diff --git a/hledger/Hledger/Cli/Commands/Close.hs b/hledger/Hledger/Cli/Commands/Close.hs index b700b4175..f0ed9756d 100755 --- a/hledger/Hledger/Cli/Commands/Close.hs +++ b/hledger/Hledger/Cli/Commands/Close.hs @@ -73,16 +73,37 @@ close CliOpts{rawopts_=rawopts, reportspec_=rspec} j = do (Nothing, Nothing) -> (T.pack defclosingacct, T.pack defopeningacct) -- dates of the closing and opening transactions - rspec_ = rspec{rsOpts=ropts} - ropts = (rsOpts rspec){balancetype_=HistoricalBalance, accountlistmode_=ALFlat} + -- + -- Close.md: + -- "The default closing date is yesterday, or the journal's end date, whichever is later. + -- + -- Unless you are running `close` on exactly the first day of the new period, + -- you'll want to override the closing date. + -- This is done by specifying a [report period](#report-start--end-date), + -- where "last day of the report period" will be the closing date. + -- The opening date is always the following day. + -- So to close on 2020-12-31 and open on 2021-01-01, any of these work + -- + -- - `-p 2020` + -- - `date:2020` + -- - `-e 2021-01-01` (remember `-e` specifies an exclusive report end date) + -- - `-e 2021`" + -- q = rsQuery rspec - openingdate = fromMaybe today $ queryEndDate False q - closingdate = addDays (-1) openingdate + yesterday = addDays (-1) today + yesterdayorjournalend = case journalLastDay False j of + Just journalend -> max yesterday journalend + Nothing -> yesterday + mreportlastday = addDays (-1) <$> queryEndDate False q + closingdate = fromMaybe yesterdayorjournalend mreportlastday + openingdate = addDays 1 closingdate -- should we show the amount(s) on the equity posting(s) ? explicit = boolopt "explicit" rawopts -- the balances to close + ropts = (rsOpts rspec){balancetype_=HistoricalBalance, accountlistmode_=ALFlat} + rspec_ = rspec{rsOpts=ropts} (acctbals',_) = balanceReport rspec_ j acctbals = map (\(a,_,_,b) -> (a, if show_costs_ ropts then b else mixedAmountStripPrices b)) acctbals' totalamt = maSum $ map snd acctbals diff --git a/hledger/test/close.test b/hledger/test/close.test index 9d86d4bee..9587dbc22 100644 --- a/hledger/test/close.test +++ b/hledger/test/close.test @@ -303,3 +303,16 @@ $ hledger -f- close -p 2019 assets --interleaved -x equity:opening/closing balances $-0.109999 >=0 + +# 14. "The default closing date is yesterday, or the journal's end date, whichever is later." +< +999999-12-31 + (a) 1 +$ hledger -f- close +> /999999-12-31 closing balances/ +>= + +# 15. "override the closing date ... by specifying a report period, where last day of the report period will be the closing date" +$ hledger -f- close -e 100000-01-01 +> /99999-12-31 closing balances/ +>=