Odoo 报告字段数据在预期时为 "Undefined" False

Odoo report field data is "Undefined" when expected False

我修改了 crm_opportunity_report :

在此之后,当我单击“+”并选择 "Is customer" 时,有时会在报告中显示值 Undefined 作为它的值。

试过这个: COALESCE(rp.customer, FALSE) as is_customer(在分组依据中也是如此)但是 "Undefined" 仍然存在。

我如何在 Odoo 报告中使 Undefined 表示 False 以便当 "Undefined" 出现时 "False"?

注意: 使用 Firefox 进行调试时,我可以观察到来自服务器的 (jsonrpc) 数据在报告项上带有 "is_customer: false" 或 "is_customer: true" .但不知何故,那些在报告视图中具有 "is_customer: false" 的项目显示为 如同 "is_customer: Undefined".

更新

我偶然发现了这个line

if (value === false) return _t("Undefined");

此逻辑背后的原因可能是什么:'if value is false return "Undefined"'?

有趣的部分,我可以添加if (value === true) return _t("Whatever"); :)

这并不理想,但您可以在 res.partner 上创建一种计算的 copy/dummy 字段,用于存储 Boolean 字段的 Char 版本。

以此为例,计算方法仅检查字段是否为 True 并根据此存储为 't''f'

is_customer_string = fields.Char('Is a Customer? (text)', compute='_compute_is_customer_string', store=True)

@api.multi
@api.depends('is_customer')
def _compute_is_customer_string(self):
    for partner in self:
        partner.is_customer_string = 't' if partner.is_customer else 'f'

Documentation on computed fields

注意:store=True可能是可选的,但是如果你存储字段,那么你必须使用一些depends字段作为触发器来重新计算。如果你不 store 计算字段,那么 depends 应该被关闭。