Печать Payslip в Odoo 11 Ошибка при печати пользователем (сотрудником) с доступом ReadOnly к Payslip - PullRequest
0 голосов
/ 24 декабря 2018

Я хочу предоставить доступ только для чтения платежных ведомостей каждому сотруднику в Odoo, где они могут войти в систему и распечатать свои собственные платежные ведомости.Я не хочу, чтобы каждый сотрудник генерировал платежные ведомости, только менеджер по персоналу / сотрудники могут генерировать платежные ведомости / платежные ведомости.Обычные пользователи могут просматривать только свои собственные платежные ведомости и получать отпечатки.

Для этого я выполнил следующие шаги:

  1. Я создал новую группу пользователей для расчета заработной платы.«Заработная плата / Сотрудник», продублировав группу «Заработная плата / Сотрудник» в режиме отладки, и предоставив доступ только для чтения к «Заработная плата / Сотрудник» на листе зарплаты.

  2. Затем я назначил эту группупользователь

  3. При входе в систему в качестве сотрудника я вижу опцию Payslip в разделе Payroll

  4. Когда я распечатываю платежную ведомость, я получаю ошибку ниже:

Error:
Odoo Server Error

Traceback (most recent call last):
File "/opt/odoo11-meshsol/odoo/fields.py", line 937, in __get__
    value = record.env.cache.get(record, self)
File "/opt/odoo11-meshsol/odoo/api.py", line 960, in get
    value = self._data[field][record.id][key]
KeyError: (<odoo.sql_db.Cursor object at 0x7f4cd83fe208>, 11)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/opt/odoo11-meshsol/odoo/models.py", line 2646, in _prefetch_field
    result = records.read([f.name for f in fs], load='_classic_write')
File "/opt/odoo11-meshsol/odoo/models.py", line 2572, in read
    fields = self.check_field_access_rights('read', fields)
File "/opt/odoo11-meshsol/odoo/models.py", line 2553, in check_field_access_rights
    (self._description, operation))
odoo.exceptions.AccessError: ('The requested operation cannot be completed due to security restrictions. Please contact your system administrator.\n\n(Document type: Employee, Operation: read)', None)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/opt/odoo11-meshsol/odoo/addons/base/ir/ir_qweb/qweb.py", line 343, in _compiled_fn
    return compiled(self, append, new, options, log)
File "<template>", line 1, in template_1366_11064
File "<template>", line 2, in body_call_content_11063
File "<template>", line 3, in foreach_11062
File "<template>", line 4, in body_call_content_11061
File "/opt/odoo11-meshsol/odoo/addons/base/ir/ir_qweb/ir_qweb.py", line 378, in _get_field
    content = converter.record_to_html(record, field_name, field_options)
File "/opt/odoo11-meshsol/odoo/addons/base/ir/ir_qweb/fields.py", line 106, in record_to_html
    value = record[field_name]
File "/opt/odoo11-meshsol/odoo/models.py", line 4758, in __getitem__
    return self._fields[key].__get__(self, type(self))
File "/opt/odoo11-meshsol/odoo/fields.py", line 941, in __get__
    self.determine_value(record)
File "/opt/odoo11-meshsol/odoo/fields.py", line 1042, in determine_value
    record._prefetch_field(self)
File "/opt/odoo11-meshsol/odoo/models.py", line 2649, in _prefetch_field
    result = self.read([f.name for f in fs], load='_classic_write')
File "/opt/odoo11-meshsol/odoo/models.py", line 2572, in read
    fields = self.check_field_access_rights('read', fields)
File "/opt/odoo11-meshsol/odoo/models.py", line 2553, in check_field_access_rights
    (self._description, operation))
odoo.exceptions.AccessError: ('The requested operation cannot be completed due to security restrictions. Please contact your system administrator.\n\n(Document type: Employee, Operation: read)', None)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/opt/odoo11-meshsol/addons/web/controllers/main.py", line 1620, in report_download
    response = self.report_routes(reportname, docids=docids, converter='pdf')
File "/opt/odoo11-meshsol/odoo/http.py", line 515, in response_wrap
    response = f(*args, **kw)
File "/opt/odoo11-meshsol/addons/web/controllers/main.py", line 1569, in report_routes
    pdf = report.with_context(context).render_qweb_pdf(docids, data=data)[0]
File "/opt/odoo11-meshsol/odoo/addons/base/ir/ir_actions_report.py", line 628, in render_qweb_pdf
    html = self.with_context(context).render_qweb_html(res_ids, data=data)[0]
File "/opt/odoo11-meshsol/odoo/addons/base/ir/ir_actions_report.py", line 666, in render_qweb_html
    return self.render_template(self.report_name, data), 'html'
File "/opt/odoo11-meshsol/odoo/addons/base/ir/ir_actions_report.py", line 470, in render_template
    return view_obj.render_template(template, values)
File "/opt/odoo11-meshsol/odoo/addons/base/ir/ir_ui_view.py", line 1201, in render_template
    return self.browse(self.get_view_id(template)).render(values, engine)
File "/opt/odoo11-meshsol/addons/website/models/ir_ui_view.py", line 113, in render
    return super(View, self).render(values, engine=engine)
File "/opt/odoo11-meshsol/addons/web_editor/models/ir_ui_view.py", line 27, in render
    return super(IrUiView, self).render(values=values, engine=engine)
File "/opt/odoo11-meshsol/odoo/addons/base/ir/ir_ui_view.py", line 1210, in render
    return self.env[engine].render(self.id, qcontext)
File "/opt/odoo11-meshsol/odoo/addons/base/ir/ir_qweb/ir_qweb.py", line 57, in render
    return super(IrQWeb, self).render(id_or_xml_id, values=values, **context)
File "/opt/odoo11-meshsol/odoo/addons/base/ir/ir_qweb/qweb.py", line 272, in render
    self.compile(template, options)(self, body.append, values or {})
File "/opt/odoo11-meshsol/odoo/addons/base/ir/ir_qweb/qweb.py", line 350, in _compiled_fn
    raise QWebException("Error to render compiling AST", e, path, node and etree.tostring(node[0], encoding='unicode'), name)
odoo.addons.base.ir.ir_qweb.qweb.QWebException: ('The requested operation cannot be completed due to security restrictions. Please contact your system administrator.\n\n(Document type: Employee, Operation: read)', None)
Traceback (most recent call last):
File "/opt/odoo11-meshsol/odoo/fields.py", line 937, in __get__
    value = record.env.cache.get(record, self)
File "/opt/odoo11-meshsol/odoo/api.py", line 960, in get
    value = self._data[field][record.id][key]
KeyError: (<odoo.sql_db.Cursor object at 0x7f4cd83fe208>, 11)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/opt/odoo11-meshsol/odoo/models.py", line 2646, in _prefetch_field
    result = records.read([f.name for f in fs], load='_classic_write')
File "/opt/odoo11-meshsol/odoo/models.py", line 2572, in read
    fields = self.check_field_access_rights('read', fields)
File "/opt/odoo11-meshsol/odoo/models.py", line 2553, in check_field_access_rights
    (self._description, operation))
odoo.exceptions.AccessError: ('The requested operation cannot be completed due to security restrictions. Please contact your system administrator.\n\n(Document type: Employee, Operation: read)', None)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/opt/odoo11-meshsol/odoo/addons/base/ir/ir_qweb/qweb.py", line 343, in _compiled_fn
    return compiled(self, append, new, options, log)
File "<template>", line 1, in template_1366_11064
File "<template>", line 2, in body_call_content_11063
File "<template>", line 3, in foreach_11062
File "<template>", line 4, in body_call_content_11061
File "/opt/odoo11-meshsol/odoo/addons/base/ir/ir_qweb/ir_qweb.py", line 378, in _get_field
    content = converter.record_to_html(record, field_name, field_options)
File "/opt/odoo11-meshsol/odoo/addons/base/ir/ir_qweb/fields.py", line 106, in record_to_html
    value = record[field_name]
File "/opt/odoo11-meshsol/odoo/models.py", line 4758, in __getitem__
    return self._fields[key].__get__(self, type(self))
File "/opt/odoo11-meshsol/odoo/fields.py", line 941, in __get__
    self.determine_value(record)
File "/opt/odoo11-meshsol/odoo/fields.py", line 1042, in determine_value
    record._prefetch_field(self)
File "/opt/odoo11-meshsol/odoo/models.py", line 2649, in _prefetch_field
    result = self.read([f.name for f in fs], load='_classic_write')
File "/opt/odoo11-meshsol/odoo/models.py", line 2572, in read
    fields = self.check_field_access_rights('read', fields)
File "/opt/odoo11-meshsol/odoo/models.py", line 2553, in check_field_access_rights
    (self._description, operation))
odoo.exceptions.AccessError: ('The requested operation cannot be completed due to security restrictions. Please contact your system administrator.\n\n(Document type: Employee, Operation: read)', None)

Error to render compiling AST
AccessError: ('The requested operation cannot be completed due to security restrictions. Please contact your system administrator.\n\n(Document type: Employee, Operation: read)', None)
Template: 1366
Path: /templates/t/t/t/t/div/table[1]/tr[2]/td[2]/div
Node: <div t-field="o.employee_id.address_home_id" t-options="{&quot;widget&quot;: &quot;contact&quot;, &quot;fields&quot;: [&quot;address&quot;, &quot;name&quot;, &quot;phone&quot;], &quot;no_marker&quot;: True, &quot;phone_icons&quot;: True}"/>

Буду очень признателен, если вы поможете мне решить эту проблему.

Скриншоты:

Расчет заработной платы/ Группы доступа для группы сотрудников

Конфигурация пользователя (сотрудника)

Спасибо,

Ata

1 Ответ

0 голосов
/ 24 декабря 2018

Трассировка стека показывает, что при печати платежной ведомости пользователю необходим доступ к o.employee_id.address_home_id, здесь employee_id является связанным полем для объекта hr.employee, который отличается от модели платежной ведомости.Таким образом, проблема, вероятно, заключается в разрешении доступа к модели hr.employee, и если вы предоставите достаточное разрешение для чтения данных из этой модели этому пользователю, проблема должна быть решена.

ОБНОВЛЕНИЕ:

проблема с правами доступа на самом деле связана с отсутствием разрешения для модели res.partner, потому что employee_id.address_home_id, здесь address_home_id также является реляционным полем для comodel res.partner, поэтому группе "Payroll / Employee" действительно нужно разрешение на чтение для модели res.partner.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...