#odoo #odoo-13 #odoo-accounting
Вопрос:
В 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
для компании.
Ответ №1:
В основном, я придумал это:
@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)
Все еще ищу более оптимальные решения.
Это решение кажется нестабильным.