Library to generate PDF invoice.
This is library to generate a simple invoices. Currently supported formats are PDF and XML for Pohoda accounting system. PDF invoice is based on ReportLab.
Run this command as root:
pip install InvoiceGenerator
If you want upgrade to new version, add --upgrade flag:
pip install InvoiceGenerator --upgrade
You can use setup.py from GitHub repository too:
python setup.py install
Complete documentation is available on Read The Docs.
Define invoice data first:
import os from tempfile import NamedTemporaryFile from InvoiceGenerator.api import Invoice, Item, Client, Provider, Creator # choose english as language os.environ["INVOICE_LANG"] = "en" client = Client('Client company') provider = Provider('My company', bank_account='2600420569', bank_code='2010') creator = Creator('John Doe') invoice = Invoice(client, provider, creator) invoice.currency_locale = 'en_US.UTF-8' invoice.add_item(Item(32, 600, description="Item 1")) invoice.add_item(Item(60, 50, description="Item 2", tax=21)) invoice.add_item(Item(50, 60, description="Item 3", tax=0)) invoice.add_item(Item(5, 600, description="Item 4", tax=15))
Note: Due to Python’s representational error, write numbers as integer tax=10, Decimal tax=Decimal('10.1') or string tax='1.2' to avoid getting results with lot of decimal places.
Generate PDF invoice file:
from InvoiceGenerator.pdf import SimpleInvoice pdf = SimpleInvoice(invoice) pdf.gen("invoice.pdf", generate_qr_code=True)
Generate XML invoice file:
from InvoiceGenerator.pohoda import SimpleInvoice pdf = SimpleInvoice(invoice) pdf.gen("invoice.xml")
Note: Pohoda uses three tax rates: none: 0%, low: 15%, high: 21%. If any item doesn’t meet those percentage, the rateVat parameter will not be set for those items resulting in 0% tax rate.
Only SimpleInvoice is currently supported for Pohoda XML format.
Fork the repository on github and write code. Make sure to add tests covering your code under /tests/. You can run tests using:
python setup.py test
Then propose your patch via a pull request.
Documentation is generated from doc/source/ using Sphinx:
python setup.py build_sphinx
Then head to doc/build/html/index.html.
1.1.0 - 2020-04-24
Fix QR code on invoice
Drop Python 2 support
Add pt_BR translation
Add support for transparent PNGs
1.0.0 - 2018-05-17
Add support for Pohoda XML format
Added much more complex documentation
Parameter Address.zip was renamed to Address.zip_code
Add parameters division and country to the Address
Added parameter Address.bank_code If present, the bank code will be written after dash to the account number, otherwise whole Address.bank_account will be used
Address are rendered to fit the area on the PDF invoice
Code style fixes
Fixes for rounding: usage of decimal.Decimal and added parameter Invoice.rounding_strategy
Fix for QR code
Allow to set line width in SimpleInvoice
0.5.4 - 2017-03-22
Fix locale in build package
0.5.3 - 2017-01-09
Use Babel for currency formating; fix and improve tests
0.5.2 - 2014-12-04
Stop mentionning python2.6 support
Make invoice.variable_symbol optional
0.5.1 - 2014-10-28
Fix conf relative import
Use python native function splitlines for notes
0.5.0 - 2014-09-21
Add property number to object Invoice
Replaced variable symbol for invoice number in invoice header
Update Czech translations
0.4.9 - 2014-07-3
Bug fix previous commit
0.4.8 - 2014-07-3
Create proforma invoice
0.4.7 - 2014-07-1
Change date format for qr code generator
Disable converting datetime to string on Invoice
Disable rendering empty values
0.4.6 - 2014-05-14
The displayed number of pages only when there is more than one
Rename Date to Date of exposure
Use pillow instead of PIL
0.4.5 - 2014-04-21
Support for multipage items printout
Support for multiline item description
Use locale to print currency strings and values
Adding logo to provider header
No notes on earlier releases.
Adam Strauch (@creckx)
Martin Voldrich (@rbas)
Petr Dlouhy (@PetrDlouhy)
Antoine Musso (@hashar)
Release history Release notifications | RSS feed
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.