Como imprimir etiquetas

19 de febrero de 2024 por
Gustavo Orrillo
| Sin comentarios aún
 

Dominar la impresión de etiquetas es fundamental, ya que la impresión de etiquetas (con códigos de barra y QR) y los lectores de código de barra son fundamentales para la operación de inventarios. Afortunadamente en Odoo la impresión de etiquetas es posible, uno necesita encontrar la documentación necesaria. En el caso de los lectores de código de barra, hay soluciones pero poca documentación (estamos hablando de soluciones open-source).

Bien, como hacemos para imprimir en impresoras de etiquetas? Primero para imprimir etiquetas uno necesita una impresora que soporte ZPL (Zebra Printing Language). En Odoo es factible imprimir etiquetas usando q-web, pero honestamente es preferible enrolarse en la Marina antes que usar q-web para etiquetas debido a que uno no aprovecha la productividad asociada a las impresoras de etiquetas (que se encuentra habilitada por medio del lenguaje ZPL). Solo miren la imagen de prueba de labelary y traten de replicarlo con q-web.

Como usar ZPL? La documentación se encuentra online. Solo deben integrarla con lo que necesiten imprimir (lo cual no es muy dificil, por casa tenemos un generador automático de ZPL). Ahora como se conecta Odoo a la impresora?

Hay dos maneras para hacerlo. Una forma la tenemos utilizando qz-tray y tenemos documentado en otro post. Si uno puede conectar la impresora de etiquetas con USB a la computadora con la que uno trabaja, recomendamos usar qz-tray. Porque trabaja muy bien con dispositivos conectados mediante USB y la configuración para los usuarios es mínima. Tambien es ideal cuando uno no puede intervenir en la configuración de red de la empresa (a veces pasa esto)

Ahora, si necesitamos que la impresora sea compartida por más de un usuario la misma debe estar conectada a la red. Ahi necesitamos que el administrador de red nos indique la dirección IP de la misma o la podemos descubrir utilizando nmap

nmap  192.168.0.* -p T:9100 --open

Ya con la dirección IP de la etiqueta, desde la consola del servidor podemos utilizar un script, el cual fue gentilmente compartido por Joshua Gourneau (un desarrollador de software de la NASA). El script es corto pero basicamente hace lo siguiente:

#!/usr/bin/python3

import socket

TCP_IP = <direccion IP de la impresora>
TCP_PORT = 9100

# imprime etiqueta Code128
zpl = """
^XA
^FO150,40^BY3
^BCN,110,Y,N,N
^FD123456^FS
^XZ
"""

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((TCP_IP, TCP_PORT))
s.send(bytes(zpl, "utf-8"))
s.close()

Como pueden ver, por una parte uno arma un string con el ZPL que imprime la etiqueta. Luego se abre un socket con la dirección de la impresora de etiquetas y se le envia el string con las instrucciones en ZPL de impresión de la etiqueta.

Algo muy facil de implementar en Odoo. Cualquier programador con un poco de experiencia (no se necesita un programador senior) puede hacerlo. Si es dificil tener esta funcionalidad empaquetada con la forma de módulo reutilizable. Pero bueno... así es la vida.


Gustavo Orrillo 19 de febrero de 2024
Compartir
Archivar
Identificarse dejar un comentario