基于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
的目录中启动。
用法
模板语言是广泛记录的 ,这些记录在libreoffice中公开为 对象 ,您也可以在这些对象上调用函数。
可用的功能和对象
< DL>
用户
浏览当前用户的记录
语言
用户公司的语言为字符串(ISO代码)
b64解码
base64.b64解码
格式化多行值(字符串)
为多行字段生成等效于
<;br/>;
和
&;nbsp;
的ODF(ODF在内部是XML,否则将跳过这些字段)
HTML清理(字符串)
清理HTML字符串
时间
python的
时间
模块
显示地址(合作伙伴)
返回合作伙伴地址的格式化字符串
已知问题/路线图
- 生成条形码?
- 在演示文件中添加更详细的示例以展示功能
- 添加迁移指南Aeroo->;PY3O
错误跟踪程序
漏洞可在github问题上进行跟踪。如果有麻烦,请 如果您的问题已经报告,请检查那里。如果你先发现它, 通过提供详细而受欢迎的反馈,帮助我们粉碎它。
学分
贡献者
- 弗洛伦特助手(xCG咨询公司)
-
劳伦特·米格农<;
laurent
米格农
@
米格农
>
欧盟 >;, - Alexis de Lattre<; Alexis delattre @ akretion com >;,
- guewen baconnier<; guewen baconnier @ camptocamp com >;
- 奥马尔·卡斯蒂涅拉<; omar @ comunitea com >;
- 霍尔格·布鲁恩<; hbrunn @ therp nl >;