1
0
forked from Mapan/odoo17e
odoo17e-kedaikipas58/addons/l10n_lu_reports/models/res_partner.py
2024-12-10 09:04:09 +07:00

43 lines
2.1 KiB
Python

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import _, api, models, fields
from odoo.exceptions import ValidationError
import re
from odoo import fields, models, api
class ResPartner(models.Model):
_inherit = 'res.partner'
l10n_lu_is_representative = fields.Boolean(compute='_compute_l10n_lu_is_representative')
l10n_lu_agent_matr_number = fields.Char(
string="Matr Number",
help="National ID number of the accounting firm (agent company) acting as the declarer in eCDF declarations")
l10n_lu_agent_ecdf_prefix = fields.Char(
string="ECDF Prefix",
help="eCDF prefix (identifier) of the accounting firm (agent company) acting as the declarer in eCDF declarations")
l10n_lu_agent_rcs_number = fields.Char(
string="Company Registry",
help="RCS (Régistre de Commerce et des Sociétés) of the accounting firm (agent company) acting as the declarer in eCDF declarations")
@api.depends('account_represented_company_ids.account_fiscal_country_id.code')
def _compute_l10n_lu_is_representative(self):
for record in self:
record.l10n_lu_is_representative = 'LU' in record.mapped('account_represented_company_ids.account_enabled_tax_country_ids.code')
@api.constrains('l10n_lu_agent_matr_number')
def _check_agent_matr_number(self):
matr_number_re = re.compile('[0-9]{11,13}')
for record in self:
if record.l10n_lu_agent_matr_number and not matr_number_re.match(record.l10n_lu_agent_matr_number):
raise ValidationError(_("The Agent's Matr. Number is not valid. There should be between 11 and 13 digits."))
@api.constrains('l10n_lu_agent_ecdf_prefix')
def _check_agent_ecdf_prefix(self):
ecdf_re = re.compile('[0-9A-Z]{6}')
for record in self:
if record.l10n_lu_agent_ecdf_prefix and not ecdf_re.match(record.l10n_lu_agent_ecdf_prefix):
raise ValidationError(_("The Agent's ECDF Prefix is not valid. There should be exactly 6 characters."))