odoo 的 Float 类型的字段 和 Monetary 类型字段小数位数显示问题。
说明:本文的截图跟代码都是基于odoo13版本的。仅供参考。
大纲:
一、官方提供的小数准确性
二、货币字段类型Monetary的精度
三、自定义小数位数
四、视图上定义显示的小数位数
详情:
一、官方提供的小数准确性
位置:技术-设置-数据库结构-小数准确性
这里官方预设了一些场景使用的小数位数的情况,修改对应的数字,就可以修改引用这个名称的显示的小数位数。用法如下:
qty = fields.Float('Qty', digits='Product Unit of Measure')
二、货币字段类型Monetary的精度
位置:开票-配置-会计-货币
注意:我选择的这个菜单是官方提供的,用户有多币种权限才能看到的。当然也可以自己根据货币模型的字段自己写视图。
修改成3后,明显的效果是,销售/采购/开票中的未税金额,含税金额,合计显示3位小数。可能导致数据不准,96.00变成95.99,类似这样的。
原理说明:货币字段的小数精度是根据字段属性中设置的curreny_id而定的,就是货币的精度。
三、自定义小数位数
注意:自己在模型中自定义小数位数,这样的话,视图上显示的小数位数不能多余设定的。
won_count = fields.Float('Won Count', digits=(16, 1))
四、视图上定义显示的小数位数
注意:视图上可以显示需要的小数位数。代码如下:
<field name="factor" digits="[10, 4]"/>
思考:
显示的小数位数可以明确看到,那么在后台参与计算的又是几位小数精度呢?
,