首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >销售订单行中物料搬运行的分配数量

销售订单行中物料搬运行的分配数量
EN

Stack Overflow用户
提问于 2018-09-06 17:56:56
回答 1查看 269关注 0票数 1

我想在sale.order.line中显示分配的每个产品数量。当我有1个销售订单行时,它可以工作,但如果我有更多的销售订单行,则所有产品的数量都相同。但是我的代码很糟糕,因为有超过1次的移动,那么我怎么做才能正确呢?

代码语言:javascript
复制
reserved_qty = fields.Float(string='Reserved Qty', compute='_get_qtys') 


@api.depends('order_id.picking_id.move_lines.state')
    def _get_qtys(self):
        for line in self:
            domain = [('id', '=', line.order_id.picking_id.move_lines.id),
                      ('product_id', '=', line.product_id.id)
                      ]
            movez = self.env['stock.move'].search(domain)
            line.not_fulfiled_qty = line.product_uom_qty - line.qty_delivered
            if line.order_id.picking_id:
                for picking in line.order_id.picking_id:
                    for move in picking.move_lines:
                        if move.state == 'assigned':
                            line.reserved_qty = movez.product_uom_qty

更新:

如果找到了解决方案,它可以正常工作,但仍然有一个问题,可以有超过1个procurement_ids吗?在某些场景下会出现单例错误吗?

代码语言:javascript
复制
@api.depends('order_id.picking_id.move_lines.state')
    def _get_qtys(self):
        for line in self:
            line.not_fulfiled_qty = line.product_uom_qty - line.qty_delivered
            if line.order_id.picking_id:
                for move in line.procurement_ids.move_ids:
                    if move.state == 'assigned':
                        line.reserved_qty = move.product_uom_qty
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-06 19:10:51

即使有更多的采购,也只需更改您的代码来处理这些情况:

代码语言:javascript
复制
            for move in line.procurement_ids.mapped('move_ids'):
                if move.state == 'assigned':
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52201462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档