My error:
file:/c:/program%20files/odoo%2019.0.20260301/server/addons/benefits_plus/security/groups_rules.xml:4, somewhere inside
<record id="group_benefits_manage" model="res.groups">
<field name="name">Benefits Manager</field>
<field name="category_id" ref="base.module_category_human_resources"/>
</record>My code:
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<data noupdate="0">
<record id="group_benefits_manage" model="res.groups">
<field name="name">Benefits Manager</field>
<field name="category_id" ref="base.module_category_human_resources"/>
</record>
</data>
</odoo>How to fix it? What's the problem?
Hello,
Please review the following Groups-related changes in Odoo 19.0.
<record model="res.groups.privilege" id="res_groups_privilege_employees">
<field name="name">Employees</field>
<field name="sequence">9</field>
<field name="category_id" ref="base.module_category_human_resources"/>
</record>
<record id="group_hr_user" model="res.groups">
<field name="name">Officer: Manage all employees</field>
<field name="sequence">10</field>
<field name="privilege_id" ref="res_groups_privilege_employees"/>
<field name="implied_ids" eval="[(6, 0, [ref('base.group_user')])]"/>
<field name="comment">The user will be able to create and edit employees.</field>
</record>
Sorry but that's not it! How to check the uniqueness of an identifier? In Settings - Technical - external ID there is no such identifier at all. Changing to any other name has no effect. My __manifest__.py :
"depends": [
"account",
"base",
'mail',
'hr',
"purchase"
],
"data": [
"security/groups_rules.xml",
"views/res_users_views.xml"
File res_users_views.xml:
<record id="view_users_form_inherit_benefits" model="ir.ui.view">
<field name="name">res.users.form.inherit.benefits</field>
<field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_form"/>>
<field name="arch" type="xml">
<!-- На вашем скрине страница называется access_rights, а внутри группа Roles -->
<xpath expr="//page[@name='access_rights']/group[1]" position="after">
<group string="Дополнительные права (Benefits)">
<field name="has_group_benefits"/>>
</group>
</xpath>
</field>
</record>
My python code:
from odoo import models, fields, api
class ResUsers(models.Model):
_inherit = 'res.users'
has_group_benefits = fields.Boolean(
string="Benefits Access",
compute="_compute_has_group_benefits",
inverse="_inverse_has_group_benefits"
)
def _compute_has_group_benefits(self):
group = self.env.ref('benefits_plus.group_benefits_manage')
if not group:
return
for user in self:
user.has_group_benefits = group in user.groups_id
def _inverse_has_group_benefits(self):
group = self.env.ref('benefits_plus.group_benefits_manage')
if not group:
return
for user in self:
if user.has_group_benefits:
user.groups_id = [(4, group.id)]
else:
user.groups_id = [(3, group.id)]
Perhaps this will help to better understand the situation: