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

96 lines
3.9 KiB
Python

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from lxml import etree, objectify
from odoo import api, models, tools
class IrAttachment(models.Model):
_inherit = 'ir.attachment'
@api.model
def _l10n_cl_edi_load_xsd_files(self, force_reload=False):
main_xsd_download_url = 'http://www.sii.cl/factura_electronica'
validation_types = {
'consu': {
'description': 'Libro de consumo de folios para boletas de venta',
'file_name': 'ConsumoFolio_v10.xsd',
'file_url': 'ConsumoFolio_v10.xsd',
},
'doc': {
'description': 'Documentos Tributarios Electrónicos',
'file_name': 'DTE_v10.xsd',
'file_url': 'schema_dte.zip',
},
'bol': {
'description': 'Validación de XML de envío de boletas de venta',
'file_name': 'EnvioBOLETA_v11.xsd',
'file_url': 'schema_envio_bol.zip',
},
'siitypes': {
'description': 'Tipos SII',
'file_name': 'SiiTypes_v10.xsd',
'file_url': 'schema_dte.zip',
},
'env': {
'description': 'Validación de XML de envío de documentos tributarios Electrónicos',
'file_name': 'EnvioDTE_v10.xsd',
'file_url': 'schema_dte.zip',
},
'recep': {
'description': 'Validación de XML de intercambio entre contribuyentes',
'file_name': 'Recibos_v10.xsd',
'file_url': 'schema19983.zip',
},
'env_recep': {
'description': 'Validación de envíos de intercambio entre contribuyentes',
'file_name': 'EnvioRecibos_v10.xsd',
'file_url': 'schema19983.zip',
},
'resp_sii': {
'description': 'Esquema de respuestas de envío del SII',
'file_name': 'RespSII_v10.xsd',
'file_url': 'schema_resp.zip',
},
'book': {
'description': 'Informacion Electronica de Libros de Compra y Venta',
'file_name': 'LibroCV_v10.xsd',
'file_url': 'schema_iecv.zip',
},
'resp_env': {
'description': 'Validación de XML de intercambio entre contribuyentes',
'file_name': 'RespuestaEnvioDTE_v10.xsd',
'file_url': 'schema_ic.zip',
},
'librobol': {
'description': 'Informacion Electronica de Libros de Boletas',
'file_name': 'LibroBOLETA_v10.xsd',
'file_url': 'schema_libro_bol.zip',
},
'libroguia': {
'description': 'Informacion Electronica del Libro de Guias',
'file_name': 'LibroGuia_v10.xsd',
'file_url': 'schema_lgd.zip',
},
'sig': {
'description': 'Validación de Firma electrónica',
'file_name': 'xmldsignature_v10.xsd',
'file_url': 'schema_dte.zip',
},
}
for values in validation_types.values():
file_url = values['file_url']
url = f'{main_xsd_download_url}/{file_url}'
tools.load_xsd_files_from_url(self.env, url, values['file_name'],
xsd_name_prefix='l10n_cl_edi', xsd_names_filter=values['file_name'],
modify_xsd_content=lambda content: etree.tostring(objectify.fromstring(content), encoding='utf-8', pretty_print=True))
return
@api.model
def action_download_xsd_files(self):
# EXTENDS account/models/ir_attachment.py
self._l10n_cl_edi_load_xsd_files()
super().action_download_xsd_files()