Odoo18-Base/addons/l10n_es_edi_tbai/models/ir_attachment.py
2025-03-10 10:52:11 +07:00

39 lines
1.6 KiB
Python

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import models, api
from odoo.addons.l10n_es_edi_tbai.models.l10n_es_edi_tbai_agencies import get_key
from odoo.tools import xml_utils
class IrAttachment(models.Model):
_inherit = 'ir.attachment'
@api.model
def action_download_xsd_files(self):
"""
Downloads the TicketBAI XSD validation files if they don't already exist, for the active tax agency.
"""
xml_utils.load_xsd_files_from_url(
self.env, 'https://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd', 'xmldsig-core-schema.xsd',
xsd_name_prefix='l10n_es_edi_tbai')
for agency in ['gipuzkoa', 'araba', 'bizkaia']:
urls = get_key(agency, 'xsd_url')
names = get_key(agency, 'xsd_name')
# For Bizkaia, one url per XSD (post/cancel)
if isinstance(urls, dict):
for move_type in ('post', 'cancel'):
xml_utils.load_xsd_files_from_url(
self.env, urls[move_type], names[move_type],
xsd_name_prefix='l10n_es_edi_tbai',
)
# For other agencies, single url to zip file (only keep the desired names)
else:
xml_utils.load_xsd_files_from_url(
self.env, urls, # NOTE: file_name discarded when XSDs bundled in ZIPs
xsd_name_prefix='l10n_es_edi_tbai',
xsd_names_filter=list(names.values()),
)
return super().action_download_xsd_files()