基于libreoffice的报表引擎(odt->odt,odt->pdf,odt->doc,odt->docx,ods->ods等)

odoo10-addon-report-py3o的Python项目详细描述


报告PY3O

py3o报告引擎是基于libreoffice的odoo报告引擎。

  • 报告由libreoffice(odt或ods)创建,
  • 报表以opendocument格式(.odt或.ods文件)存储在服务器上。
  • 报告以opendocument格式或libreoffice支持的任何输出格式(pdf、html、doc、docx、docbook、xls等)发送给用户。

基于libreoffice的报告引擎的主要优点是:

  • 不需要开发人员来创建或修改报表:报表是用libreoffice创建和修改的。所以这个报告引擎有一个完整的所见即所得报告开发工具!
  • 对于a4/letter格式的pdf报告,使用libreoffice这样的工具开发它比使用html/css开发它更容易,还有一些打印特性(背景,页边距框)不太受基于HTML/CSS的解决方案的支持。
  • 如果希望用户能够在ODOO生成文档后对其进行修改,只需将文档配置为ODT输出(或DOC或DOCX),用户就可以在ODOO生成文档后使用libreoffice(或word)对其进行修改。
  • 轻松开发ODS格式的电子表格报告(可能有XLS输出)。

此报告引擎是 aeroo的替代方案:这两个报告引擎具有相似的功能,但它们的实现完全不同。但是,您不能使用Aeroo模板作为替换,您必须更改一些详细信息。

安装

安装所需的python libs:

pip install py3o.template
pip install py3o.formats

要允许将odt或ods报告转换为其他格式(pdf、doc、docx等),请安装libreoffice:

apt-get --no-install-recommends install libreoffice

配置

例如,要用自定义PY3O报表替换本机发票报表,请在自定义模块中添加以下XML文件:

<?xml version="1.0" encoding="utf-8"?>
<odoo>

<record id="account.account_invoices" model="ir.actions.report.xml">
    <field name="report_type">py3o</field>
    <field name="py3o_filetype">odt</field>
    <field name="module">my_custom_module_base</field>
    <field name="py3o_template_fallback">report/account_invoice.odt</field>
</record>

</odoo>

其中, my_custom_module_base 是自定义odoo模块的名称。在本例中,invoice odt文件位于 my_custom_module_base/report/account_invoice.odt

也可以引用位于 奥多服务器。在这种情况下,必须让 模块 项为空并指定 模板路径为 py3o_template_fallback

<?xml version="1.0" encoding="utf-8"?>
<odoo>

<record id="account.account_invoices" model="ir.actions.report.xml">
    <field name="report_type">py3o</field>
    <field name="py3o_filetype">odt</field>
    <field name="py3o_template_fallback">/odoo/templates/py3o/report/account_invoice.odt</field>
</record>

</odoo>

此外,还必须修改odoo服务器配置文件以声明 py3o模板允许的根目录。仅定位模板 PY3O报表可以加载到此目录。

[options]
...

[report_py3o]
root_tmpl_path=/odoo/templates/py3o

如果您想要PDF格式的发票而不是ODT格式的发票,XML文件应该如下所示:

<?xml version="1.0" encoding="utf-8"?>
<odoo>

<record id="account.account_invoices" model="ir.actions.report.xml">
    <field name="report_type">py3o</field>
    <field name="py3o_filetype">pdf</field>
    <field name="module">my_custom_module_base</field>
    <field name="py3o_template_fallback">report/account_invoice.odt</field>
</record>

</odoo>

如果要添加新的py3o pdf报告(而不是替换本机报告),xml文件应如下所示:

<?xml version="1.0" encoding="utf-8"?>
<odoo>

<record id="partner_summary_report" model="ir.actions.report.xml">
    <field name="name">Partner Summary</field>
    <field name="model">res.partner</field>
    <field name="report_name">res.partner.summary</field>
    <field name="report_type">py3o</field>
    <field name="py3o_filetype">pdf</field>
    <field name="module">my_custom_module_base</field>
    <field name="py3o_template_fallback">report/partner_summary.odt</field>
</record>

<!-- Add entry in "Print" drop-down list -->
<record id="button_partner_summary_report" model="ir.values">
    <field name="key2">client_print_multi</field>
    <field name="model">res.partner</field>
    <field name="name">Partner Summary</field>
    <field name="value" eval="'ir.actions.report.xml,%d'%partner_summary_report" />
</record>

</odoo>

配置参数 < DL>
py3o.转换指令
用于运行转换的命令,默认情况下为 libreoffice 。如果更改此项,则此处设置的任何内容都必须接受参数 --headless --convert to $ext$file 并将生成的文件放入扩展名为 $ext $file 目录中。命令将在 $file 的目录中启动。

已知问题/路线图

  • 生成条形码?
  • 在演示文件中添加更详细的示例以展示功能
  • 添加迁移指南Aeroo->;PY3O

错误跟踪程序

漏洞可在github问题上进行跟踪。如果有麻烦,请 如果您的问题已经报告,请检查那里。如果你先发现它, 通过提供详细而受欢迎的反馈,帮助我们粉碎它。

学分

贡献者

维护人员

odoo community association

此模块由OCA维护。

oca,或odoo社区协会,是一个非营利性组织 任务是支持odoo特性和 促进其广泛应用。

要参与本模块,请访问https://odoo-community.org" rel="nofollow">https://odoo community.org

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

推荐PyPI第三方库


热门话题
JAVAexists()方法始终返回false   java SNMP4J v2c陷阱发送速度非常慢   java计算给定单词中字母的频率   在java中执行curl命令获取异常   java按下按钮时,应显示一个数字,并在日期选择器处计数   java递归将括号设置为字符串字符   节点。java中AWS IOT按钮的js Lambda函数   删除ArrayList中的所有空格。JAVA   java我可以在eclipse中定义一个显示html文件的视图吗?   java为什么RestController公开Crudepository中的所有操作?   春季3.2。使用java8的x   java迭代器如何使用构造函数   java Jersey客户端关闭InputStream响应它真的有效吗?   Java从剪贴板检索XML(Excel)电子表格   java线程被卡住,因为在运行中有一个永无止境的函数   基于Java编程的Amazon云开发