Odoo小数精度及货币精度详解

时间:2022-04-29 12:36:20

一、小数精度的设置

一般在设置-数据结构-精度设置中就可以对 小数类型的字段进行精度设置:

Odoo小数精度及货币精度详解

对于代码中定义为 digits=dp.get_precision('Product Price') 或 digits_compute=dp.get_precision('Account') 形式的字段均可以奏效。

二、货币参数

Odoo中有一类字段Monetary用于计算跟货币相关的运算,定义为Monetary的字段需要与货币(Currency_id)关联计算。

货币的设置位于 设置-公司-配置-财务-货币:

Odoo小数精度及货币精度详解

货币的精度设置:

Odoo小数精度及货币精度详解

三、 Odoo中货币的坑

关于Monetary的定义,我们可以参看源代码,可以知道 Monetary的字段是带有一个参数 currency_field的,该参数的作用是用来指明 Monetary字段运算时的精度和货币单位需要参考的字段,默认为 'currency_id'.

也就是说,我们在定义一个新对象的时候,如果定义了Monetary的字段就需要定义一个cunrrency_id(也可以为其他名称,但就需要在定义的时候带currency_field参数了),否则,你会发现你所定义的Monetary字段的字段永远是2.

即便是你同时定义了currency_id,也还需要你在XML中引用该字段才能是Monetary的精度和货币单位生效。currency_id可以设置为不可见。