107 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			107 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
| ## TAX REPORTS
 | |
| #
 | |
| # Tested with hledger 1.5.99, osx high sierra.
 | |
| # "make" generates the following reports in three formats, 
 | |
| # "make preview" prints them on stdout.
 | |
| # (You'll need to customise these for your needs.)
 | |
| #
 | |
| # business revenue
 | |
| # business expenses
 | |
| # possibly business/tax-related expenses:
 | |
| #  trips, travel
 | |
| #  trips, other
 | |
| #  personal development
 | |
| #  health
 | |
| #  tax
 | |
| # non-business/non-tax-related:
 | |
| #  other income
 | |
| #  other expenses
 | |
| 
 | |
| Y=2017
 | |
| J=../$(Y).journal
 | |
| H=TERM=dumb hledger -f $(J) -V -Y --alias expenses:personal=expenses bal  # depth:1 -N
 | |
| 
 | |
| STDOUTREPORTS= \
 | |
| 	$(Y)-business-revenue.-     \
 | |
| 	$(Y)-business-expenses.-    \
 | |
| 	$(Y)-trips-travel.-         \
 | |
| 	$(Y)-trips-other.-          \
 | |
| 	$(Y)-personal-development.- \
 | |
| 	$(Y)-health.-               \
 | |
| 	$(Y)-tax.-                  \
 | |
| 	$(Y)-other-income.-         \
 | |
| 	$(Y)-other-expenses.-       \
 | |
| 
 | |
| CSVREPORTS=$(STDOUTREPORTS:.-=.csv)
 | |
| HTMLREPORTS=$(STDOUTREPORTS:.-=.html)
 | |
| TXTREPORTS=$(STDOUTREPORTS:.-=.txt)
 | |
| 
 | |
| REPORTS=\
 | |
| 	$(CSVREPORTS) $(Y)-all.csv \
 | |
| 	$(HTMLREPORTS) \
 | |
| 	$(TXTREPORTS) \
 | |
| 
 | |
| reports: csv html txt
 | |
| 
 | |
| preview:
 | |
| 	@make -s $(STDOUTREPORTS) | sed -e 's/\. Balance changes in ...../:/'
 | |
| 
 | |
| csv: $(CSVREPORTS) $(Y)-all.csv
 | |
| 
 | |
| $(Y)-all.csv: $(CSVREPORTS)
 | |
| 	@for f in $(CSVREPORTS); do \
 | |
| 		echo '"",""'      ;\
 | |
| 		echo '"'$${f/.csv/:}'",""' ;\
 | |
| 		cat $$f           ;\
 | |
| 	done >$@
 | |
| 
 | |
| html: $(HTMLREPORTS)
 | |
| 
 | |
| txt: $(TXTREPORTS)
 | |
| 
 | |
| open: $(REPORTS)
 | |
| 	open $^
 | |
| 
 | |
| clean:
 | |
| 	rm -f $(REPORTS)
 | |
| 
 | |
| # Save various subreports with given file extension (html, csv),
 | |
| # or with - extension print on stdout; in appropriate format.
 | |
| 
 | |
| $(Y)-business-revenue.%: $(J)
 | |
| 	@[[ $* == - ]] && printf "\n$(subst -, ,$@)" || true # if on stdout, print a title
 | |
| 	$(H) $(if $(filter-out -,$*),-o $@)  cur:. revenues:business depth:3 --invert
 | |
| 
 | |
| $(Y)-business-expenses.%: $(J)
 | |
| 	@[[ $* == - ]] && printf "\n$(subst -, ,$@)" || true
 | |
| 	$(H) $(if $(filter-out -,$*),-o $@)  cur:. expenses:business depth:3
 | |
| 
 | |
| $(Y)-trips-travel.%: $(J)
 | |
| 	@[[ $* == - ]] && printf "\n$(subst -, ,$@)" || true
 | |
| 	$(H) $(if $(filter-out -,$*),-o $@)  not:business expenses.*travel
 | |
| 
 | |
| $(Y)-trips-other.%: $(J)
 | |
| 	@[[ $* == - ]] && printf "\n$(subst -, ,$@)" || true
 | |
| 	$(H) $(if $(filter-out -,$*),-o $@)  not:business tag:trip expenses not:travel not:health not:'personal development'
 | |
| 
 | |
| $(Y)-personal-development.%: $(J)
 | |
| 	@[[ $* == - ]] && printf "\n$(subst -, ,$@)" || true
 | |
| 	$(H) $(if $(filter-out -,$*),-o $@)  not:business cur:. 'expenses.*personal development'
 | |
| 
 | |
| $(Y)-health.%: $(J)
 | |
| 	@[[ $* == - ]] && printf "\n$(subst -, ,$@)" || true
 | |
| 	$(H) $(if $(filter-out -,$*),-o $@)  not:business cur:. expenses.*health
 | |
| 
 | |
| $(Y)-tax.%: $(J)
 | |
| 	@[[ $* == - ]] && printf "\n$(subst -, ,$@)" || true
 | |
| 	$(H) $(if $(filter-out -,$*),-o $@)  not:business cur:. 'expenses.*tax\b'
 | |
| 
 | |
| $(Y)-other-income.%: $(J)
 | |
| 	@[[ $* == - ]] && printf "\n$(subst -, ,$@)" || true
 | |
| 	$(H) $(if $(filter-out -,$*),-o $@)  not:business cur:. depth:3 revenues:personal --invert
 | |
| 
 | |
| $(Y)-other-expenses.%: $(J)
 | |
| 	@[[ $* == - ]] && printf "\n$(subst -, ,$@)" || true
 | |
| 	$(H) $(if $(filter-out -,$*),-o $@)  not:business cur:. depth:3 expenses not:business not:tag:trip not:expenses.*health not:'expenses.*personal development' not:'expenses.*tax\b'
 | |
| 
 |