从销售订单行中的移动行分配数量
Assigned quantity from move lines in sale order line
我想在 sale.order.line 中显示分配的每个产品数量。它在我有 1 个销售订单行时有效,但如果我有更多,则所有产品的数量相同。但是我的代码不好,因为有不止 1 步,所以我该怎么做才对?
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?某些场景下会不会出现单例错误?
@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
即使采购再多,也只需要修改代码来处理这种情况:
for move in line.procurement_ids.mapped('move_ids'):
if move.state == 'assigned':
我想在 sale.order.line 中显示分配的每个产品数量。它在我有 1 个销售订单行时有效,但如果我有更多,则所有产品的数量相同。但是我的代码不好,因为有不止 1 步,所以我该怎么做才对?
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?某些场景下会不会出现单例错误?
@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
即使采购再多,也只需要修改代码来处理这种情况:
for move in line.procurement_ids.mapped('move_ids'):
if move.state == 'assigned':