Skip to content

Commit

Permalink
Add post to generatue QR code in Ruby
Browse files Browse the repository at this point in the history
  • Loading branch information
ivanalemunioz committed Nov 5, 2024
1 parent b91c619 commit 8c2df18
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 0 deletions.
Binary file added public/images/blog/ruby-create-qr.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
70 changes: 70 additions & 0 deletions src/content/blog/crear-qr-de-afip-en-ruby.md
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/)

0 comments on commit 8c2df18

Please sign in to comment.