-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add post to generatue QR code in Ruby
- Loading branch information
1 parent
b91c619
commit 8c2df18
Showing
2 changed files
with
70 additions
and
0 deletions.
There are no files selected for viewing
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
--- | ||
title: "Crear QR de AFIP en Ruby" | ||
description: "Con pocas líneas de código" | ||
pubDate: "Nov 5 2024" | ||
cover: "/images/blog/ruby-create-qr.png" | ||
category: "Ruby" | ||
--- | ||
|
||
Luego de [obtener el CAE](/blog/crear-factura-electronica-de-afip-en-ruby/) vamos a generar el QR de AFIP para nuestro comprobante. | ||
|
||
## Preparamos el QR | ||
|
||
Para generar el QR vamos a utilizar [rqrcode](https://github.com/whomwah/rqrcode) | ||
|
||
```bash | ||
gem install rqrcode | ||
``` | ||
|
||
Y generamos el codigo QR | ||
|
||
```ruby | ||
require "rqrcode" | ||
require "json" | ||
require "base64" | ||
|
||
# Datos para el QR | ||
qr_code_data = { | ||
"ver": 1, # Versión del formato de los datos (1 por defecto) | ||
"fecha": "2017-10-25", # Fecha de emisión del comprobante | ||
"cuit": 12345678912, # Cuit del Emisor del comprobante | ||
"ptoVta": 1, # Punto de venta utilizado para emitir el comprobante | ||
"tipoCmp": 6, # Tipo de comprobante | ||
"nroCmp": 32, # Tipo de comprobante | ||
"importe": 150, # Importe Total del comprobante (en la moneda en la que fue emitido) | ||
"moneda": "ARS", # Moneda del comprobante | ||
"ctz": 1, # Cotización en pesos argentinos de la moneda utilizada | ||
"tipoDocRec": 80, # Código del Tipo de documento del receptor | ||
"nroDocRec": 12345678912, # Número de documento del receptor | ||
"tipoCodAut": "E", # “A” para comprobante autorizado por CAEA, “E” para comprobante autorizado por CAE | ||
"codAut": 12345678912345 # CAE o CAEA, segun corresponda | ||
} | ||
|
||
# Preparamos el texto para el qr en base a https://www.afip.gob.ar/fe/qr/documentos/QRespecificaciones.pdf | ||
qr_code_text = "https://www.afip.gob.ar/fe/qr/?p=#{Base64.urlsafe_encode64(JSON.dump(qr_code_data))}" | ||
|
||
# Generamos el QR | ||
qrcode = RQRCode::QRCode.new(qr_code_text) | ||
|
||
# Lo transformamos a PNG | ||
png = qrcode.as_png( | ||
bit_depth: 1, | ||
border_modules: 4, | ||
color_mode: ChunkyPNG::COLOR_GRAYSCALE, | ||
color: "black", | ||
file: nil, | ||
fill: "white", | ||
module_px_size: 6, | ||
resize_exactly_to: false, | ||
resize_gte_to: false, | ||
size: 200 | ||
) | ||
|
||
puts "data:image/png;base64,#{Base64.encode64(png.to_s)}" # Podemos obtenerlo como URL para usar en <img src="..."> tag | ||
IO.binwrite("./qr-afip.png", png.to_s) # o podemos guardarlo como un archivo | ||
``` | ||
|
||
![QR de AFIP](/images/blog/qr-afip.png) | ||
|
||
|
||
Ya tenemos el QR listo para nuestro comprobante. Ahora podemos [crear el PDF](/blog/crear-pdf-de-afip-en-ruby/) |