odoo 的 Float 类型的字段 和 Monetary 类型字段小数位数显示问题。

说明:本文的截图跟代码都是基于odoo13版本的。仅供参考。

大纲:

一、官方提供的小数准确性

二、货币字段类型Monetary的精度

三、自定义小数位数

四、视图上定义显示的小数位数

详情:

一、官方提供的小数准确性

位置:技术-设置-数据库结构-小数准确性

odbc里时间字段(小数精度-小数位数)(1)

这里官方预设了一些场景使用的小数位数的情况,修改对应的数字,就可以修改引用这个名称的显示的小数位数。用法如下:

qty = fields.Float('Qty', digits='Product Unit of Measure')

二、货币字段类型Monetary的精度

位置:开票-配置-会计-货币

注意:我选择的这个菜单是官方提供的,用户有多币种权限才能看到的。当然也可以自己根据货币模型的字段自己写视图。

odbc里时间字段(小数精度-小数位数)(2)

修改成3后,明显的效果是,销售/采购/开票中的未税金额,含税金额,合计显示3位小数。可能导致数据不准,96.00变成95.99,类似这样的。

原理说明:货币字段的小数精度是根据字段属性中设置的curreny_id而定的,就是货币的精度。

三、自定义小数位数

注意:自己在模型中自定义小数位数,这样的话,视图上显示的小数位数不能多余设定的。

won_count = fields.Float('Won Count', digits=(16, 1))

四、视图上定义显示的小数位数

注意:视图上可以显示需要的小数位数。代码如下:

<field name="factor" digits="[10, 4]"/>

思考:

显示的小数位数可以明确看到,那么在后台参与计算的又是几位小数精度呢?

,