Skip to content

Instantly share code, notes, and snippets.

@alcidesrivera
Last active September 5, 2022 21:13
Show Gist options
  • Save alcidesrivera/0f0594cbd6ea9d33eebb to your computer and use it in GitHub Desktop.
Save alcidesrivera/0f0594cbd6ea9d33eebb to your computer and use it in GitHub Desktop.
SRI
@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