Giter Club home page Giter Club logo

bravo's Introduction

Bravo

Gem Version Travis status Code Climate Test Coverage

Bravo Bravo permite la obtención del C.A.E C.A.E. (Código de Autorización Electrónico) por medio del Web Service de Facturación Electrónica provisto por AFIP.

Requisitos

Para poder autorizar comprobantes mediante el WSFE, AFIP requiere de ciertos pasos detallados a continuación:

  • Generar una clave privada para la aplicación.
  • Generar un CSR (Certificate Signing Request) utilizando el número de CUIT que emitirá los comprobantes y la clave privada del paso anterior. Se deberá enviar a AFIP el CSR para obtener el Certificado X.509 que se utilizará en el proceso de autorización de comprobantes.
    • Para el entorno de Testing, se debe enviar el X.509 por email a [email protected].
    • Para el entorno de Producción, el trámite se hace a través del portal AFIP
  • El certificado X.509 y la clave privada son utilizados por Bravo para obtener el token y signature a incluir en el header de autenticacion en cada request que hagamaos a los servicios de AFIP.

OpenSSL

Para cumplir con los requisitos de encriptación del Web Service de Autenticación y Autorización (WSAA), Bravo requiere OpenSSL en cualquier versión posterior a la 1.0.0a.

Como regla general, basta correr desde la línea de comandos openssl cms

Si el comando cms no está disponible, se debe actualizar OpenSSL.

Certificados

AFIP exige para acceder a sus Web Services, la utilización del WSAA. Este servicio se encarga de la autorización y autenticación de cada request hecho al web service.

Una vez instalada la version correcta de OpenSSL, podemos generar la clave privada y el CSR.

Uso

Luego de haber obtenido el certificado X.509, podemos comenzar a utilizar Bravo en el entorno para el cual sirve el certificado.

Configuración

Bravo no asume valores por defecto, por lo cual hay que configurar de forma explícita todos los parámetros:

  • pkey ruta a la clave privada
  • cert ruta al certificado X.509
  • cuit el número de CUIT para el que queremos emitir los comprobantes
  • sale_point el punto de venta a utilizar (ante la duda consulte a su contador)
  • default_concepto, default_documento y default_moneda estos valores pueden configurarse para no tener que pasarlos cada vez que emitamos un comprobante, ya que no suelen cambiar entre comprobantes emitidos por el mismo vendedor.
  • own_iva_cond condicion propia ante el IVA
  • openssl_bin path al ejecutable de OpenSSL

Ejemplo de configuración tomado del spec_helper de Bravo:

	require 'bravo'

	Bravo.pkey              			 = 'spec/fixtures/certs/pkey'
	Bravo.cert              			 = 'spec/fixtures/certs/cert.crt'
	Bravo.cuit              			 = '20287740027'
	Bravo.sale_point        			 = '0002'
	Bravo.default_concepto  			 = 'Productos y Servicios'
	Bravo.default_documento 			 = 'CUIT'
	Bravo.default_moneda    			 = :peso
	Bravo.own_iva_cond      			 = :responsable_inscripto
	Bravo.verbose           			 = 'true'
	Bravo.openssl_bin       			 = '/usr/local/Cellar/openssl/1.0.1e/bin/openssl'
	Bravo::AuthData.environment			 = :test

Emisión de comprobantes

Para emitir un comprobante, basta con:

  • instanciar la clase Bill,
  • pasarle los parámetros típicos del comprobante, como si lo llenásemos a mano,
  • llamar el método authorize, para que el WSFE autorice el comprobante que acabamos de 'llenar':

Ejemplo

Luego de configurar Bravo, autorizamos una factura:

  • Comprobante: Factura
  • Tipo: 'B'
  • A: consumidor final
  • Total: $ 100 (si fuera una factura tipo A, este valor es el neto, y Bravo calcula el IVA correspondiente)

Código de ejemplo para la configuración anterior:

	factura = Bravo::Bill.new

	factura.net          = 100.00			# el neto de la factura, total para Consumidor final
	factura.aliciva_id   = 2			# define la alicuota de iva a utilizar, ver archivo constants.
	factura.iva_cond     = :consumidor_final	# la condición ante el iva del 	comprador
	factura.concepto     = 'Servicios'		# concepto de la factura
	factura.invoice_type = :invoice			# el tipo de comprobante a emitir, en este caso factura.

	bill.authorize

	bill.response.cae				# contiene el cae para este comprobante.

TODO list

  • rdoc
  • mensajes de error más completos

Agradecimientos

  • Emilio Tagua por sus consejos y contribuciones.

Copyright (c) 2010 Leandro Marcucci & Vurbia Technologies International Inc. See LICENSE.txt for further details.

bravo's People

Contributors

leanucci avatar miloops avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

bravo's Issues

Sigue funcionando en 2018?

Hola, muchas gracias por esta gem! Me viene re bien.
Queria preguntarte si sigue funcionando correctamente, y si no hubo ningun cambio en la API de AFIP, ya que por lo que veo los commits son hace varios años.

Mi otra duda es que no pude encontrar un metodo que contenga el numero de comprobante autorizado, ya que es necesario saberlo para confeccionar la factura.

Espero que te llegue mi mensaje y puedas responderme, saludos!

Configuración Inicial

Buenas tardes,
estaría necesitando algo de ayuda.

Necesito interactuar con AFIP para realizar facturas electrónicas, ya he creado las certificaciones y habilitado el WS en la pagina de AFIP (por el momento en el ambiente de test).

Básicamente tengo el problema de que la configuración inicial ya no tiene definido los métodos para settear el ambiente y el ejecutable de Openssl.

Por lo tanto no estaría sabiendo como pegarle al Web Service wsfe de testing, por un lado.

Obviando el tema de la configuración, intento proseguir de igual modo, y cuando intento crear un objeto Bravo::Bill, este me dice que no encuentra la ruta del ejecutable de openssl, se la setteo manual en la gema, y luego vienen mas errores, con lo cual no sé si, tirarme a debuggear toda la gema o alguien que ya halla trabajado con ella podría compartirme una ayuda.

Gracias de antemano

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.