跳转到主要内容

处理时间窗口的基本模型

项目描述

Beta License: AGPL-3 OCA/server-tools Translate me on Weblate Try me on Runboat

此模块提供基类和模型,通过 time.window.mixin 来管理时间窗口。

目录

用法

示例实现可以在模块 test_base_time_window 中找到。

由于时间窗口始终通过M2o关系链接到相关模型,当定义继承混入的新模型时,应注意以下要点以确保重叠检查正常工作

  • 定义类属性 _overlap_check_field:这必须指明用于检查与相关模型特定记录相关联的重叠时间窗口记录的M2o字段。

  • 将M2o字段添加到相关模型的 api.constrains

例如

class PartnerTimeWindow(models.Model):
    _name = 'partner.time.window'
    _inherit = 'time.window.mixin'

    partner_id = fields.Many2one(
        res.partner', required=True, index=True, ondelete='cascade'
    )

    _overlap_check_field = 'partner_id'

    @api.constrains('partner_id')
    def check_window_no_overlaps(self):
        return super().check_window_no_overlaps()

已知问题/路线图

  • 使用 float_time 小部件存储时间需要额外的处理以确保在正确的时区内执行计算,因为该值不是以UTC存储在数据库中,因此必须与 tz 字段相关联。

    在这个意义上,应该只使用 float_time 来表示持续时间,而不是“时间点”,因为这始终需要日期以正确执行时区转换。(因为从UTC转换到例如欧洲/布鲁塞尔的结果在冬夏会因为夏令时不同而不同)。

    因此,正确的做法是使用 resource.calendar 使用带重复的日期时间定义时间窗口。

错误追踪器

错误跟踪在GitHub Issues。如果在那里找不到您的问题报告,请检查是否有问题。如果您是第一个发现它的人,请通过提供详细且受欢迎的反馈来帮助我们解决这个问题。

请不要直接联系贡献者寻求支持或技术问题的帮助。

致谢

作者

  • ACSONE SA/NV

  • Camptocamp

贡献者

Trobz

其他致谢

本模块的开发得到了以下机构的财务支持

  • Camptocamp

维护者

本模块由OCA维护。

Odoo Community Association

OCA,或Odoo社区协会,是一个非营利组织,其使命是支持Odoo功能的协作开发并推广其广泛应用。

本模块是GitHub上的OCA/server-tools项目的一部分。

欢迎您贡献力量。有关如何贡献的信息,请访问https://odoo-community.org/page/Contribute

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装软件包的信息。

源代码发行版

本发行版没有可用的源代码发行版文件。请参阅生成发行版存档的教程

构建发行版

由以下支持