跳转到主要内容

为添加多公司支持到模型提供基础。

项目描述

Production/Stable License: LGPL-3 OCA/multi-company Translate me on Weblate Try me on Runboat

此模块提供了一个抽象模型,以便由需要实现多公司功能性的模型继承。

此模块不提供直接功能。

目录

使用方法

实现

多公司抽象

《multi.company.abstract》模型旨在由任何想要实现多公司功能性的模型继承。逻辑不需要在继承模型上预先存在公司字段,但如果存在,也不会受到影响。

继承《multi.company.abstract》模型时,您必须注意它是在《_inherit》数组中列出的第一个模型

class ProductTemplate(models.Model):
    _inherit = ["multi.company.abstract", "product.template"]
    _name = "product.template"
    _description = "Product Template (Multi-Company)"

《multi.company.abstract》提供了以下字段

  • 《company_ids》 - 属于此记录的所有公司。这是一个特殊的《res.company.assignment》视图,允许绕过标准的跨公司安全策略。这些策略通常会限制用户除非当前在该公司运营,否则无法查看另一家公司。当比较此字段的记录与实际公司记录时,请注意苹果和橙子的问题。

  • 《company_id》 - 基于当前用户和允许的记录公司传递单例公司。

钩子

提供了一个通用的《post_init_hook》和《uninstall_hook》,这些钩子将改变预先存在的单公司安全规则,使其能够识别多公司。

遗憾的是,这些钩子并不适用于所有情况,但它们在相关的情况下可以删除大量的样板代码。

import logging

_logger = logging.getLogger(__name__)

try:
    from odoo.addons.base_multi_company import hooks
except ImportError:
    _logger.info('Cannot find `base_multi_company` module in addons path.')


def post_init_hook(cr, registry):
    hooks.post_init_hook(
        cr,
        'product.product_comp_rule',
        'product.template',
    )


def uninstall_hook(cr, registry):
    hooks.uninstall_hook(
        cr,
        'product.product_comp_rule',
    )

实现这些钩子的模块首先需要确定记录的正确规则(例如上述示例中的 product.product_comp_rule)。

错误跟踪器

错误在 GitHub Issues 上跟踪。如果在其中遇到问题,请检查您的错误是否已被报告。如果您是第一个发现的人,请帮助我们通过提供详细和受欢迎的 反馈 来解决这个问题。

请不要直接联系贡献者以获取支持或帮助解决技术问题。

致谢

作者

  • LasLabs

  • Tecnativa

贡献者

维护者

本模块由 OCA 维护。

Odoo Community Association

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

当前 维护者

pedrobaeza

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

欢迎您贡献。要了解如何贡献,请访问 https://odoo-community.org/page/Contribute

项目详情


下载文件

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

源代码分发

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

构建分发

由以下支持