ODOO 10:如何在POS订单报表视图按自定义字段Commission分组?
解决方案:在POS订单报表中按Commission字段分组并跨视图访问
嘿,我来帮你理清楚这个问题~你在产品表单(product.product)里加的x_commission字段是属于产品的,而POS订单是通过订单行(pos.order.line)关联到产品的,所以要实现报表分组和跨视图访问,得从关联关系入手:
一、给POS订单报表加Commission分组
方式1:直接通过开发者模式修改视图
- 开启开发者模式,进到「设置>技术>视图>视图」,搜索和POS订单报表相关的视图(比如名称包含“POS Orders Analysis”的透视视图)。
- 编辑这个视图的架构,找到
<groupby>节点,往里添加这段代码:
保存后回到POS订单报表,就能看到“Commission”的分组选项,选择它就能按产品佣金字段分组统计订单数据了。<groupby string="Commission" context="{'group_by': 'order_line.product_id.x_commission'}">order_line.product_id.x_commission</groupby>
方式2:用自定义模块继承视图(更稳妥,避免系统升级丢失修改)
如果是做二次开发,推荐用视图继承的方式,不会改动系统原生视图:
<record id="view_pos_order_report_commission_inherit" model="ir.ui.view"> <field name="name">pos.order.report.commission.inherit</field> <field name="model">pos.order</field> <field name="inherit_id" ref="point_of_sale.view_pos_order_report"/> <field name="arch" type="xml"> <xpath expr="//groupby" position="inside"> <groupby string="Commission" context="{'group_by': 'order_line.product_id.x_commission'}">order_line.product_id.x_commission</groupby> </xpath> </field> </record>
二、从其他视图访问这个Commission字段
完全可以!只要视图对应的模型能关联到product.product,就能通过关联字段拿到x_commission:
- POS订单行视图:在
pos.order.line的列表/表单视图里,直接添加<field name="product_id.x_commission"/>,就能显示对应产品的佣金数值。 - POS订单表单视图:要是想在订单层面展示(比如汇总所有订单行的佣金,或者展示明细),可以添加一个计算字段做汇总,或者在订单行的子视图里直接展示佣金字段。
- 其他关联报表:像销售订单报表、库存报表这类和产品有关联的报表,都能通过
product_id.x_commission调用这个字段,不管是添加到视图里展示,还是用来做筛选、分组都没问题。
小提醒:如果是在报表里做聚合统计(比如按佣金分组计算订单总金额),要注意视图的聚合逻辑,避免出现重复统计的情况哦~
内容的提问来源于stack exchange,提问作者japv00
相关产品推荐
相关产品推荐

