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

Odoo 17 POS缺货商品点击即提示并禁止选中求助

Odoo 17 POS 缺货商品即时限制方案

修改思路

将原付款阶段的库存检查逻辑,前移至商品添加/数量修改环节,通过补丁覆盖POS核心交互方法,实现点击缺货商品时立即弹窗警告并禁止添加,同时防止手动调整数量绕过限制。

完整代码实现

import { patch } from '@web/core/utils/patch';
import { ErrorPopup } from '@point_of_sale/app/errors/popups/error_popup';
import { ProductScreen } from '@point_of_sale/app/screens/product_screen/product_screen';
import { Orderline } from '@point_of_sale/app/models/orderline';
import { _t } from '@web/core/l10n/translation';

// 补丁1:点击商品时检查库存,禁止缺货商品加入订单
patch(ProductScreen.prototype, {
    async add_product(product, options) {
        const posConfig = this.env.services.pos.config;
        
        if (posConfig.restrict_zero_qty && product.type === 'product') {
            if (product.qty_available <= 0) {
                this.env.services.pos.popup.add(ErrorPopup, {
                    title: _t('商品缺货'),
                    body: _t(`商品 "${product.display_name}" 已缺货,无法添加到订单。`),
                });
                return;
            }
        }
        
        await super.add_product(product, options);
    },
});

// 补丁2:阻止手动修改订单行数量添加缺货商品
patch(Orderline.prototype, {
    async set_quantity(quantity, keep_price) {
        const product = this.product;
        const posConfig = this.env.services.pos.config;
        
        if (posConfig.restrict_zero_qty && product.type === 'product') {
            if (product.qty_available <= 0 && quantity > 0) {
                this.env.services.pos.popup.add(ErrorPopup, {
                    title: _t('商品缺货'),
                    body: _t(`商品 "${product.display_name}" 已缺货,无法修改数量。`),
                });
                return;
            }
        }
        
        await super.set_quantity(quantity, keep_price);
    },
});

代码说明

  • 商品添加拦截:覆盖ProductScreen的add_product方法(POS点击商品触发的核心逻辑),提前校验库存,缺货则终止添加流程并弹窗提示。
  • 数量修改拦截:覆盖Orderline的set_quantity方法,防止用户手动调整订单行数量,将缺货商品重新加入订单。
  • 兼容原配置开关:保留restrict_zero_qty配置项,仅当POS配置开启该限制时,逻辑才会生效。
  • 遵循Odoo 17规范:使用官方提供的patch工具、弹窗组件及翻译函数,确保代码适配版本要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 03:37:07