我正在使用odoo 9,并且已经在“设置”->“技术”->“数据库结构”->“小数精度”->“帐户”中创建了数字3,以进行小计。然后,我添加了 sale.py price_subtotal = fields.Monetary(compute='_compute_amount', string='Subtotal', digits=dp.get_precision('Account'))
。之后,我更新了两个模块 sale 和 decimal_precision 。但是,当我创建一个新的销售订单时,小计舍入没有任何变化,它显示的是2位而不是3位。任何帮助,我现在已经在这个问题上停留了几天
答案 0 :(得分:2)
当解析器尝试获取货币字段的精度时,首先将查找digits
属性。
因此,要更改小数精度,可以将digits
属性添加到xml视图。
<record id="view_order_form_precision_3" model="ir.ui.view">
<field name="name">view.order.form.precision</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form"/>
<field name="arch" type="xml">
<xpath expr='//tree/field[@name="price_subtotal"]' position="attributes">
<attribute name="digits">(14, 3)</attribute>
</xpath>
<field name="amount_untaxed" position="attributes">
<attribute name="digits">(14, 3)</attribute>
</field>
<field name="amount_tax" position="attributes">
<attribute name="digits">(14, 3)</attribute>
</field>
<field name="amount_total" position="attributes">
<attribute name="digits">(14, 3)</attribute>
</field>
</field>
</record>
答案 1 :(得分:1)
解决方案是将字段类型从货币修改为浮动:
price_subtotal = fields.Float(compute='_compute_amount', string='Subtotal', digits=dp.get_precision('Account'))