Awesome
Cesri
Cesri es una Gema Ruby que permite consumir los servicios Web de Comprobantes Electrónicos del Servicio de Rentas Internas, para fines de la facturación electrónica en Ecuador.
Esta versión soporta únicamente la nueva modalidad "OFFLINE" del SRI.
Instalación
Agregar esta linea al archivo Gemfile de la aplicación:
gem 'cesri'
Luego ejecutar:
$ bundle
O instalar la gema manualmente:
$ gem install cesri
Instalar
$ rails generate cesri:install
Configuración
Para configurar se puede sobreescribir los valores por defecto en: config/initializers/cesri.rb
, esto por lo general no sera necesario a menos que las URL's de los servicios web que del SRI cambien por algún motivo.
Por defecto esta gema funciona bajo el ambiente de pruebas, para cambiar a un ambiente de producción es necesario cambiar la variable config.sandbox
a false,
en el archivo config/initializers/cesri.rb
de tal manera que:
Cesri.configure do |config|
#...
config.sandbox = false
end
Como se usa
Para usar esta Gema existen 2 clases importantes:
# Clase para la recepción de comprobantes
Cesri::RecepcionComprobanteService
# Clase para la autorización de comprobantes
Cesri::AutorizacionComprobanteService
Recepción de comprobantes
servicio = Cesri::RecepcionComprobanteService.new
recepcion = servicio.validar(xml_plano_firmado)
puts recepcion.success?
=> true
puts recepcion.state
=> "RECIBIDA"
En caso de que el comprobante no haya sido validado
puts recepcion.success?
=> false
puts recepcion.state
=> "DEVUELTA"
Mostrar los mensajes
recepcion.messages.each do |m|
puts m.identificador
puts m.mensaje
puts m.tipo
end
45
ERROR SECUENCIAL REGISTRADO
ERROR
Autorización de comprobantes
servicio = Cesri::AutorizacionComprobanteService.new
autorizacion = servicio.autorizar(clave_de_acceso)
puts autorizacion.success?
=> true
puts autorizacion.state
=> "AUTORIZADO"
En caso de que el comprobante no haya sido autorizado
puts autorizacion.success?
=> false
puts autorizacion.state
=> "NO AUTORIZADO"
Mostrar los mensajes
autorizacion.messages.each do |m|
puts m.identificador
puts m.mensaje
puts m.informacion_adicional
puts m.tipo
end
39
FIRMA INVALIDA
La firma es invalida [Firma inválida (firma y/o certificados alterados)]
ERROR
Licencia
Cesri es software libre, y puede ser redistribuido bajo los términos especificados en el archivo de licencia. LICENSE
file.
Para contribuir
- Fork it ( https://github.com/joselo/cesri/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request