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

如何在Odoo POS中显示产品默认编码及实现指定格式咨询

在Odoo POS中显示产品默认编码(内部参考)的实现方案

嘿,这个需求完全能实现,而且强烈建议用继承的方式来做,千万别直接修改Odoo核心的models.js文件——不然下次升级Odoo你的改动就全没了,维护起来超麻烦。下面给你两个靠谱的实现方案:

方法1:通过自定义模块继承POS产品模型(推荐)

这种方式是全局统一修改产品的显示名称,所有调用产品显示名的地方都会自动变成[默认编码] 产品名称的格式,是最省心的方案。

  1. 创建自定义模块的JS文件
    在你的自定义模块下创建static/src/js/models.js,写入以下代码:
odoo.define('your_module_name.pos_product_reference', function(require) {
    "use strict";

    var models = require('point_of_sale.models');
    var _super_product = models.Product.prototype;

    // 继承POS的Product模型,重写get_display_name方法
    models.Product = models.Product.extend({
        get_display_name: function() {
            // 如果产品有默认编码,就加上前缀,否则直接显示产品名
            var ref_prefix = this.default_code ? `[${this.default_code}] ` : '';
            // 调用父类的方法获取原始产品名,拼接前缀后返回
            return ref_prefix + _super_product.get_display_name.call(this);
        },
    });

    return models;
});

记得把your_module_name替换成你实际的模块名称。

  1. 加载自定义JS文件
    在模块的views/templates.xml中添加POS资产引用,让Odoo加载你的自定义JS:
<odoo>
    <data>
        <template id="assets_pos_inherit" inherit_id="point_of_sale.assets">
            <xpath expr="." position="inside">
                <script type="text/javascript" src="/your_module_name/static/src/js/models.js"></script>
            </xpath>
        </template>
    </data>
</odoo>
  1. 生效步骤
  • 升级你的自定义模块
  • 重启Odoo服务
  • 清除浏览器缓存(重要!POS的静态文件缓存很顽固)
  • 重新打开POS界面,就能看到产品名称已经带上默认编码了

方法2:修改POS的QWeb模板(精细控制特定位置)

如果只需要在某个特定位置修改显示格式,或者某些地方没有调用get_display_name方法,可以直接修改对应的QWeb模板:

在你的模块views/templates.xml中添加模板继承:

<odoo>
    <data>
        <template id="product_display_template_inherit" inherit_id="point_of_sale.product">
            <!-- 替换产品名称的显示节点 -->
            <xpath expr="//span[@class='product-name']" position="replace">
                <span class="product-name">
                    <t t-if="product.default_code">[<t t-esc="product.default_code"/>] </t-t>
                    <t t-esc="product.display_name"/>
                </span>
            </xpath>
        </template>
    </data>
</odoo>

这个方法会直接替换POS产品卡片里的名称显示,适合针对性的调整。

注意事项

  • 永远优先用自定义模块继承的方式,不要修改Odoo核心文件,避免升级丢失改动
  • 代码中已经处理了产品没有默认编码的情况,不会显示空的[]
  • 测试前一定要清除浏览器缓存,否则可能看不到改动效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:16:08