# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
import markupsafe
from odoo import api, fields, models, release
from odoo.tools import LazyTranslate
_lt = LazyTranslate(__name__)
# === TBAI license values ===
L10N_ES_TBAI_LICENSE_DICT = {
'production': {
'license_name': _lt('Production license'), # all agencies
'license_number': 'TBAIGI5A266A7CCDE1EC',
'license_nif': 'N0251909H',
'software_name': 'Odoo SA',
'software_version': release.version,
},
'araba': {
'license_name': _lt('Test license (Araba)'),
'license_number': 'TBAIARbjjMClHKH00849',
'license_nif': 'N0251909H',
'software_name': 'Odoo SA',
'software_version': release.version,
},
'bizkaia': {
'license_name': _lt('Test license (Bizkaia)'),
'license_number': 'TBAIBI00000000PRUEBA',
'license_nif': 'A99800005',
'software_name': 'SOFTWARE GARANTE TICKETBAI PRUEBA',
'software_version': '1.0',
},
'gipuzkoa': {
'license_name': _lt('Test license (Gipuzkoa)'),
'license_number': 'TBAIGIPRE00000000965',
'license_nif': 'N0251909H',
'software_name': 'Odoo SA',
'software_version': release.version,
},
}
class ResCompany(models.Model):
_inherit = 'res.company'
l10n_es_tbai_certificate_id = fields.Many2one(
string="Certificate (TicketBAI)",
store=True,
readonly=False,
comodel_name='certificate.certificate',
compute="_compute_l10n_es_tbai_certificate",
)
l10n_es_tbai_certificate_ids = fields.One2many(
comodel_name='certificate.certificate',
inverse_name='company_id',
domain=[('scope', '=', 'tbai')],
)
# === TBAI config ===
l10n_es_tbai_tax_agency = fields.Selection(
string="Tax Agency for TBAI",
selection=[
('araba', "Hacienda Foral de Araba"), # es-vi (region code)
('bizkaia', "Hacienda Foral de Bizkaia"), # es-bi
('gipuzkoa', "Hacienda Foral de Gipuzkoa"), # es-ss
],
)
l10n_es_tbai_license_html = fields.Html(
string="TicketBAI license",
compute='_compute_l10n_es_tbai_license_html',
)
# === TBAI CHAIN HEAD ===
l10n_es_tbai_chain_sequence_id = fields.Many2one(
comodel_name='ir.sequence',
string='TicketBai account.move chain sequence',
readonly=True,
copy=False,
)
l10n_es_tbai_test_env = fields.Boolean(
string="TBAI Test Mode",
help="Use the test environment for TicketBAI",
default=True,
)
l10n_es_tbai_is_enabled = fields.Boolean(compute='_compute_l10n_es_tbai_is_enabled')
@api.depends('country_id', 'l10n_es_tbai_tax_agency')
def _compute_l10n_es_tbai_is_enabled(self):
for company in self:
company.l10n_es_tbai_is_enabled = company.country_code == 'ES' and company.l10n_es_tbai_tax_agency
@api.depends('country_id', 'l10n_es_tbai_certificate_ids')
def _compute_l10n_es_tbai_certificate(self):
for company in self:
if company.country_code == 'ES':
company.l10n_es_tbai_certificate_id = self.env['certificate.certificate'].search(
[('company_id', '=', company.id), ('is_valid', '=', True), ('scope', '=', 'tbai')],
order='date_end desc',
limit=1,
)
else:
company.l10n_es_tbai_certificate_id = False
@api.depends('country_id', 'l10n_es_tbai_test_env', 'l10n_es_tbai_tax_agency')
def _compute_l10n_es_tbai_license_html(self):
for company in self:
license_dict = company._get_l10n_es_tbai_license_dict()
if license_dict:
license_dict.update({
'tr_nif': self.env._('Licence NIF'),
'tr_number': self.env._('Licence number'),
'tr_name': self.env._('Software name'),
'tr_version': self.env._('Software version')
})
company.l10n_es_tbai_license_html = markupsafe.Markup('''
{license_name}
{tr_nif}: {license_nif}
{tr_number}: {license_number}
{tr_name}: {software_name}
{tr_version}: {software_version}