首页 > 解决方案 > Odoo 序列重置坚持使用 UTC

问题描述

我正在使用 Odoo 序列作为表格编号。此序列设置为每月重置。但我注意到序列重置时间存在问题。

该序列结果是重置每个 UTC,而不是在服务器时区,即 UTC +8。因此,当交易发生在 7 月 1 日上午 7 点(UTC + 8)时,序列仍未重置。重置发生在 7 月 1 日上午 8 点(UTC)。

如何根据我的时区重置序列?服务器时区已经是 UTC + 8。

标签: odoosequenceodoo-8

解决方案


两个选项:

  1. 检查数据库的时区。使用以下命令在您的 postgres db 终端中执行此操作:
show timezone;

您应该期待您的本地时区或 UTC

  1. 如果您检查功能背后的模型,请在 postgress 控制台中:
 \d ir_sequence_date_range

您可能会注意到与日期范围(date_from、date_to)相关的字段被创建为“date”而不是“datetime”,因此它会错过时间。

此外,在表单视图中,无法设置时间: sequence_form

因此,另一种方法是将列的数据类型从日期更改为日期时间。为此,您必须扩展模型并重写字段,如下所示:

class IrSequenceDateRangeExtended(models.Model):
    _inherit = 'ir.sequence.date_range'
    date_from = fields.Datetime(string='From', required=True)
    date_to = fields.Datetime(string='To', required=True)

然后,更新后,您应该能够将时间设置为日期。我希望它对你有帮助。


推荐阅读