跳转到主要内容

用于生成PDF发票的库。

项目描述

https://travis-ci.org/by-cx/InvoiceGenerator.svg?branch=master Latest Version

这是一个生成简单发票的库。目前支持的格式是PDF和用于Pohoda会计系统的XML。PDF发票基于ReportLab。

Example image of invoice

安装

以root用户身份运行此命令

pip install InvoiceGenerator

如果您想升级到新版本,请添加 --upgrade 标志

pip install InvoiceGenerator --upgrade

您也可以使用GitHub仓库中的setup.py

python setup.py install

文档

完整的文档可在 Read The Docs 上找到。

示例

基本API

首先定义发票数据

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))

注意:由于Python的表示错误,为了避免得到很多小数位的结果,将数字写为整数 tax=10,Decimal tax=Decimal('10.1') 或字符串 tax='1.2'

PDF

生成PDF发票文件

from InvoiceGenerator.pdf import SimpleInvoice

pdf = SimpleInvoice(invoice)
pdf.gen("invoice.pdf", generate_qr_code=True)

Pohoda XML

生成XML发票文件

from InvoiceGenerator.pohoda import SimpleInvoice

pdf = SimpleInvoice(invoice)
pdf.gen("invoice.xml")

注意:Pohoda使用三种税率:无税率:0%,低税率:15%,高税率:21%。如果任何项目不满足这些百分比,则不会为这些项目设置rateVat参数,导致税率为0%。

目前只支持SimpleInvoice用于Pohoda XML格式。

黑客攻击

在github上复制仓库并编写代码。请确保在/tests/下添加覆盖您代码的测试。您可以使用以下命令运行测试

python setup.py test

然后通过pull request提出您的补丁。

文档是从doc/source/生成的,使用Sphinx

python setup.py build_sphinx

然后转到doc/build/html/index.html

历史

1.2.0 - 2024-07-14

  • 大型项目更新,支持Python 3.8 - 3.12

1.1.0 - 2020-04-24

  • 修复发票上的二维码

  • 停止支持Python 2

  • 添加pt_BR翻译

  • 添加对透明PNG的支持

1.0.0 - 2018-05-17

  • 添加对Pohoda XML格式的支持

  • 添加了更多复杂的文档

  • 参数Address.zip已重命名为Address.zip_code

  • Address添加参数divisioncountry

  • 添加参数Address.bank_code如果存在,则将银行代码写入账号号码之后,否则整个Address.bank_account将被使用

  • 地址将渲染以适合PDF发票上的区域

  • 代码风格修正

  • 四舍五入修复:使用decimal.Decimal并添加参数Invoice.rounding_strategy

  • 二维码修复

  • 允许在SimpleInvoice中设置线宽

0.5.4 - 2017-03-22

  • 修复构建包中的地区设置

0.5.3 - 2017-01-09

  • 使用Babel进行货币格式化;修复并改进测试

0.5.2 - 2014-12-04

  • 停止提及python2.6支持

  • 将invoice.variable_symbol设置为可选

0.5.1 - 2014-10-28

  • 修复相对导入的conf

  • 使用python本地函数splitlines对注释进行拆分

0.5.0 - 2014-09-21

  • 向对象Invoice添加属性number

  • 替换发票头中发票号码的变量符号

  • 更新捷克语翻译

0.4.9 - 2014-07-3

  • 修复上一个提交中的错误

0.4.8 - 2014-07-3

  • 创建预付款发票

0.4.7 - 2014-07-1

  • 更改二维码生成器的日期格式

  • 禁用在Invoice上转换日期时间到字符串

  • 禁用渲染空值

0.4.6 - 2014-05-14

  • 只有当有多个页面时才显示页数

  • 将Date重命名为Date of exposure

  • 使用pillow代替PIL

0.4.5 - 2014-04-21

  • 支持多页项目打印

  • 支持多行项目描述

  • 使用地区打印货币字符串和值

  • 在供应商头部添加徽标

早期版本没有注释。

贡献者

  • Adam Strauch (@creckx)

  • Martin Voldrich (@rbas)

  • Petr Dlouhy (@PetrDlouhy)

  • Antoine Musso (@hashar)

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面