feature/tu/first_implementation (#2)
Co-authored-by: Torsten Ueberschar <torsten@ueberschar.de> Reviewed-on: torsten/freelance_invoice#2
This commit is contained in:
97
README.md
97
README.md
@@ -1,2 +1,97 @@
|
||||
# freelance_invoice
|
||||
# Freelance Invoice
|
||||
|
||||
is a simple command line tool to generate invoices for freelance work. It uses a simple template system based
|
||||
on `jinja2` to generate the
|
||||
invoice in HTML and then converts it to a PDF using `xhtml2pdf`.
|
||||
|
||||
## Install
|
||||
|
||||
Use python venv:
|
||||
|
||||
```bash
|
||||
python -m venv .venv
|
||||
source .venv/bin/activate
|
||||
```
|
||||
|
||||
Build executable:
|
||||
|
||||
```bash
|
||||
pip install --upgrade build
|
||||
python -m build
|
||||
```
|
||||
|
||||
Install the executable:
|
||||
|
||||
```bash
|
||||
pip install .
|
||||
```
|
||||
|
||||
See where it is installed:
|
||||
```bash
|
||||
which invoice
|
||||
```
|
||||
|
||||
## usage
|
||||
|
||||
```bash
|
||||
invoice -h
|
||||
|
||||
|
||||
|
||||
```
|
||||
|
||||
There are two yaml files describing your invoice:
|
||||
|
||||
- [RG004211.yaml](test_data/RG004211.yaml) Contains the invoice data. The filename is takes as the invoice id-number.
|
||||
- [envelope.yaml](test_data/envelope.yaml) contains the address data of the sender and the recipient
|
||||
|
||||
The invoice data is read from the `invoice.yaml` file and the address data is read from the `envelope.yaml` file. The
|
||||
invoice data is then used to fill in the invoice template and the address data is used to fill in the address fields of
|
||||
the invoice.
|
||||
|
||||
Some data are globaly available from the envelope template. Some of them can be overriden by the invoice template.
|
||||
|
||||
invoice.yaml - The Name of the invoice file is used as the invoice number but you are free to override it in the
|
||||
invoice.yaml file.
|
||||
|
||||
|
||||
|
||||
|
||||
```yaml
|
||||
|
||||
|
||||
```bash
|
||||
python src/main.py --help
|
||||
Simple invoice generator for freelancers and small businesses by Torsten Ueberschar
|
||||
|
||||
usage: main.py [-h] -b BASE -i INVOICE [-e ENVELOPE] [-t TEMPLATE]
|
||||
|
||||
Read invoice and envelope data from yaml file
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
-b BASE, --base BASE base directory for invoice and envelope files
|
||||
-i INVOICE, --invoice INVOICE
|
||||
Invoice file name
|
||||
-e ENVELOPE, --envelope ENVELOPE
|
||||
Envelope file name
|
||||
-t TEMPLATE, --template TEMPLATE
|
||||
directory for template files
|
||||
```
|
||||
|
||||
## example
|
||||
|
||||
```bash
|
||||
invoice -b test_data -i invoice.yaml -e envelope.yaml -t test_data/templates
|
||||
```
|
||||
|
||||
## to do
|
||||
|
||||
- give more structure to code
|
||||
- make code testable
|
||||
|
||||
## see also
|
||||
|
||||
- https://xhtml2pdf.readthedocs.io/en/latest/index.html
|
||||
- https://jinja.palletsprojects.com/
|
||||
|
||||
|
||||
Reference in New Issue
Block a user