【问题标题】:Odoo 11 : want to implement bills of raw materials depending on sale.order modelOdoo 11:想要根据 sale.order 模型实施原材料清单
【发布时间】:2019-01-10 12:23:44
【问题描述】:

我对 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
   )

【问题讨论】:

  • 你能分享更多关于模型关系的信息吗?首先要注意:您有一个字段product_id,它不是产品而是bom 行。感觉就是不对。你如何创建模型assesment.raw.materials的记录?
  • 两个模型(assessment.raw.material和mrp.bom.line)之间只有一个关系(many2one),我只想复制列product_id mrp.bom.line 到assessment.raw.materials 的product_idassessment.raw.materials 中的记录创建不是用户输入,而是必须自动和自动更新。
  • 如果可能,请编辑您的问题。您可以使用相关字段,我会写一个简短的答案。

标签: model odoo record


【解决方案1】:

如果您在 bom line 和评估原材料之间存在一对一的关系,并且想要使用 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。在相关字段上,您确实需要决定数据库中应该发生什么:

  1. 设置store=True 将在您的assessment_raw_materials 表上创建一个新列,并且Odoo 会告诉您在每次更改时从product_product 表中复制值。所以它有点多余,但有时是希望的。
  2. 设置store=False 不会创建新列,而是Odoo 将始终从product_product 表中获取值。

【讨论】:

  • 这比我做的要好。但是现在,我如何自动添加所有这些 bom_id ?而 bom_id (我认为该产品仍然是多余的),如何处理?谢谢。
  • bom 行不是产品,但始终是 bom 的一部分,其中包含有关产品(子产品)的信息,并且主要是数量作为非常简单的示例。我不知道您的全球目标/要求的过程,这就是为什么我在您的问题中要求提供更多信息。实际上,我不知道你在那里尝试什么 ;-)
  • 我重新编辑了我的帖子。我们同意我们需要原材料(我认为列表位于 mrp.bom.line)来构建产品(我们谈论真正的产品“成品”)。 我的目标是根据触发制造订单的销售订单来计算那些消耗的原材料,以构建真正的产品。
  • 我只是想知道,你有没有研究过 odoo.com/documentation/user/12.0/manufacturing.html 如何在 Odoo 中使用 BoM?
  • 不,我没有。项目经理只给了我 3 周的时间来学习 odoo,我只是按照这里的教程link 并阅读了这本书的相关页面(根据我的说法):Odoo 11 Development Cookbook - Second Edition - Alexandre Fayolle & Holger Brunn
猜你喜欢
  • 2015-08-02
  • 1970-01-01
  • 2017-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多