Last active
September 5, 2022 21:13
-
-
Save alcidesrivera/0f0594cbd6ea9d33eebb to your computer and use it in GitHub Desktop.
SRI
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@classmethod | |
def send_receipt(self, xml): | |
buf = StringIO.StringIO() | |
buf.write(xml) | |
buffer_xml = base64.encodestring(buf.getvalue()) | |
client = Client(self.__WS_TEST_RECEIV) | |
result = client.service.validarComprobante(buffer_xml) | |
mensaje_error = "" | |
if (result[0] == 'DEVUELTA'): | |
comprobante = result[1].comprobante | |
mensaje_error += 'Clave de Acceso: ' + comprobante[0].claveAcceso | |
mensajes = comprobante[0].mensajes | |
i = 0 | |
mensaje_error += "\nErrores:\n" | |
while i < len(mensajes): | |
mensaje = mensajes[i] | |
mensaje_error += 'Identificador: ' + mensaje[i].identificador + '\nMensaje: ' + mensaje[i].mensaje + '\nTipo: ' + mensaje[i].tipo + "\n" | |
i += 1 | |
raise osv.except_osv('Error SRI', u'Error al tratar de enviar el comprobante hacia el SRI: ' + mensaje_error) | |
return True | |
@classmethod | |
def request_authorization(self, cr, uid, obj, access_key): | |
client_auto = Client(self.__WS_TEST_AUTH) | |
result_auto = client_auto.service.autorizacionComprobante(access_key) | |
autorizaciones = result_auto[2].autorizacion | |
i = 0 | |
autorizado = False | |
while i < len(autorizaciones): | |
autorizacion = autorizaciones[i] | |
estado = autorizacion.estado | |
mensaje_error = '' | |
if (estado == 'NO AUTORIZADO'): | |
# Comprobante no autorizado | |
mensajes = autorizacion.mensajes | |
j = 0 | |
mensaje_error += "\nErrores:\n" | |
while j < len(mensajes): | |
mensaje = mensajes[j] | |
mensaje_error += 'Identificador: ' + mensaje[j].identificador + '\nMensaje: ' + mensaje[j].mensaje + '\nTipo: ' + mensaje[j].tipo + '\n' | |
j += 1 | |
else: | |
autorizado = True | |
i += 1 | |
if autorizado == True: | |
numero_autorizacion = autorizacion.numeroAutorizacion | |
fecha_autorizacion = autorizacion.fechaAutorizacion | |
autorizacion_xml = etree.Element('autorizacion') | |
etree.SubElement(autorizacion_xml, 'estado').text = estado | |
etree.SubElement(autorizacion_xml, 'numeroAutorizacion').text = numero_autorizacion | |
etree.SubElement(autorizacion_xml, 'fechaAutorizacion').text = str(fecha_autorizacion.strftime("%d/%m/%Y %H:%M:%S")) | |
etree.SubElement(autorizacion_xml, 'comprobante').text = etree.CDATA(autorizacion.comprobante) | |
return {autorizacion, autorizacion_xml} | |
else: | |
raise osv.except_osv('Error SRI', u'El comprobante fue guardado, firmado y enviado exitósamente, pero no fue Autorizado' + mensaje_error) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment