基于hledger查询创建和管理报表的简单包装器。

hreports的Python项目详细描述


hr端口

https://img.shields.io/pypi/v/hreports.svghttps://img.shields.io/travis/msmart/hreports.svgDocumentation StatusUpdates

基于hledger查询创建和管理报表的简单包装器。

功能

hreports保存hledger查询的快捷方式,以便方便地管理多个 使用不同设置和分类帐文件的查询。此外,hreports还可以保存 使用pandoc使用jinja模板将查询输出到pdfs。

  • 方便地创建和管理多个heldger查询
  • 使用模板自定义hledger查询结果的表示形式
  • 以PDF格式保存报告结果
  • 参数化查询
  • 用例:使用单个命令生成发票,例如hreports save invoice_client1
  • 用例:管理税务报告,例如hreports show tax_2017

快速启动

确保已安装hledger。如果要保存生成pdf报告 pandoc(>;=1.16)和wkhtml2pdf这样的pdf引擎也需要安装。确保使用修补版本wkthltopdf来确保 https://github.com/wkhtmltopdf/wkhtmltopdf/issues/2037

使用pip安装hreports:

$ pip install hreports

运行hledger查询的起点是有一个分类帐来运行查询 反对。想象一下下面这个简单的hlegder文件:

$ cat cash-account.ledger
1917/12/14 * Income
    assets:cash  10 USD
    income:client1

1917/12/12 * Expense
    assets:cash  5 USD
    expense:milk

还有一张时间表:

$ cat timesheet.ledger
1917/12/14 * Time
    (consulting:clien1)  1

下面的命令创建一个名为balance的报表来执行查询 ledger bal–深度1在分类账上cash.ledger

$ hreports create balance --query "bal --depth 1" --ledger cash.ledger

执行时,hreports将查询数据存储在配置文件中以备将来使用 参考资料。现在,hreports可以通过运行:

$ hreports show balance
               5 USD  assets
--------------------
               5 USD

这使得在不同的分类账文件上存储许多不同的查询变得很容易 并通过引用它们的hreports名称来执行它们。

模板化

有时,将上下文添加到查询结果中会很有帮助。hreports使用jinja 用于自定义报表表示形式的模板。查询结果是 添加到模板上下文中的输出变量中。此外, 报表配置数据、全局配置和自定义变量 添加了。

想象一下下面的简单模板:

$ cat balance.template
The balance on {{ now }} the balance was

{{ output|last }}

hreports现在可以使用此模板嵌入查询结果:

$ hreports show balance --template balance.template
The balance on 2017-12-15 15:39:11.519658 was:

                   5 USD

如果您需要此信息以供将来参考,请通过 执行:

$ hreports save balance --template balance.template
Saved balance.pdf

如果您继续重复使用此命令,只需更新报表即可:

$ hreports update balance --template balance.template

现在,当呈现平衡时,hreports将始终使用balance.template 报告。

当使用hledger进行时间跟踪和 开发票。创建一个hreport和一个简单的演示模板。添加自定义 变量名(“小时费率”)和值(“20”),带有-var选项:

$ hreports create timesheet --ledger timesheet.ledger -q "bal" -var hourly_rate 20 --template invoice.template

$ cat invoice.template
{% set hours = output|last|float|round(2) %}
{% set net = hours *  hourly_rate|float  %}
Please pay me {{ net }} USD.
Signed {{ now|datetime("%Y/%m/%d") }}

$ hreports show timesheet
Please pay me 20.0 USD.
Signed on 2017/12/15

无可否认,这是一个有点简单的例子。但你可以随便看看 heldger edit–模板发票模板 德国发票。

最后,所有报表配置数据都存储在一个简单的yaml文件中,该文件 如果愿意,可以手动操作。检查和操纵 配置文件运行:

$ hreports edit

路线图

  • 添加文档
  • 添加测试

学分

这个包是用Cookiecutteraudreyr/cookiecutter-pypackage项目模板。

历史记录

0.2.1(2018-12-23)

  • 向输出子流程调用添加字符串解码
  • 更新依赖项和次要修复程序

0.2.0(2018-04-01)

  • 添加测试
  • 改进异常处理

0.1.5(2018-03-05)

  • 添加模板筛选器以创建相对日期
  • 添加multiply_last_column模板过滤器以添加额外的列,该列将每行上的最后一个字符串与自定义fac相乘TOR
  • 添加百分比模板筛选器以添加一个额外的列,该列显示行中最后一个字符串的百分比,与输出的右键值相比
  • 为check_output命令保留双引号中的空格
  • 按字母顺序显示报表列表

0.1.4(2017-12-15)

  • 添加第一个模板(德国发票)
  • 为模板呈现和hledger命令添加异常捕获

0.1.3(2017-12-15)

  • 添加模板和一些初始文档。

0.1.2(2017-12-03)

  • pypi上的第一个版本。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
image Java:设置iconimage而不使用完整路径   javaant和Eclipse构建   Java标签检查图像   java为什么我的glassfish服务器会重定向到另一台服务器?   java MySQL简单查询错误   java你能告诉我如何在图像视图中显示图像吗   Java驱动程序4.0:是否支持对象映射?   java在通过SourceDataLine播放音频时发出一致的爆裂声   java组织。金特罗普。dcom。常见的JIException:未找到错误代码0xC0000070的消息   运行Dijkstra算法实现时的java IndexOutOfBoundsException   java swing gui闪烁白色错误   java单元测试:我应该使用null还是可选的。返回()中的空()?   javajaxb创建空对象   如何拒绝Java构造函数中的非限定参数?   单元测试的java分类