hledger/examples/reports/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'