为每个现有公司动态创建记录和工资规则,并将它们链接到会计计划

Creating records and salary rules dynamically for each company existing, and linking them to the accounting plan

Odoo 13 中,我们遇到了一个 多公司问题,其中需要相同的薪资规则和薪资结构(属于OCA工资单模块)每个公司。

我们不想静态定义每个公司的记录:

我们想要创建的是一个 Odoo 函数,该函数 自动为每个公司创建记录 并链接到适当的帐户适当公司的会计计划:

@api.model
def create_rule_for_every_company(self):
    """
    function that'll create the rule for each company, in the group_system
    """
    

(从 XML 数据文件安装模块时调用函数)

但很快意识到您需要对工资结构等做同样的事情,所以我想知道在 Odoo 逻辑中是否有更简单的方法来做到这一点,我不知道不知道.

这样做的目的是将每条规则链接到公司的适当account.account

基本上,我想到了这个:

  @api.model
        def create_rule_for_every_company(self):
            """
            function that'll create the rule for each company, in the group_system
            """
            list_companies = self.env['res.company'].sudo().search([])
            list_rules = self.env['hr.salary.rule'].sudo().search([('company_id', '=', 0)])
            for rule in list_rules:
              if rule.company_id is False:
                for company in list_companies:
                    if rule.child_ids:
                        for child in rule.child_ids:
                            child_copy = child.copy()
                            child_copy.sudo().write({'company_id': company.id, 'parent_rule_id': rule.id, 'rubric_id': child.rubric_id})
                        rule_copy = rule.sudo().copy()
                        rule_copy.sudo().write({'company_id': company.id, 'rubric_id': rule.rubric_id})
                    else:
                        rule_copy = rule.sudo().copy()
                        rule_copy.sudo().write({'company_id': company.id, 'rubric_id': rule.rubric_id})
              for rule in list_rules:
                  if rule.company_id is False:
                     self.sudo().unlink(rule.id)

仍在寻找更优的解决方案。

这个解决方案感觉不稳定。