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

Odoo13采购订单确认时按条件替换默认入库路线需求

Odoo 13采购订单确认时替换入库路线的实现方案

核心实现思路

重写采购订单的action_confirm确认方法,在原生确认逻辑执行完成后,根据预设条件遍历采购订单行,将默认入库路线替换为自定义路线。

具体代码实现

创建自定义模块,继承purchase.order模型并重写确认方法:

from odoo import models, api

class PurchaseOrder(models.Model):
    _inherit = 'purchase.order'

    @api.multi
    def action_confirm(self):
        # 执行原生确认逻辑
        res = super(PurchaseOrder, self).action_confirm()
        # 遍历订单行做条件判断与路线替换
        for line in self.order_line:
            # 示例条件:产品所属类别ID为123且供应商ID为456
            if line.product_id.categ_id.id == 123 and self.partner_id.id == 456:
                # 获取自定义入库路线(优先用ID,避免名称变更导致逻辑失效)
                custom_route = self.env['stock.location.route'].browse(789)
                if custom_route:
                    line.route_id = custom_route
        return res

关键注意事项

  • 提前在系统中创建并配置好自定义入库路线,确保路线包含正确的入库规则、目标库存位置等参数
  • 条件判断优先使用记录ID而非名称,避免因名称修改导致逻辑失效
  • 必须先调用super()执行原生确认逻辑,否则会破坏采购订单的原有工作流
  • 测试时覆盖满足/不满足条件的场景,验证采购订单行的route_id是否正确更新

内部参考资料

  • Odoo官方开发文档中关于模型继承与方法重写的章节
  • purchase.order模型action_confirm方法的原生逻辑说明
  • stock.location.route模型的字段定义与使用规范

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 12:01:00