odoo18/addons/l10n_es_edi_facturae/models/res_company.py

41 lines
1.9 KiB
Python

from odoo import _, fields, models
class Company(models.Model):
_inherit = 'res.company'
l10n_es_edi_facturae_residence_type = fields.Char(string='Facturae EDI Residency Type Code', related='partner_id.l10n_es_edi_facturae_residence_type')
l10n_es_edi_facturae_certificate_ids = fields.One2many(string='Facturae EDI signing certificate',
comodel_name='certificate.certificate', inverse_name='company_id', domain=[('scope', '=', 'facturae')])
def _l10n_es_edi_facturae_export_check(self):
checks = {
'company_currency_check': {
'fields': [('currency_id',)],
'message': _("The company's currency must be set to Euro (€)."),
},
}
errors = {}
for key, check in checks.items():
for fields_tuple in check.pop('fields'):
if invalid_records := self.filtered(lambda record: not any(record[field] for field in fields_tuple)):
errors[f"l10n_es_edi_facturae_{key}"] = {
'level': 'danger',
'message': check['message'],
'action_text': _("View Company(s)"),
'action': invalid_records._get_records_action(name=_("Check Company Data")),
}
if invalid_records := self.filtered(lambda company: not company.sudo().l10n_es_edi_facturae_certificate_ids):
errors["l10n_es_edi_company_facturae_certificate_check"] = {
'level': 'danger',
'message': _("Company must have a valid Factura-e certificate configured."),
'action_text': _("View Certificate(s)"),
'action': {
'name': _("Settings"),
'type': 'ir.actions.act_url',
'target': 'self',
'url': '/odoo/settings#certificates_settings',
},
}
return errors