销售订单的毛利值不更新的问题及解决方法
-
帐套安装了sale_margin模块,之前做的销售订单都能看到毛利,突然发现新做的销售订单没有毛利?
查了后台的表,发现sale_order_line的margin有值,但是sale_order的表的margin列缺没值,
想在表上加个触发器实现自动更新,可惜pg里触发器不会写,耐心看了代码查到了原因,和我装了sale_layout模块有关,
原因如下:
sale_margin模块,继承了sale.view_order_form,添加了purchase_price字段,销售收入- 采购成本 = 毛利
<field name="inherit_id" ref="sale.view_order_form" />
<field name="arch" type="xml">
<xpath expr="//field[@name='order_line']/form//field[@name='price_unit']" position="after">
<field name="purchase_price"/>
</xpath>
</field>
而sale_layout模块也继承了sale.view_order_form,
<field name="inherit_id" ref="sale.view_order_form"/>
<field name="priority">1000</field>
<field name="type">form</field>
<field name="arch" type="xml">
<xpath expr="/form/notebook/page/field[@name='order_line']" position="replace">
<field name="abstract_line_ids" colspan="4" nolabel="1" widget="one2many_list">
<form string="Order Line">
这个模块还没有研究过,卸载了该模块新建的销售订单毛利就正常显示了。
之前的老数据可以执行这个sql更新:
update sale_order set margin = (select margin from sale_order_line where sale_order_line.order_id=sale_order.id)