You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Odoo15自定义模块创建出库操作:库存数量异常增加问题

Odoo15 库存扣减异常问题修复方案

你的代码里有几个关键错误导致库存不仅没扣减反而异常增加,以下是问题分析和修正后的代码:

问题根源

  • 库存方向搞反了:你给stock.move的location_id直接传了rec.stock_delivery_id.id(这应该是出库类型ID,不是位置ID),而且源位置和目标位置的逻辑完全颠倒,导致库存从目标位置往源位置移动,自然会让库存增加。
  • Move与Picking关联格式错误:move_ids_without_package是Many2many字段,直接传对象实例会导致关联异常,必须用Odoo标准的Many2many赋值格式。
  • 冗余步骤干扰:action_set_quantities_to_reservation会把预留量同步到已完成量,和你提前设置的quantity_done冲突,反而打乱了库存计算。

修正后的代码

def action_confirm(self):
    for rec in self:
        # 先确认出库类型对应的源/目标位置
        picking_type = rec.stock_delivery_id
        # 创建库存移动,确保方向是从库存位置转出
        move = self.env['stock.move'].create({
            'name': 'Use on MyLocation',
            'location_id': picking_type.default_location_src_id.id,  # 库存源位置
            'location_dest_id': picking_type.default_location_dest_id.id,  # 目标位置(如客户/消耗)
            'product_id': rec.product_id.id,
            'product_uom': rec.product_id.uom_id.id,
            'product_uom_qty': rec.quantity,
            'quantity_done': rec.quantity,
            'picking_type_id': picking_type.id,  # 关联出库类型
        })
        # 创建拣货单,正确关联库存移动
        stock_picking = self.env['stock.picking'].create({
            'partner_id': rec.partner_id.id,
            'picking_type_id': picking_type.id,
            'location_id': picking_type.default_location_src_id.id,
            'location_dest_id': picking_type.default_location_dest_id.id,
            'move_ids_without_package': [(6, 0, [move.id])],  # Many2many标准赋值格式
        })
        # 执行拣货单确认和验证流程
        stock_picking.action_confirm()
        stock_picking.button_validate()

        rec.state = 'confirmed'

关键修改说明

  1. 修正库存位置方向:把stock.move的location_id改为出库类型的default_location_src_id(库存所在的源位置),确保库存是从这里转出到目标位置,实现扣减逻辑。
  2. 规范Many2many字段赋值:用[(6, 0, [move.id])]格式关联已创建的库存移动,这是Odoo中Many2many字段添加记录的标准写法。
  3. 移除冗余步骤:删掉action_set_quantities_to_reservation,因为你已经在move里设置了quantity_done,这个步骤会覆盖已有的值,导致库存计算错误。
  4. 关联出库类型到move:给stock.move加上picking_type_id,确保移动和拣货单的出库类型一致,避免流程校验出错。

内容的提问来源于stack exchange,提问作者Abdullah Elshoura

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 09:42:23