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

如何配置Odoo电商生成的报价单默认指定payment_term_id(ID=11)

解决Odoo电商自动生成报价单默认付款条件问题

问题分析

你通过开发者工具「Set Defaults」设置的sale.order.payment_term_id默认值(ID11)仅在手动创建报价单时生效,而电商自动生成的订单会 fallback 到Odoo默认的「Immediate Payment」(ID1)。这是因为Odoo电商模块在创建订单时的逻辑独立于全局字段默认值,不会直接读取你设置的全局默认。

解决方案

方案1:代码强制设置(适用于多产品/复杂场景)

创建一个自定义模块,继承电商订单创建的核心方法,强制给生成的订单指定付款条件:

from odoo import models, api

class WebsiteSale(models.Model):
    _inherit = 'website.sale'

    @api.model
    def order_create(self, order_id=False, product_id=False, add_qty=1, **kwargs):
        # 执行原生订单创建逻辑
        order_id = super().order_create(order_id=order_id, product_id=product_id, add_qty=add_qty, **kwargs)
        # 获取创建好的订单记录
        sale_order = self.env['sale.order'].browse(order_id)
        # 强制设置付款条件为ID11(若订单未指定付款条件)
        if sale_order and sale_order.payment_term_id.id != 11:
            sale_order.write({'payment_term_id': 11})
        return order_id

将上述代码放入自定义模块的models目录下,安装模块后,电商生成的所有订单都会自动使用ID11的付款条件。

方案2:产品层面配置(适用于单一产品场景)

由于你的电商仅售一种产品,直接给该产品绑定默认付款条件即可:

  • 打开目标产品的表单页面
  • 切换到「销售」标签页
  • 在「付款条件」下拉框中选择ID11的自定义付款条件
  • 保存产品设置

此后,电商端用户下单时,系统会自动将产品的付款条件继承到订单上,无需额外开发。

关于系统参数的说明

你之前尝试的系统参数x_default_payment_term_on_quotes写法不符合Odoo规范,这类自定义参数不会被系统自动识别为字段默认值。全局字段默认值的正确设置方式是通过「Set Defaults」功能,但如你所见,它对电商订单创建逻辑不生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 16:42:34