Saltearse al contenido

Escáner

Tipos de escaneo soportados

Keirost integra escaneo de codigos de barras en dos modalidades:

TipoDescripcionDispositivos
HIDlector USB/Bluetooth que actua como tecladoZxing, Symbol, Honeywell
CAMERAcamara del dispositivo usando ZXingSmartphone, tablet, portatil

Modo HID (lector de barras USB/Bluetooth)

Los lectores HID actuan como un teclado: al leer un codigo,打字 lo que el escaner lee y presionan Enter.

Keirost intercepta el evento de teclado rapido en los campos de busqueda para:

  1. Detectar que se ha escaneado (caracteres rapidos + Enter)
  2. Buscar el articulo por codigo de barras
  3. Mostrar el resultado

Configuracion

GET /api/config/scanner
PATCH /api/config/scanner
{
"hid_enabled": true,
"hid_min_chars": 6,
"hid_max_gap_ms": 50,
"hid_suffix": "Enter"
}
CampoDescripcion
hid_enabledHabilitar modo HID
hid_min_charsMinimo de caracteres para considerar escaneo (evitar falso positivo en escritura manual)
hid_max_gap_msIntervalo maximo entre teclas para considerar escaneo rapido
hid_suffixTecla final (normalmente Enter, puede ser Tab)

Modo camara (ZXing)

Para dispositivos moviles o portatiles con camara, Keirost abre un modal con la camara para decodificar codigos de barras en tiempo real.

Codigos soportados

TipoDescripcion
EAN-13Articulos de comercio estandar
EAN-8Articulos pequenos
UPC-ASistema estadounidense
Code 128Codificacion densa, usado en logistica
Code 39Industrial, catalogo
QRCódigos bidimensionales

Abrir modal de escaneo

POST /api/scanner/scan

En la interfaz web:

<BarcodeCameraModal
onScan={(barcode) => handleBarcodeScanned(barcode)}
onClose={() => setScanning(false)}
formats={['EAN_13', 'CODE_128', 'QR_CODE']}
/>

Escaneo en articulos (Items)

Desde el listado de articulos o el detalle de un documento, al escanear un codigo de barras:

  1. Se busca un articulo con barcode == scanned_code
  2. Si se encuentra, se anade una linea al documento (o se incrementa qty si ya existe)
  3. Si no se encuentra, se ofrece crear un nuevo articulo con ese codigo

Flujo en documento

Escanear codigo barras
Buscar articulo por barcode
├─ Encontrado: anadir linea (qty = 1 o qty++)
└─ No encontrado: Dialog "¿Crear articulo?"

Duplicado rapido

Al escanear un codigo ya existente en una linea del documento:

  • Si el articulo ya esta en el documento → qty++
  • Si es un codigo diferente → nueva linea

Escaneo en documentos

En pedidos y albaranes

Al escanear un codigo en la vista de edicion de documento:

  • Se busca el articulo por barcode
  • Se anade como nueva linea con cantidad 1
  • El cursor vuelve al campo de escaneo para seguir anadiendo

En facturas (con duplicado)

Si duplicated_from_id esta configurado:

Escanear codigo barras
Buscar en documento origen
├─ Encontrado en origen: anadir linea con qty++
└─ No encontrado: buscar en catalogo de articulos

En inventario (stock)

Desde el modulo de inventario, escanear un articulo muestra:

  • Stock actual por almacen
  • Ultimo movimiento
  • Ubicacion (si esta configurado)

API de escaneo

Buscar por codigo de barras

GET /api/scanner/lookup?barcode=841234567890
Authorization: Bearer <token>
{
"found": true,
"item": {
"id": "item_001",
"name": "Producto A",
"sku": "PROD-A",
"barcode": "841234567890",
"price": 29.90,
"stock": { "total": 150, "by_warehouse": [] }
}
}

Crear articulo desde codigo escaneado

POST /api/items
Authorization: Bearer <token>
Content-Type: application/json
{
"name": "Articulo nuevo (843456789012)",
"sku": "AUTO-843456789012",
"barcode": "843456789012",
"price": 0,
"type": "goods"
}

Escaneo en la Driver App

La driver app permite escanear el codigo de barras de un paquete para verificar que coincide con el envio esperado:

POST /api/logistics/driver/verify-package
Authorization: Bearer <token>
Content-Type: application/json
{
"shipment_id": "ship_001",
"barcode": "PKG-001"
}

Respuesta:

{
"verified": true,
"package": { "barcode": "PKG-001", "description": "Pedido 1234" }
}

Si el codigo no corresponde al envio, devuelve error.


Resumen de endpoints

MetodoRutaDescripcion
GET/api/config/scannerVer config del escaner
PATCH/api/config/scannerGuardar config
GET/api/scanner/lookupBuscar articulo por barcode
POST/api/logistics/driver/verify-packageVerificar paquete en driver app