如何在Qweb中仅为非服务类产品的行项目打印序号
Qweb跳过服务产品行输出序号实现方法
实现核心逻辑是自定义计数变量,仅在非服务产品行累加计数,不要使用循环自带的index属性(会统计所有行导致序号不连续)。
操作步骤
- 第一步:在遍历行项目的循环外初始化序号计数器
<t t-set="serial_num" t-value="1"/>
- 第二步:遍历行时判断产品类型,仅非服务产品行输出序号并更新计数器
<t t-foreach="doc.order_line" t-as="line"> <tr> <td> <t t-if="line.product_id.type != 'service'"> <span t-esc="serial_num"/> <t t-set="serial_num" t-value="serial_num + 1"/> </t> </td> <!-- 其他行字段正常输出即可,示例如下 --> <td t-esc="line.product_id.name"/> <td t-esc="line.product_uom_qty"/> <td t-esc="line.price_subtotal"/> </tr> </t>
注意事项
- Odoo原生产品类型中服务产品的
type字段值为service,如果你自定义了产品类型的取值,替换判断条件里的对应值即可。 - 如果服务产品行需要展示特殊占位符,可以在
t-if对应的t-else分支里添加你需要展示的内容,比如/或者-。
内容的提问来源于stack exchange,提问作者Sakthi Priya
相关产品推荐
相关产品推荐

