You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Odoo销售报表无订单行税款时隐藏税额列实现咨询

问题原因

你写的代码有三个核心问题导致未生效:

  • 逻辑冲突:循环遍历所有订单行反复操作同一个表头节点,多次替换后结果不可控
  • 结构不完整:仅修改了表头的税额列,未同步修改订单行的税额单元格,会出现表格列数不匹配错位的问题
  • 判断条件不符合需求:你用的是单行是否有税的判断,而需求是全局判断整个订单所有行是否都无税才隐藏列
正确实现方案

直接用QWeb支持的any()方法全局判断所有订单行是否存在关联税款即可,完整代码如下:

<template id="testReport" inherit_id="sale.report_saleorder_document">
    <!-- 替换税额表头 -->
    <xpath expr="//th[@name='th_taxes']" position="replace">
        <th t-if="any(line.tax_id for line in doc.order_line)" name="th_taxes">税额</th>
    </xpath>
    <!-- 替换订单行的税额单元格 -->
    <xpath expr="//td[@name='td_taxes']" position="replace">
        <td t-if="any(line.tax_id for line in doc.order_line)" name="td_taxes">
            <t t-foreach="line.tax_id" t-as="tax">
                <span t-esc="tax.name"/><br/>
            </t>
        </td>
    </xpath>
</template>
逻辑说明

any(line.tax_id for line in doc.order_line)会遍历当前订单的所有行,只要存在任意一行有关联的税款就返回True,展示税额列;如果所有行都没有关联税款就返回False,自动隐藏表头和对应行的税额单元格,不会出现表格错位问题。

内容的提问来源于stack exchange,提问作者Abdala Hellmy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 14:48:05