Impresión de códigos de barra en Odoo - QWeb

Gustavo Orrillo
- 07/11/2022 - 1 min. de lectura

Odoo permite manejar códigos de barra. Por una parte el producto (modelo product.product) tiene un campo barcode que soporta la codificación EAN13. También se pueden instalar módulos que permiten administrar múltiples códigos de barra por producto. El almacenamiento y búsqueda de información en Odoo por medio de múltiples códigos de barra es soportado.

La impresión también es soportada. Q-Web soporta imprimir múltiples códigos de barra: Codabar, Code11, Code128, EAN13, EAN8, Extended39, Extended93, FIM, MSI, POSTNET, QR, Standard39, Standard93, UPCA, USPS_4State (no incluyo I2of5 porque funciona mal).

Como hacemos para imprimir un código de barra? Es simple, es una imagen. Probemoslo en una instancia de Odoo funcionando. Solo tenemos que agregar a la URL de Odoo la ruta report/barcode/ y pasar los parámetros type (con el tipo de código de barras), value para el valor a imprimir, width para el ancho y height para el alto. Por ejemplo, queremos imprimir el valor B210008915 con código de barras tipo Code128 para un ancho de 400 y un alto de 100

http://localhost:8069/report/barcode/?type=Code128&value=B210008915&width=400&height=100

Lo que da el siguiente resultado


Si queremos agregarlo a un reporte existente de q-web, debemos agregarlo como una imagen de la siguiente manera:

<img t-att-src="'/report/barcode/?type=%s&value=%s&width=%s&height=%s'%('Code128', 'B210008915', 400, 100)"/>

La impresión de códigos de barra a modo de ejemplo lo podemos ver en el deprecado módulo l10n_ar_report_fe, donde para imprimir el CAE se hace:

<div class="footer" style="border: 1px solid black;">
    <div class="row" style="margin-bottom: 0px !important; padding-top: 2px;">
        <div class="col-4" t-if="o.afip_cae">
            <p/>
            <p><strong> CAE: </strong><span t-field="o.afip_cae"/></p>
            <p><strong> Fecha Vencimiento CAE: </strong><span t-field="o.afip_cae_due"/></p>
        </div>
        <div class="col-2" t-if="o.afip_barcode">
            <p/>
            <strong>Codigo de Barras: </strong>
        </div>
        <div class="col-6" t-if="o.afip_barcode">
            <p/>
            <img t-att-src="'/report/barcode/?type=%s&amp;value=%s&amp;width=%s&amp;height=%s'%('I2of5', o.afip_barcode, 600, 100)"                                      style="width:400px;height:50px"/>
            <p class="text-center" t-field="o.afip_barcode"/>
        </div>
    </div>
</div>

Impresoras de etiquetas de productos en impresoras de etiquetas

Imprimir en impresoras de etiquetas, es otro diferente cantar. Si bien podemos descargar el PDF e imprimirlo mediante la impresora, es poco práctico de hacer en la operatoria diaria. Para ello lo mejor es comprender como funciona ZPL e implementarlo en Odoo (como lo hace el módulo printer_zpl2). Ahora como se hace, y como se conecta la impresora remota a Odoo es otro cantar que amerita un post diferente.

Acerca de:

Gustavo Orrillo

Passionate about programming, he has implemented Odoo for different types of businesses since 2010. In Moldeo Interactive he is a founding Partner and Programmer; In addition to writing on the Blog about different topics related to the developments he makes.