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

Odoo10销售确认后将导航菜单从报价单切换为销售订单的实现问题

Odoo 10:销售订单确认后自动切换导航菜单到销售订单

我来帮你搞定这个问题!在Odoo 10里,直接在action_confirm里调用菜单动作没效果,主要是因为这个方法是后台逻辑,前端的导航切换需要通过返回特定的动作来触发。下面给你一个可行的实现方案:

实现思路

Odoo的导航菜单是和当前页面绑定的视图动作关联的,所以我们需要让action_confirm执行完成后,返回销售订单对应的视图动作,这样系统会自动切换到对应的导航菜单。

具体代码实现

在你的销售订单模型(sale.order)中重写action_confirm方法,保留原有业务逻辑的同时,最后返回销售订单的视图动作:

from odoo import api, models

class SaleOrder(models.Model):
    _inherit = 'sale.order'

    @api.multi
    def action_confirm(self):
        # 先执行你原有的业务逻辑
        if self.partner_id.pet_names:
            for record in self.partner_id.pet_names:
                if record == self.pet_names_info:
                    if self.order_line:
                        for s in self.order_line:
                            if s.product_id:
                                if self.ser1 or self.ind_ser1:
                                    # 这里继续你的原有业务代码即可
                                    pass
        
        # 必须调用父类的确认方法,保证Odoo原生的订单确认流程正常执行
        super(SaleOrder, self).action_confirm()
        
        # 获取销售订单列表视图的系统动作,返回后会自动切换导航菜单并跳转到列表页
        sale_order_action = self.env.ref('sale.action_orders')
        
        # 如果想确认后停留在当前订单的表单页面,替换成下面的代码:
        # sale_order_action = self.env.ref('sale.view_order_form').read()[0]
        # sale_order_action['res_id'] = self.id
        
        return sale_order_action

关键说明

  • 不要跳过super()调用:这一步能保证Odoo原生的订单状态变更、库存预留等逻辑正常运行。
  • 动作引用的选择:
    • sale.action_orders是销售订单列表视图的动作,返回后会跳转到列表页,导航菜单自动切换到“销售订单”。
    • 如果想停留在当前订单的表单页,就用sale.view_order_form,并设置res_id为当前订单ID,这样页面会刷新为已确认的订单表单,同时导航菜单也会切换过去。
  • 之前尝试失败的原因:直接在后台调用菜单动作只是执行了动作定义,但没有把动作返回给前端,前端不会触发页面和导航的切换。只有让action_confirm返回动作,前端才会响应并完成菜单切换。

内容的提问来源于stack exchange,提问作者Pawan Kumar Sharma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:08:45