odoo13 用sale.report view 生成QWEB销售订单名称列表 具体代码实例
时间: 2024-09-07 10:01:59 浏览: 41
在Odoo 13中,要使用`sale.report`视图生成QWEB销售订单名称列表,你需要定义一个报告的XML模板,并在其中使用QWEB的语法来构建你想要显示的数据。以下是一个简单的例子,说明了如何创建一个报告模板来展示销售订单的名称列表。
首先,在你的Odoo模块中创建一个XML视图文件(通常放在`views`目录下),然后定义一个新的`report`视图:
```xml
<odoo>
<template id="report_saleorder" name="Report Sale Order">
<t t-call="report.html_container">
<t t-foreach="docs" t-as="order">
<t t-set="order_name" t-value="order.name"/>
<div class="page">
<h2>Sale Order: <span t-esc="order_name"/></h2>
<!-- 更多的销售订单信息可以在这里展示 -->
</div>
</t>
</t>
</template>
</odoo>
```
在上面的代码中,`report_saleorder`是模板的唯一标识符。在这个模板中,我们使用了`t t-call`来调用Odoo的HTML容器模板,并使用`t t-foreach`来遍历传入的销售订单记录。`t t-as`定义了一个迭代变量`order`,用于访问当前迭代的销售订单记录。`t t-set`用于设置一个局部变量`order_name`,这样可以在模板的其他地方引用。
为了在报告中显示这个模板,你需要在模型中定义一个方法来渲染报告。这个方法将会被触发,当用户请求打印或预览报告时。例如,在`sale.order`模型中添加如下方法:
```python
from odoo import models, fields, api
class SaleOrder(models.Model):
# ... 其他代码 ...
@api.multi
def action_print_report(self):
self.ensure_one()
return self.env.ref('your_module.report_saleorder').report_action(self)
```
在这个例子中,`your_module`需要替换为你自己的模块名称,`report_saleorder`是之前定义的模板ID。`action_print_report`方法会通过`report_action`方法来触发报告的渲染和显示。
请记住,在实际使用之前,需要确保你的模块已经正确安装并且在Odoo的web界面中进行了相关配置。
阅读全文