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

Odoo v15 POS销售订单时间显示异常问题求助

问题解决:Odoo 15 POS结算界面订单时间显示错误

问题根源

POS前端加载待结算的销售订单时,未将后台存储的UTC时间转换为系统/用户设置的时区,直接以UTC时间展示,导致出现时间差(如示例中的09:00变成08:00)。而结算完成后pos.order的date_order字段正确,说明后台数据存储没问题,仅前端展示逻辑存在缺陷。

解决方案:自定义模块修正前端时间转换

通过创建自定义模块覆盖POS的订单加载逻辑,确保日期从UTC转换为本地时区后再显示:

1. 创建自定义模块(示例名称:pos_fix_order_time)

在Odoo的模块目录下新建该模块,核心文件如下:

__manifest__.py

{
    'name': 'POS 订单时间显示修复',
    'version': '15.0.1.0.0',
    'category': 'Point of Sale',
    'summary': '修复POS结算界面订单时间显示错误问题',
    'depends': ['point_of_sale'],
    'data': [],
    'qweb': [],
    'assets': {
        'point_of_sale.assets': [
            'pos_fix_order_time/static/src/js/models.js',
        ],
    },
    'installable': True,
    'auto_install': False,
    'license': 'LGPL-3',
}

static/src/js/models.js

odoo.define('pos_fix_order_time.models', function (require) {
    "use strict";

    var models = require('point_of_sale.models');
    var _super_posmodel = models.PosModel.prototype;

    // 覆盖POS加载订单的方法,修正日期时区转换
    models.PosModel = models.PosModel.extend({
        load_orders: function(ids) {
            return _super_posmodel.load_orders.apply(this, arguments).then(function(orders) {
                // 遍历所有加载的订单,将UTC时间转为本地时区
                orders.forEach(function(order) {
                    if (order.date_order) {
                        const utcDate = moment.utc(order.date_order);
                        order.date_order = utcDate.local().format('YYYY-MM-DD HH:mm:ss');
                    }
                });
                return orders;
            });
        },
    });
});

2. 安装并启用模块

  • 将模块目录放入Odoo的addons文件夹
  • 在Odoo后台更新应用列表,找到该模块并安装
  • 重启POS应用(刷新POS页面)

额外排查步骤

若问题仍存在,可检查:

  • Odoo后台系统时区设置:进入设置 > 常规设置 > 时区,确认时区配置正确
  • POS设备的系统时区:确保POS运行设备的时区与Odoo后台一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 10:32:49