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'
 | 
						|
 |