Volver al inicio

Documentación: Etiquetas y Tickets

Guía rápida para integrar el motor SAE.STUDIO en tus flujos de logística y punto de venta.

01 Arquitectura Unificada

SAE.STUDIO es un motor híbrido. A diferencia de otros editores, permite gestionar tanto Etiquetado Industrial (formatos fijos como 4x6", 2x1") como Tickets de Punto de Venta (rollos continuos de 80mm/58mm).

El servicio SAE.STUDIO.Api escucha en el puerto local 5117 y procesa ambos tipos de documentos de forma nativa.

02 Integración vía API JSON

Interactúa con el servicio enviando un POST a sus endpoints correspondientes, enviando el XML de la plantilla y los datos a inyectar.

Imprimir Etiqueta Industrial (ZPL/EPL)

POST http://localhost:5117/api/labels/print
{
  "xml": "<SaeLabels>...</SaeLabels>",
  "printerName": "Zebra_ZD420",
  "data": {
    "CLIENTE": "Alejandro Eskender",
    "PRODUCTO": "Premium Label v2"
  }
}

Imprimir Ticket de Recibo (ESC/POS)

POST http://localhost:5117/api/tickets/print
{
  "xml": "<SaeTickets><Header>...</Header><Body...></SaeTickets>",
  "printerName": "Epson_TM_T20",
  "data": {
    "NRO_ORDEN": "100234",
    "TOTAL": "$150.00"
  }
}

Diseñador Visual

Utiliza el editor de escritorio para crear plantillas .SaeLabels y .SaeTickets. El servicio SAE.STUDIO.Api se encarga de inyectar las variables y convertirlo a comandos nativos.

Inyección de Variables

Mapeo dinámico de datos JSON a campos de la etiqueta.

Soporte Multi-Arquitectura

Compilado nativamente para Windows x64.

03 Referencia de Variables (Tickets)

Al diseñar un ticket, puedes utilizar variables en el texto envolviéndolas en ${VARIABLE} (ej: ${CLIENTE}). El motor de renderizado reemplazará estas variables con los valores enviados en el objeto data de la API.

Variables Especiales del Sistema

Estas variables se procesan automáticamente en el backend sin necesidad de enviarlas en el JSON:

${!date} // Fecha formato ISO
${!time} // Hora actual
${!datetime} // Fecha y Hora
${!dayname} // Nombre del día
${!weekmonth} // Semana del mes
${!weekyear} // Semana del año
${!year} // Año (YYYY)
${!month} // Mes (MM)
${!day} // Día (DD)
${!date:dd/MM/yy} // Extensible

También compatibles con tags heredados: ${DATE}, ${TIME}, ${NOW}, ${YEAR}, ${MONTH}, ${DAY}.

Comandos en Bloques

La estructura XML (.SaeTickets) soporta múltiples bloques funcionales:

  • <TextBlock>: Texto simple o con variables. Soporta align, bold, y tamaños.
  • <SepBlock>: Dibuja una línea separadora usando un carácter (ej: ------).
  • <TotalBlock>: Renderiza a dos columnas (Etiqueta a la izq., Valor a la der.).
  • <QrBlock>: Imprime un código QR dinámico basado en las variables dadas.
  • <EachBlock>: Itera sobre una lista de objetos en el JSON (ideal para productos/líneas de la orden).
  • <IfBlock> / <IfelseBlock>: Muestra contenido condicionalmente evaluando una variable booleana del JSON.
  • <ActionBlock>: Envía comandos de hardware al ticket (cut para corte, beep, o open-drawer).