gpt4 book ai didi

python - 如何使用名为 'bom_line_ids' 的 one2many 字段计算 Odoo 中产品的 BOM 总成本?

转载 作者:行者123 更新时间:2023-12-01 09:04:41 26 4
gpt4 key购买 nike

我在模型 mrp.BOM 结构中创建了一个自定义字段,如下所示,用于计算产品的 BOM 总成本:-

Field Name:- x_bom_total
Field Label:- Total BOM
Field Type:- Float
ReadOnly:- True
Dependency:- bom_line_ids

从属字段名称“bom_line_ids”是显示产品中使用的所有 Material 的字段。它引用 one2many 关系模型中的模型“mrp.bom.line”。现在在计算部分如何计算产品的总 BOM,如下所示:-

for record in self:
for each_object in record.bom_line_ids:
record['x_bom_total'] += record.bom_line_ids.qty * record.bom_line_ids.list_price

我正在使用 odoo v11。有人有想法吗?

最佳答案

您的做法是正确的,但您也应该考虑子 BOM。

首先,您几乎正确的方法没有子 BOM:

for record in self:
total = 0.0
for line in record.bom_line_ids:
total += line.product_qty * line.product_id.list_price
record['x_bom_total'] = total

现在考虑子 BOM。您显然正在使用 Odoo Studio 应用程序,但我不知道您是否可以在计算字段上定义方法,但您可以尝试一下。递归函数在这里会非常好:

def get_bom_total(lines)
total = 0.0
for line in lines:
if line.child_bom_id:
total += get_bom_total(line.child_bom_ids) # recursive call
else:
total += line.product_qty * line.product_id.list_price
return total

for record in self:
record['x_bom_total'] = get_bom_total(record.bom_line_ids)

关于python - 如何使用名为 'bom_line_ids' 的 one2many 字段计算 Odoo 中产品的 BOM 总成本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52155705/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com