com.gaumala.sri.decoders

Funciones para decodificar las respuestas XML de los web services
del SRI.

respuesta-autorizacion-comprobante

(respuesta-autorizacion-comprobante xml-string)

Decodifica la respuesta SOAP xml-string del web service autorizacionComprobante. El resultado es un mapa con los campos del tipo RespuestaAutorizacionComprobante (spec :sri.respuestas/RespuestaAutorizacionComprobante).

Si la respuesta no logra ser decodificada correctamente, devuelve nil.

(-> (slurp "./respuesta_error.xml")
    (respuesta-autorizacion-comprobante))
;; => {:claveAccesoConsultada "0710202401179214673900110020010000000011234567810"
;;     :numeroComprobantes "1"
;;     :autorizaciones [{:estado "NO AUTORIZADO"
;;                       :fechaAutorizacion "2024-10-07T13:48:46-05:00"
;;                       :ambiente "PRUEBAS"
;;                       :comprobante "<?xml version="1.0" encoding="UTF-8"..."
;;                       :mensajes [{:identificador "56"
;;                                   :mensaje "ERROR ESTABLECIMIENTO CERRADO"
;;                                   :informacionAdicional "El establecimiento 002 está cerrado"
;;                                   :tipo "ERROR"}]}]}

respuesta-recepcion-comprobante

(respuesta-recepcion-comprobante xml-string)

Decodifica la respuesta SOAP xml-string del web service validarComprobante. El resultado es un mapa con los campos del tipo RespuestaRecepcionComprobante(spec :sri.respuestas/RespuestaRecepcionComprobante).

Si la respuesta no logra ser decodificada correctamente, devuelve nil.

(-> (slurp "./respuesta_error.xml")
    (respuesta-recepcion-comprobante))
;; => {:estado "DEVUELTA"
;;     :mensajes [{:identificador "35"
;;                 :mensaje "ARCHIVO NO CUMPLE ESTRUCTURA XML"
;;                 :informacionAdicional "No existe un contribuyente registrado con el RUC 1704476523001"
;;                 :tipo "ERROR"}]}