19.0 vanilla

This commit is contained in:
Ernad Husremovic 2026-03-09 09:29:53 +01:00
parent 6e54c1af6c
commit 3ca647e428
1087 changed files with 132065 additions and 108499 deletions

View file

@ -1,13 +1,75 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from functools import partial
from odoo import models, fields
from odoo import models, fields, api
from odoo.fields import Domain
class PosConfig(models.Model):
_inherit = 'pos.config'
_name = 'pos.config'
_inherit = ['hr.mixin', 'pos.config']
employee_ids = fields.Many2many(
'hr.employee', string="Employees with access",
help='If left empty, all employees can log in to the PoS session')
minimal_employee_ids = fields.Many2many(
'hr.employee', 'pos_hr_minimal_employee_hr_employee', string="Employees with minimal access",
help='If left empty, all employees can log in to PoS')
basic_employee_ids = fields.Many2many(
'hr.employee', 'pos_hr_basic_employee_hr_employee', string="Employees with basic access",
help='If left empty, all employees can log in to PoS')
advanced_employee_ids = fields.Many2many(
'hr.employee', 'pos_hr_advanced_employee_hr_employee', string="Employees with manager access",
help='Employees linked to users with the PoS Manager role are automatically added to this list')
def write(self, vals):
if 'advanced_employee_ids' not in vals:
vals['advanced_employee_ids'] = []
vals['advanced_employee_ids'] += [(4, emp_id) for emp_id in self._get_group_pos_manager().user_ids.employee_id.ids]
# write employees in sudo, because we have no access to these corecords
sudo_vals = {
field_name: vals.pop(field_name)
for field_name in ('minimal_employee_ids', 'basic_employee_ids', 'advanced_employee_ids')
if not self.env.su
if isinstance(vals.get(field_name), list)
if all(isinstance(cmd, (list, tuple)) for cmd in vals[field_name])
}
res = super().write(vals)
if sudo_vals:
super(PosConfig, self.sudo()).write(sudo_vals)
return res
@api.onchange('minimal_employee_ids')
def _onchange_minimal_employee_ids(self):
for employee in self.minimal_employee_ids:
if employee.user_id._has_group('point_of_sale.group_pos_manager'):
self.minimal_employee_ids -= employee
elif employee in self.basic_employee_ids:
self.basic_employee_ids -= employee
elif employee in self.advanced_employee_ids:
self.advanced_employee_ids -= employee
@api.onchange('basic_employee_ids')
def _onchange_basic_employee_ids(self):
for employee in self.basic_employee_ids:
if employee.user_id._has_group('point_of_sale.group_pos_manager'):
self.basic_employee_ids -= employee
elif employee in self.advanced_employee_ids:
self.advanced_employee_ids -= employee
elif employee in self.minimal_employee_ids:
self.minimal_employee_ids -= employee
@api.onchange('advanced_employee_ids')
def _onchange_advanced_employee_ids(self):
for employee in self.advanced_employee_ids:
if employee in self.basic_employee_ids:
self.basic_employee_ids -= employee
if employee in self.minimal_employee_ids:
self.minimal_employee_ids -= employee
def _employee_domain(self, user_id):
domain = self._check_company_domain(self.company_id)
if len(self.basic_employee_ids) > 0:
domain = Domain.AND([
domain,
['|', ('user_id', '=', user_id), ('id', 'in', self.basic_employee_ids.ids + self.advanced_employee_ids.ids + self.minimal_employee_ids.ids)]
])
return domain