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

Odoo 14.00 Enterprise在线签署销售订单方法重写咨询

Odoo 14.0 企业版在线签署销售订单:模块与触发方法解析

功能所属模块

  • 销售订单在线签署的核心逻辑归属sale模块,电子签名能力依赖企业版专属的sign模块,客户门户端的交互流程由portal模块配合实现。

客户点击签署按钮触发的关键流程与方法

  1. 门户端入口:客户在门户页面点击签署按钮时,首先触发sign模块控制器(sign/controllers/portal.py)中对应路由/my/sign/request/<int:sign_request_id>/validate的处理方法。
  2. 核心签名验证方法:上述控制器方法最终调用sign.request模型的validate方法,完成签名有效性校验。
  3. 默认订单更新逻辑:签名验证通过后,默认流程会调用sale.order模型的action_confirm方法完成销售订单确认——这正是你需要拦截的环节。

重写方案(实现自定义状态需求)

要避免触发订单确认、仅更新自定义状态并通知销售人员,推荐重写sign.request的validate方法,替换默认的订单确认逻辑:

from odoo import models, api

class SignRequest(models.Model):
    _inherit = 'sign.request'

    @api.multi
    def validate(self):
        # 先执行父类方法完成签名基础逻辑
        res = super(SignRequest, self).validate()
        # 过滤出当前签名请求关联的销售订单
        related_orders = self.mapped('sign_item_ids.res_id').filtered(lambda rec: rec._name == 'sale.order')
        for order in related_orders:
            # 设置自定义状态字段(替换为你的实际字段名)
            order.write({'custom_order_state': 'customer_signed'})
            # 给订单负责人发送内部通知
            order.message_post(
                body=f"客户已签署订单【{order.name}】,请及时跟进",
                subtype='mail.mt_comment',
                partner_ids=order.user_id.partner_id.ids
            )
        return res

如果父类validate方法已直接触发action_confirm,你需要先通过重写拦截该逻辑,再执行自定义操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 21:37:05