Files

44 lines
1.5 KiB
Python

from odoo.exceptions import ValidationError
from odoo import models, fields, api
from odoo.tools.translate import _
class ResUsers(models.Model):
_inherit = "res.users"
l10n_be_insz_or_bis_number = fields.Char("INSZ or BIS number", help="Belgian National Register number")
pos_clock_in_out_ids = fields.One2many('pos.clock.in.out', 'user_id', string='POS Clock In/Out Events')
@api.model
def _load_pos_data_fields(self, config):
result = super()._load_pos_data_fields(config)
if config.l10n_be_blackbox_be_id:
result += ['l10n_be_insz_or_bis_number']
return result
@api.constrains("l10n_be_insz_or_bis_number")
def _check_l10n_be_insz_or_bis_number(self):
for emp in self:
insz_number = emp.l10n_be_insz_or_bis_number
if insz_number and not emp.is_valid_l10n_be_insz_or_bis_number(insz_number):
raise ValidationError(_("The National Register Number is not valid."))
@api.model
def is_valid_l10n_be_insz_or_bis_number(self, number):
if not number:
return False
if len(number) != 11 or not number.isdigit():
return False
partial_number = number[:-2]
modulo = int(partial_number) % 97
if modulo == 97 - int(number[-2:]):
return True
# Allow employee and user born after 2000.
partial_number = '2' + partial_number
modulo = int(partial_number) % 97
return modulo == 97 - int(number[-2:])