Odoo 报告字段数据在预期时为 "Undefined" False
Odoo report field data is "Undefined" when expected False
我修改了 crm_opportunity_report :
添加了一个布尔字段is_customer = fields.Boolean('Is customer', readonly=True)
向视图添加了一个字段
CREATE VIEW crm_opportunity_report AS (
SELECT
<...>omitted<...>
rp.customer as is_customer
FROM
"crm_lead" c
LEFT JOIN "res_partner" rp ON rp.id = c.partner_id
<...>omitted<...>
GROUP BY c.id, stage.name, is_customer
在此之后,当我单击“+”并选择 "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
应该被关闭。
我修改了 crm_opportunity_report :
添加了一个布尔字段
is_customer = fields.Boolean('Is customer', readonly=True)
向视图添加了一个字段
CREATE VIEW crm_opportunity_report AS ( SELECT <...>omitted<...> rp.customer as is_customer FROM "crm_lead" c LEFT JOIN "res_partner" rp ON rp.id = c.partner_id <...>omitted<...> GROUP BY c.id, stage.name, is_customer
在此之后,当我单击“+”并选择 "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
应该被关闭。