将字段自定义从采购订单行复制到 odoo 中的库存移动

问题描述

我正在使用 odoo 13。我在采购订单行中有一个自定义字段权重。 我想将此字段的值复制到库存移动中的自定义字段。 我知道要将字段的值从销售订单转移到库存移动,我可以通过以下方式进行。

class StockMoveLine(models.Model):
    _inherit = 'stock.move'

    weight = fields.Float(
        compute='_compute_weight' )
    

    def _compute_weight(self):

        for move in self:
            if not (move.picking_id and move.picking_id.group_id):
                continue
            picking = move.picking_id
            sale_order = self.env['sale.order'].sudo().search([
                ('procurement_group_id','=',picking.group_id.id)],limit=1)
            # print(picking)
            
            if sale_order:
                for line in sale_order.order_line:
                    if line.product_id.id != move.product_id.id:
                        continue
                    move.update({
                        'weight': line.weight,})
                continue
            else:
                # move.update({
                #         'weight': move.weight,# })

然而,我发现自己陷入了从购买到库存移动的领域

解决方法

您可以使用 purchase_line_id 上的 stock.move 字段,它是指向 purchase.order.line

的链接

代码 - PoL Reference in Stock Move

,

如果您继承了stock.move,请将您的模型名称更改为 class StockMove(models.Model): 而不是 class StockMoveLine(models.Model):

尝试在您的计算函数上使用 @api.depends