Odoo 11:想要根据 sale.order 模型实施原材料清单
Odoo 11 : want to implement bills of raw materials depending on sale.order model
我是 Odoo 的新手,经常卡住。现在,我真的没有想到解决方案。
我的目标是计算消耗的原材料。
问题 是我想用 mrp.bom.line 中的 product_id 初始化模型(此处 assessment.raw.material)。我尝试使用 "default=", ".create()" 但它不起作用。
我认为如果我获得所有 product_id 的所有原材料,我可以轻松地用 sql 查询填充所有列。
你能帮助我吗?
或者我弄错了?
或者你有更好的主意吗?谢谢你。抱歉我的英语不好。
class AssessmentRawMaterials(models.Model):
_name = 'assessment.raw.materials'
# get the product_id from mrp.bom.line
# which is nomenclature of each
# finished product
product_id = fields.Many2one(
string='Matières premières',
comodel_name='mrp.bom.line',
ondelete="no action",
store=True
)
# get the product unit of measure
# by calling the variable name of
# product_id
product_uom_name = fields.Char(
string=u'Unité de mesure',
related='product_id.product_id.name'
)
# compute using sql query,
# long long
# inner join
# from sale.order to mrp.bom.line
raw_material_qty = fields.Integer(
string=u'Quantité de matières premières',
default=0
)
如果您在 bom line 和 assessment raw 之间有一对一的关系 material 并且想要使用 bom lines 产品信息,请使用相关字段:
bom_line_id = fields.Many2one(
string='Matières premières',
comodel_name='mrp.bom.line',
ondelete="no action") # store not needed default True
product_id = fields.Many2one(
comodel_name='product.product',
related='bom_line_id.product_id',
store=True) # store explanation for related fields after code
在普通的 many2one 字段上,store 参数默认为 True
。在相关字段上,您确实需要决定数据库中应该发生什么:
- 设置
store=True
将在您的 assessment_raw_materials
table 上创建一个新列,并且 Odoo 会在每次更改时告知从 product_product
table 复制值.所以它有点多余,但有时会希望。
- 设置
store=False
不会创建新列,而是 Odoo 将始终从 product_product
table. 获取值
我是 Odoo 的新手,经常卡住。现在,我真的没有想到解决方案。 我的目标是计算消耗的原材料。 问题 是我想用 mrp.bom.line 中的 product_id 初始化模型(此处 assessment.raw.material)。我尝试使用 "default=", ".create()" 但它不起作用。 我认为如果我获得所有 product_id 的所有原材料,我可以轻松地用 sql 查询填充所有列。 你能帮助我吗? 或者我弄错了? 或者你有更好的主意吗?谢谢你。抱歉我的英语不好。
class AssessmentRawMaterials(models.Model):
_name = 'assessment.raw.materials'
# get the product_id from mrp.bom.line
# which is nomenclature of each
# finished product
product_id = fields.Many2one(
string='Matières premières',
comodel_name='mrp.bom.line',
ondelete="no action",
store=True
)
# get the product unit of measure
# by calling the variable name of
# product_id
product_uom_name = fields.Char(
string=u'Unité de mesure',
related='product_id.product_id.name'
)
# compute using sql query,
# long long
# inner join
# from sale.order to mrp.bom.line
raw_material_qty = fields.Integer(
string=u'Quantité de matières premières',
default=0
)
如果您在 bom line 和 assessment raw 之间有一对一的关系 material 并且想要使用 bom lines 产品信息,请使用相关字段:
bom_line_id = fields.Many2one(
string='Matières premières',
comodel_name='mrp.bom.line',
ondelete="no action") # store not needed default True
product_id = fields.Many2one(
comodel_name='product.product',
related='bom_line_id.product_id',
store=True) # store explanation for related fields after code
在普通的 many2one 字段上,store 参数默认为 True
。在相关字段上,您确实需要决定数据库中应该发生什么:
- 设置
store=True
将在您的assessment_raw_materials
table 上创建一个新列,并且 Odoo 会在每次更改时告知从product_product
table 复制值.所以它有点多余,但有时会希望。 - 设置
store=False
不会创建新列,而是 Odoo 将始终从product_product
table. 获取值