mirror of
https://github.com/simonmichael/hledger.git
synced 2024-12-27 12:24:43 +03:00
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'
|
||
|
|