cli: "close" can print only opening or closing transaction
This commit is contained in:
		
							parent
							
								
									855bd54d19
								
							
						
					
					
						commit
						bda202e4d4
					
				| @ -7,11 +7,13 @@ module Hledger.Cli.Commands.Close ( | ||||
| )  | ||||
| where | ||||
| 
 | ||||
| import Control.Monad (when) | ||||
| import Data.Maybe | ||||
| import Data.String.Here | ||||
| import Data.Time.Calendar | ||||
| import Hledger | ||||
| import Hledger.Cli.CliOptions | ||||
| import System.Console.CmdArgs.Explicit as C | ||||
| 
 | ||||
| closemode = hledgerCommandMode | ||||
|   [here| close equity | ||||
| @ -40,6 +42,9 @@ calculated as of end of yesterday, and the opening transaction is dated today. | ||||
| To close on some other date, use: `hledger close -e OPENINGDATE ...`. | ||||
| (-p or date: can also be used, the begin date is ignored.) | ||||
| 
 | ||||
| You can chose to print just one of the transactions with `--opening`  | ||||
| or `--closing`. | ||||
| 
 | ||||
| For example, carrying asset/liability balances into a new file for 2018: | ||||
| ``` | ||||
| $ hledger close -f 2017.journal -e 2018/1/1 ^assets ^liab >>2017.journal | ||||
| @ -58,14 +63,20 @@ closing at end of 2017: | ||||
|     assets:bank:checking  -1  ; date:2018/1/1 | ||||
| ``` | ||||
|   |] | ||||
|   [] | ||||
|   [flagNone ["opening"] (\opts -> setboolopt "opening" opts) "show just opening transaction" | ||||
|   ,flagNone ["closing"] (\opts -> setboolopt "closing" opts) "show just closing transaction" | ||||
|   ] | ||||
|   [generalflagsgroup1] | ||||
|   [] | ||||
|   ([], Just $ argsFlag "[QUERY]") | ||||
| 
 | ||||
| close CliOpts{reportopts_=ropts} j = do | ||||
| close CliOpts{rawopts_=rawopts, reportopts_=ropts} j = do | ||||
|   today <- getCurrentDay | ||||
|   let  | ||||
|       (opening, closing) =  | ||||
|         case (boolopt "opening" rawopts, boolopt "closing" rawopts) of | ||||
|           (False, False) -> (True, True) -- by default show both opening and closing | ||||
|           (o, c) -> (o, c) | ||||
|       ropts_ = ropts{balancetype_=HistoricalBalance, accountlistmode_=ALFlat} | ||||
|       q = queryFromOpts today ropts_ | ||||
|       openingdate = fromMaybe today $ queryEndDate False q | ||||
| @ -88,5 +99,6 @@ close CliOpts{reportopts_=ropts} j = do | ||||
|             ,b <- amounts $ normaliseMixedAmountSquashPricesForDisplay mb | ||||
|             ] | ||||
|            ++ [posting{paccount="equity:closing balances", pamount=negate balancingamt}] | ||||
|   putStr $ showTransaction (nulltransaction{tdate=closingdate, tdescription="closing balances", tpostings=nps}) | ||||
|   putStr $ showTransaction (nulltransaction{tdate=openingdate, tdescription="opening balances", tpostings=ps}) | ||||
|   when closing $ putStr $ showTransaction (nulltransaction{tdate=closingdate, tdescription="closing balances", tpostings=nps}) | ||||
|   when opening $ putStr $ showTransaction (nulltransaction{tdate=openingdate, tdescription="opening balances", tpostings=ps}) | ||||
| 
 | ||||
|  | ||||
| @ -84,3 +84,93 @@ hledger close -f- -b2017/6/1 -e2018 | ||||
|     equity:opening balances | ||||
| 
 | ||||
| >>>=0 | ||||
| 
 | ||||
| # Print just the opening transaction | ||||
| hledger close -f- -p 2016 assets liabilities --opening | ||||
| <<< | ||||
| 2016/1/1 open | ||||
|     assets:bank         $100 | ||||
|     assets:cash         $20 | ||||
|     equity:opening | ||||
| 
 | ||||
| 2016/1/15 spend | ||||
|     expenses:sweets     $5 | ||||
|     assets:cash | ||||
| 
 | ||||
| 2016/1/19 withdraw | ||||
|     assets:cash         $20 | ||||
|     assets:bank | ||||
| 
 | ||||
| 2016/1/20 lend | ||||
|     liabilities         $25 | ||||
|     assets:cash | ||||
| >>> | ||||
| 2017/01/01 opening balances | ||||
|     assets:bank                         $80 = $80 | ||||
|     assets:cash                         $10 = $10 | ||||
|     liabilities                         $25 = $25 | ||||
|     equity:opening balances | ||||
| 
 | ||||
| >>>=0 | ||||
| 
 | ||||
| # Print just the closing transaction | ||||
| hledger close -f- -p 2016 assets liabilities --closing | ||||
| <<< | ||||
| 2016/1/1 open | ||||
|     assets:bank         $100 | ||||
|     assets:cash         $20 | ||||
|     equity:opening | ||||
| 
 | ||||
| 2016/1/15 spend | ||||
|     expenses:sweets     $5 | ||||
|     assets:cash | ||||
| 
 | ||||
| 2016/1/19 withdraw | ||||
|     assets:cash         $20 | ||||
|     assets:bank | ||||
| 
 | ||||
| 2016/1/20 lend | ||||
|     liabilities         $25 | ||||
|     assets:cash | ||||
| >>> | ||||
| 2016/12/31 closing balances | ||||
|     assets:bank                        $-80 = $0 | ||||
|     assets:cash                        $-10 = $0 | ||||
|     liabilities                        $-25 = $0 | ||||
|     equity:closing balances | ||||
| 
 | ||||
| >>>=0 | ||||
| 
 | ||||
| # Supplying --opening --closing is the same as just "close" | ||||
| hledger close -f- -p 2016 assets liabilities --opening --closing | ||||
| <<< | ||||
| 2016/1/1 open | ||||
|     assets:bank         $100 | ||||
|     assets:cash         $20 | ||||
|     equity:opening | ||||
| 
 | ||||
| 2016/1/15 spend | ||||
|     expenses:sweets     $5 | ||||
|     assets:cash | ||||
| 
 | ||||
| 2016/1/19 withdraw | ||||
|     assets:cash         $20 | ||||
|     assets:bank | ||||
| 
 | ||||
| 2016/1/20 lend | ||||
|     liabilities         $25 | ||||
|     assets:cash | ||||
| >>> | ||||
| 2016/12/31 closing balances | ||||
|     assets:bank                        $-80 = $0 | ||||
|     assets:cash                        $-10 = $0 | ||||
|     liabilities                        $-25 = $0 | ||||
|     equity:closing balances | ||||
| 
 | ||||
| 2017/01/01 opening balances | ||||
|     assets:bank                         $80 = $80 | ||||
|     assets:cash                         $10 = $10 | ||||
|     liabilities                         $25 = $25 | ||||
|     equity:opening balances | ||||
| 
 | ||||
| >>>=0 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user