mirror of
https://github.com/simonmichael/hledger.git
synced 2024-11-07 21:15:19 +03:00
;examples: invoicing
Files related to https://hledger.org/invoicing.html Working for me right now but not fully maintained.
This commit is contained in:
parent
efc32138ac
commit
e39d5a14c3
35
examples/invoicing/202001ab.md
Normal file
35
examples/invoicing/202001ab.md
Normal file
@ -0,0 +1,35 @@
|
||||
---
|
||||
papersize: letter
|
||||
margin-left: 20mm
|
||||
margin-right: 25mm
|
||||
margin-top: 20mm
|
||||
margin-bottom: 20mm
|
||||
...
|
||||
|
||||
![](logo.jpg){ width=100mm }\
|
||||
Joe Consultant | +1 (111) 111 1111 | joe@example.com | 500 Done Dr. #1, Work Ville, CA 10000, USA
|
||||
|
||||
Carl Client\
|
||||
AB Inc.\
|
||||
PO Box 11111\
|
||||
CA 20000\
|
||||
|
||||
January 1, 2020
|
||||
|
||||
# Invoice 202001cv
|
||||
|
||||
<THIS LINE ADDED TO PREVENT SPHINX TABLE RENDERING; REMOVE IT>
|
||||
| Description | Rate | Qty | Total |
|
||||
|:--------------------------------------------|-------:|----:|-------:|
|
||||
| Custom software development & maintenance | $ 100 | 10 | $ 1000 |
|
||||
| Systems reliability engineering | $ 2000 | - | $ 2000 |
|
||||
| On-call monitoring & tech support | $ 2000 | - | $ 2000 |
|
||||
| Contractor/vendor management | $ 500 | - | $ 500 |
|
||||
| Expenses (service providers, tools, dues..) | | | $ 0 |
|
||||
| | | | |
|
||||
| Total due | | | $ 5500 |
|
||||
| | | | |
|
||||
|
||||
## Terms
|
||||
|
||||
Now due. Your prompt payments are appreciated, thank you!
|
40
examples/invoicing/Makefile
Normal file
40
examples/invoicing/Makefile
Normal file
@ -0,0 +1,40 @@
|
||||
# Makefile
|
||||
# Generates HTML/PDF invoices from a markdown template
|
||||
|
||||
help:
|
||||
@echo "make copy # copy last invoice to YYYYMMab.md, open in emacs"
|
||||
@echo "(edit)"
|
||||
@echo "make invoice # make YYYYMMab.pdf and YYYYMMab.html, git commit, add invoice transaction to journal"
|
||||
|
||||
CSS=invoice.css
|
||||
LAST=`ls -t 2*md | head -1`
|
||||
# must end with "ab":
|
||||
NEW=$(shell date +%Y%mab)
|
||||
|
||||
copy:
|
||||
@echo "copying invoice $(LAST) to $(strip $(NEW)).md"
|
||||
@cp $(LAST) $(strip $(NEW)).md
|
||||
emacsclient -s2 -n $(strip $(NEW)).md
|
||||
|
||||
invoice:
|
||||
@echo "making invoice $(NEW)"
|
||||
@make $(NEW)
|
||||
@git add $(NEW).{md,html,pdf}
|
||||
@git commit -m "invoice $(NEW)" -- $(NEW).{md,html,pdf}
|
||||
@printf "`date +%Y-%m-%d` * (`date +%Y%m`ab) AB Inc. | invoice\n (assets:receivable:ab) \$$1000 ; TODO:adjust\n\n" >>$$LEDGER_FILE
|
||||
|
||||
%ab:
|
||||
@make $@.pdf $@.html
|
||||
|
||||
%.pdf: %.md $(CSS) #logo.jpg
|
||||
pandoc $< -t html5 --css $(CSS) -o $@ --metadata title=" "
|
||||
# --metadata title to silence warning, space to avoid unwanted display
|
||||
|
||||
%.pdf-watch:
|
||||
ls | entr make -s $*.pdf
|
||||
|
||||
%.html: %.md $(CSS) #logo.jpg
|
||||
pandoc $< -t html5 -s --css $(CSS) -o $@ --metadata title=" "
|
||||
|
||||
%.html-watch:
|
||||
ls | entr make -s $*.html
|
2
examples/invoicing/README.md
Normal file
2
examples/invoicing/README.md
Normal file
@ -0,0 +1,2 @@
|
||||
Example files related to https://hledger.org/invoicing.html
|
||||
Adapted from a working setup, not guaranteed to be current or working.
|
9
examples/invoicing/accrual.journal
Normal file
9
examples/invoicing/accrual.journal
Normal file
@ -0,0 +1,9 @@
|
||||
; https://hledger.org/invoicing.html
|
||||
|
||||
2020-02-01 * (201602ab) AB Inc. | invoice
|
||||
revenues:consulting:ab $-1000
|
||||
assets:receivable:ab $1000
|
||||
|
||||
2020-02-15 * AB Inc. | payment for 201602ab
|
||||
assets:receivable:ab $-1000 ; = $0 ; assert this if fully paid (optional)
|
||||
assets:checking $1000
|
9
examples/invoicing/cash.journal
Normal file
9
examples/invoicing/cash.journal
Normal file
@ -0,0 +1,9 @@
|
||||
; https://hledger.org/invoicing.html
|
||||
|
||||
2020-02-01 * (201602ab) AB Inc. | invoice
|
||||
(assets:receivable:ab) $1000
|
||||
|
||||
2020-02-15 * AB Inc. | payment for 201602ab
|
||||
(assets:receivable:ab) $-1000 ; = $0 ; assert this if fully paid (optional)
|
||||
revenues:consulting:ab $-1000
|
||||
assets:checking $1000
|
117
examples/invoicing/invoice.css
Normal file
117
examples/invoicing/invoice.css
Normal file
@ -0,0 +1,117 @@
|
||||
/* invoice.css */
|
||||
|
||||
@charset "utf-8";
|
||||
|
||||
body {
|
||||
/* font-size: 10.5pt; */
|
||||
/* font-family: */
|
||||
/* "Avenir Next", -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", */
|
||||
/* "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; */
|
||||
hyphens: auto;
|
||||
height: 250mm; /* 280 - 10 (top) - 20 (bottom) */
|
||||
line-height: 140%;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
code {
|
||||
font-family: "Source Sans Code", Courier New, Courier, monospace;
|
||||
margin-left: 1pt;
|
||||
/* font-size:12pt; */
|
||||
}
|
||||
|
||||
a {
|
||||
color: black;
|
||||
margin-left: 1pt;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 20pt;
|
||||
margin-top: 10mm;
|
||||
padding-top:0;
|
||||
/* margin-top: 6pt; */
|
||||
/* margin-bottom: 0; */
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 16pt;
|
||||
/* margin-top: 20pt; */
|
||||
margin-top: 10mm;
|
||||
/* font-weight: normal; */
|
||||
/* margin-top: 0; */
|
||||
/* margin-bottom: 20pt; */
|
||||
}
|
||||
|
||||
p {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
p:first-of-type {
|
||||
text-align: center;
|
||||
font-size: 9pt;
|
||||
word-spacing: 1pt;
|
||||
}
|
||||
|
||||
p:nth-of-type(2) {
|
||||
margin-top: 10mm;
|
||||
}
|
||||
|
||||
p:nth-of-type(3) {
|
||||
text-align: center;
|
||||
font-weight:bold;
|
||||
font-size:12pt;
|
||||
|
||||
}
|
||||
|
||||
/* p:nth-last-of-type(3) { */
|
||||
/* margin-top: 10mm; */
|
||||
/* } */
|
||||
|
||||
/* p:last-of-type { */
|
||||
/* text-align: center; */
|
||||
/* font-size: 9pt; */
|
||||
/* position: absolute; */
|
||||
/* bottom: 2mm; */
|
||||
/* margin-bottom: 0; */
|
||||
/* padding-bottom: 0; */
|
||||
/* color: #444; */
|
||||
/* } */
|
||||
|
||||
table {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
table:nth-of-type(1) {
|
||||
border: 1px solid black;
|
||||
padding: 5pt;
|
||||
}
|
||||
|
||||
table:nth-of-type(1) td {
|
||||
border-top: 1px solid #eee;
|
||||
}
|
||||
|
||||
table:nth-of-type(1) tr:nth-last-of-type(1) {
|
||||
font-weight: bold;
|
||||
}
|
||||
table:nth-of-type(1) tr:nth-last-of-type(1) td {
|
||||
/* border-top: 1px solid black; */
|
||||
padding-top: 1em;
|
||||
}
|
||||
|
||||
/* table:nth-of-type(1) td:nth-of-type(2) { */
|
||||
/* text-align: center; */
|
||||
/* } */
|
||||
|
||||
hr {
|
||||
border: 1px solid #eee;
|
||||
}
|
||||
|
||||
hr:last-of-type {
|
||||
position: absolute;
|
||||
bottom: 14mm;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
figure {
|
||||
margin: 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user