Introducción
Facturación Móvil es el módulo de facturación optimizado para tablets y dispositivos táctiles. Permite crear cotizaciones, facturar e imprimir desde cualquier dispositivo con navegador web.
Diferencias con Desktop
| Característica | Desktop | Móvil |
|---|---|---|
| Interfaz | Paneles múltiples en escritorio | Pantalla táctil compacta |
| Búsqueda | Modal con teclado (F2) | Barra superior siempre visible |
| Impresión | Socket VB6 / Local | Socket / Bluetooth / APK Bridge |
| Líneas | Tabla editable completa | Cards táctiles con swipe |
Pantalla principal
La pantalla se divide en tres zonas principales:
Barra de búsqueda (arriba)
- Campo de búsqueda por código o nombre
- Selector de cliente
- Teclado manual (toggle)
Lista de productos (centro)
- Resultados de búsqueda como cards
- Toque para agregar al documento
- Líneas agregadas debajo
Barra inferior (abajo)
- Total del documento
- Contador de líneas/artículos
- Botones de acción (guardar, imprimir, procesar)
- Badge de impresora predeterminada
Barra inferior — Botones
| Botón | Icono | Función |
|---|---|---|
| Teclado | Activa/desactiva teclado manual para ingresar cantidad | |
| Configurar | Abre configuración de estación (oficina, caja, bodega, impresora) | |
| Bluetooth | Conectar impresora Bluetooth (solo visible si BT es predeterminada) | |
| Imprimir | Imprimir cotización actual | |
| Abrir | Abrir cotización guardada | |
| Guardar | Guardar cotización actual | |
| Procesar | Facturar (contado, crédito, archivar) |
Buscar productos
La barra de búsqueda está siempre visible en la parte superior. Puede buscar por:
- Código — Código del artículo (exacto o parcial)
- Nombre — Descripción del producto
- Código de barras — Escanear con cámara o escáner externo
Catálogo local (offline)
El módulo descarga el catálogo de productos a IndexedDB del navegador para búsquedas más rápidas. La primera carga puede tardar unos segundos, pero después las búsquedas son instantáneas.
Orden de búsqueda
Al presionar Buscar, el sistema intenta primero por código exacto y, solo si no lo encuentra, busca por nombre. Esto evita resultados irrelevantes cuando se escanea o escribe el código completo.
Explorar por categorías
Además de buscar por código o nombre, puede explorar el catálogo en forma de árbol expandible:
📁 Subcategoría
📦 Artículo 1 [–] [cant] [+] [Agregar]
📦 Artículo 2 [–] [cant] [+] [Agregar]
- Toque una categoría (morada) para ver sus subcategorías
- Toque una subcategoría (verde) para ver sus artículos
- Ajuste la cantidad con los botones [–] y [+] y toque Agregar
Agregar al documento
Al encontrar un producto, toque sobre él para agregarlo al documento. Si el producto ya existe en las líneas:
- Con teclado manual activado — Suma la cantidad ingresada a la línea existente
- Sin teclado manual — Crea una nueva línea (permite mismo artículo múltiples veces)
Editar líneas
Cada línea agregada se ve así:
│ Nombre del artículo ₡ 1.234,00 │
│ [Editar] [Eliminar] [–] 5 [+] │
└──────────────────────────────────────┘
Doble-tap para editar
Para abrir el modal de edición avanzada debe hacer doble-tap sobre la línea (o tocar el botón Editar). El intervalo entre tap y tap es de 400 ms. Esto evita aperturas accidentales al desplazarse por la lista.
Modal de edición avanzada
Permite modificar:
- Cantidad — Con validación de fraccionamiento (si el artículo no admite decimales, solo acepta enteros)
- Precio unitario (sin IVA) / Precio con IVA — Cambiar uno recalcula el otro
- Descuento % y Tipo de descuento Hacienda
- Bodega — Requiere permiso 057
- Tipo de precio (lista P1..P10) — Requiere permiso 058
- CABYS y Actividad económica — Ver sección CABYS/Actividad
Editar precio en artículos (guardar el precio nuevo en el catálogo)
Si en el modal de edición cambia el precio del artículo (en Precio base o Precio neto), aparece el botón Editar precio en artículos. La idea: si lo cambió, posiblemente ese va a seguir siendo el precio — el botón le ofrece dejarlo guardado en el catálogo de una vez.
- Abre un modal ya precargado con el precio que usted puso (ej: el artículo estaba en 500 y lo cambió a 550 → el modal abre con 550).
- Trae los dos campos enlazados: precio sin IVA y precio neto (con IVA) — edita cualquiera y el otro se recalcula.
- Guarda en el nivel de precio seleccionado (P1, P2…) del catálogo de artículos. No modifica el documento actual (la línea ya quedó con el precio editado).
- Muestra de referencia el precio actual del catálogo antes de guardar.
- Requiere permiso 411 (crear/editar artículos). Todo cambio queda registrado en la bitácora del sistema (quién, cuándo, precio anterior → nuevo).
- Respeta el redondeo de precio configurado en el artículo; si el redondeo ajusta el valor final, el sistema se lo indica.
Eliminar línea
- Botón Eliminar en la tarjeta de línea, o
- Deslizar la línea hacia un lado para mostrar el ícono de basura
CABYS y Actividad económica
Cuando el parámetro 125 está activo (factura electrónica), cada línea debe tener un código CABYS válido y el documento debe tener asignada una Actividad económica.
Modal Hacienda
Dentro del modal de edición avanzada, toque el botón CABYS y Actividad Económica para abrir un modal dedicado con:
- Código CABYS — Input con teclado QWERTY embebido (13 dígitos)
- Nombre CABYS — Se completa automáticamente al ingresar el código
- Actividad económica — Lista desplegable con las actividades de la empresa
Estado del botón
- Sin configurar — Texto gris. Si intenta procesar sin llenar estos datos, el sistema bloquea la emisión
- Configurado — Muestra el CABYS y actividad actuales
Exonerar la cotización
Si el cliente tiene exoneración autorizada, puede exonerar toda la cotización desde el menú del documento > Exonerar cotización.
El sistema revisa el CABYS de cada artículo y le aplica automáticamente el documento de exoneración que lo cubre. Si el cliente tiene varios documentos de exoneración, en una misma factura pueden quedar líneas con documentos distintos.
- Las líneas cuyo CABYS está autorizado quedan exoneradas.
- Las líneas cuyo CABYS no está en ninguna exoneración quedan gravadas (el sistema avisa cuántas quedaron sin exonerar).
Para revertir, use Quitar exoneración en el mismo menú.
Seleccionar cliente
Toque el área del cliente en la parte superior para expandir la sección. Encontrará tres botones:
- Buscar (naranja) — Abre el modal de búsqueda de clientes. Puede buscar por nombre, cédula o código.
- Nuevo (verde) — Abre el módulo de clientes para crear uno nuevo sin salir de facturación.
- Editar (azul) — Abre el módulo de clientes con el cliente actual cargado.
Header compacto
Cuando la sección cliente está cerrada, se muestra un resumen en formato CÓDIGO-NOMBRE (por ejemplo SN-Alejandro o 444-JUAN PÉREZ).
Nombre personalizado en la factura
Permite ingresar un nombre distinto al del catálogo de clientes que aparecerá impreso en la factura, tiquete y PDF.
Ubicación
Dentro de la sección de cliente expandida, hay un campo editable "Nombre en factura" después de la dirección. Escriba el nombre deseado y confirme con el botón de check.
Casos de uso
- Cliente con nombre muy largo que necesita abreviarse en el tiquete
- Facturar a nombre de una empresa distinta a la del cliente registrado
- Cliente genérico (SN) pero con un nombre específico para ese documento
Desglose de totales
Toque sobre el total o el contador de líneas/artículos para ver el desglose completo:
- Subtotal
- Descuento total
- Impuesto (IVA)
- Total general
Info del documento
El botón Info muestra los datos del documento de trabajo: número, oficina, caja, bodega, agente de ventas y tipo de precio.
Guardar cotización
Toque el botón para guardar la cotización actual. El documento se guarda en el servidor y puede recuperarse después.
Abrir cotización
Toque el botón para abrir una cotización guardada. El modal muestra las cotizaciones disponibles con:
- Número de documento
- Fecha
- Cliente
- Total
Toque una cotización para cargarla en el documento actual.
Procesar factura
Toque el botón verde para abrir el modal de procesamiento con las opciones:
| Opción | Descripción |
|---|---|
| Factura contado | Genera factura con pago inmediato. Requiere seleccionar medio de pago. |
| Factura crédito | Genera factura a crédito. El cliente debe tener crédito habilitado. |
| Enviar Pedido | Envía el documento como pedido. Antes de enviar pregunta qué imprimir (ver abajo). |
| Archivar cotización | Guarda en histórico sin enviar a Hacienda. |
| Enviar a Cajas | Envía a módulo de Cajas para cobro posterior. |
Enviar Pedido y Archivar: elegir qué imprimir
Al tocar Pedido o Archivar aparece un modal donde usted decide la impresión antes de confirmar:
- Imprimir original — interruptor sí/no.
- Cantidad de copias — de 0 a 4 copias adicionales (botones − / +).
- El modal le muestra el total en vivo: "Se imprime 1 original + 1 copia = 2 tiquetes". Si apaga la original y deja copias en 0, el documento se envía/archiva sin imprimir.
- El sistema recuerda su última elección en ese dispositivo, para que el próximo envío sea de un solo toque.
La impresión sale por la ruta configurada en la estación (Bluetooth, APK Bridge o WebSocket).
Auto-impresión
Al procesar una factura exitosamente, el sistema imprime automáticamente según el método de impresión configurado (Socket, Bluetooth o APK Bridge).
Envío automático al cliente
Al facturar, el envío del PDF al cliente depende de si la empresa usa factura electrónica:
- Con factura electrónica: el correo (PDF + XML) se envía automáticamente después, cuando Hacienda acepta o rechaza el documento.
- Sin factura electrónica (régimen tradicional/simplificado): el PDF se envía al cliente de una vez, al momento de facturar.
El correo va al EmailFactura del cliente (más copia al agente si el parámetro 318 está activo y al respaldo del parámetro 149). A clientes genéricos (SN) o sin email no se les envía.
Imprimir
El módulo ofrece 2 opciones de impresión en todos los modales:
POS
- Imprime tiquete térmico
- Redirige automáticamente al método configurado
- Socket VB6, Bluetooth o APK Bridge
- Genera documento PDF
- Se abre en nueva pestaña
- Permite descargar o compartir
Configurar impresora
Toque el botón en la barra inferior para abrir la Configuración de Estación. En la sección de impresora POS encontrará:
Método de impresión
Seleccione uno de los tres métodos disponibles:
| Método | Descripción | Cuándo usar |
|---|---|---|
| Socket VB6 | Envía a impresora remota via socket TCP | Impresora conectada al servidor Windows |
| Bluetooth | Impresora Bluetooth via Web Bluetooth API | Impresora portátil BT (ej: PT-210) |
| APK Bridge | Impresora via app puente HTTP | Tablets SUNMI o con impresora BT via APK |
Si necesitás mezclar (por ejemplo, factura por Bluetooth pero cotización por WebSocket), usá el chip de ruta de cada documento en la tarjeta "Tipos Documentos" para afinarlo. Recordá Guardar para que quede registrado en la estación.
Ancho de papel
Configure el ancho en caracteres según su impresora:
| Valor | Papel | Impresoras |
|---|---|---|
| 32 | 58mm | SUNMI V2, PT-210, impresoras pequeñas |
| 40 | 72mm | Impresoras medianas |
| 42 | 76mm | Impresoras medianas |
| 48 | 80mm | Impresoras estándar POS |
Avance final (feed)
Número de líneas en blanco al final del tiquete. Esto permite que el papel salga completamente de la impresora para poder cortarlo.
- Valor recomendado: 5 líneas
- Si el texto queda dentro: Aumente el valor (7-10)
- Si sale mucho papel: Reduzca el valor (2-3)
Métodos de impresión
Badge de impresora
En la barra superior, junto al número de documento, verá un badge que indica el método activo:
| Badge | Significado |
|---|---|
| IMP | Sin configurar (toque para configurar) |
| POS | Socket VB6 activo |
| BT | Bluetooth activo |
| APK | APK Bridge activo |
Toque el badge para abrir la configuración de impresora.
Flujo de impresión POS
Detalle / Serie de cada línea en el tiquete
El campo Detalles / Series, notas... del modal de línea (lo que vos escribís adentro al editar un artículo) se imprime en el tiquete POS según dos parámetros de la empresa:
| Param 343 | Param 391 | Cómo sale en el tiquete |
|---|---|---|
1 | (ignorado) | Solo el detalle, oculta el nombre del artículo. Si la línea no tiene detalle, sale el nombre como respaldo. |
0 | 0 |
Nombre - detalle concatenados en la misma fila. |
0 | 1 |
Nombre en la primera fila + cada enter del detalle en renglón aparte abajo. |
Los parámetros se configuran una vez por empresa en Configuración → Parámetros. Aplica al tiquete impreso desde POS (Socket, Bluetooth, Bridge y Cola WebSocket) y también al PDF, email y vista en pantalla.
Ver factura
Después de procesar una factura, se muestra el detalle con:
- Número de factura y clave electrónica
- Estado de Hacienda (pendiente, aceptado, rechazado)
- Detalle de líneas, totales y medios de pago
- Botones para reimprimir (POS o PDF)
Reportes de ventas (tiquete)
En la ficha Ventas, debajo de los filtros, hay dos botones para imprimir un resumen en la impresora de tiquetes:
| Botón | Qué imprime |
|---|---|
| Detalle x Factura | Una línea por documento: número (últimos 10 dígitos), cantidad de líneas y total del documento. Al final, el conteo de documentos y el total general. |
| Detalle x Artículo | Ventas agrupadas por artículo: cantidad vendida, nombre y total, ordenado de mayor a menor venta. Al final, el total de todo. |
- Ambos respetan los filtros activos de la ficha: rango de fechas, vendedor, tipo de documento y búsqueda. Lo que ve en pantalla es lo que sale en el reporte.
- Las notas de crédito restan (salen en negativo) del total.
- Si hay ventas en colones y dólares, el total general se muestra por moneda.
- El reporte sale por la impresora, ruta y ancho de comprobantes configurados en la estación (igual que los recibos de CxC).
- Sin el permiso 069, el reporte solo incluye sus propias ventas.
Notas de Crédito y Débito
Desde el detalle de una factura tipo 01 (Factura Electrónica), puede generar:
Nota de Crédito (NC)
- Anula total o parcialmente la factura
- Devuelve inventario
- Genera asiento contable inverso
Nota de Débito (ND)
- Agrega cargos a la factura
- Resta inventario
- Genera asiento contable adicional
Impresora Bluetooth
Para usar una impresora Bluetooth directamente desde el navegador (Web Bluetooth API):
- Asegúrese de que la impresora esté encendida y en modo Bluetooth
- En la configuración de estación, seleccione Bluetooth
- El sistema buscará dispositivos disponibles
- Seleccione su impresora de la lista
- Haga una prueba con el botón Test
APK Bridge (SUNMI / Tablets)
El APK Bridge es una aplicación Android que actúa como puente entre el navegador Chrome y la impresora. Es necesario en:
- Tablets SUNMI — Chrome no tiene acceso a la impresora integrada
- Cualquier tablet Android — Para imprimir via Bluetooth a través de la app
Instalación
- Descargue el APK desde la configuración de estación (botón )
- Instale la app en el dispositivo (permitir orígenes desconocidos si es necesario)
- Abra la app una vez — el servicio se inicia automáticamente
- En la app, seleccione la impresora deseada (SUNMI interna o Bluetooth pareada)
- Regrese a la web y seleccione APK Bridge como método de impresión
La app muestra "Conectado"
Cuando el APK está funcionando correctamente, la configuración de estación mostrará el estado del bridge y la impresora activa.
Selección de impresora en el APK
El APK permite elegir entre:
- SUNMI Interna — Impresora integrada del PDA SUNMI
- Bluetooth pareada — Cualquier impresora BT emparejada con el dispositivo (ej: PT-210)
Auto-reconexión Bluetooth
Para vendedores en campo con impresora BT portátil, el sistema reconecta automáticamente la impresora cuando se pierde la señal, sin necesidad de intervención manual.
Cómo funciona
- Reintentos exponenciales — Hasta 5 intentos con espera de 2s, 4s, 8s, 16s, 32s entre cada uno
- Heartbeat cada 60 s — Verifica la conexión periódicamente para detectar desconexiones silenciosas
- Al volver del fondo — Cuando la app vuelve a primer plano (útil en iOS/Bluefy), intenta reconectar
Indicador visual
En la esquina superior derecha hay un badge que muestra el estado en tiempo real:
| Color | Estado | Significado |
|---|---|---|
| Verde (pulsante) | Conectado | Impresora lista. Muestra su nombre. |
| Naranja (girando) | Reconectando | Proceso activo en curso. |
| Rojo (fijo) | Desconectado | Tocar para reconectar manualmente. |
| Gris (fijo) | Sin config. | No hay impresora guardada. |
Teclados embebidos (iOS / Bluefy)
Facturación Móvil incluye teclados personalizados en pantalla para evitar los problemas de foco y usabilidad del teclado nativo de iOS, especialmente en el navegador Bluefy (que permite Bluetooth en iOS).
Teclados disponibles
| Contexto | Tipo | Descripción |
|---|---|---|
| Búsqueda de artículos | QWERTY | Se muestra embebido al abrir el modal de búsqueda. Se oculta al presionar Buscar. |
| Búsqueda de clientes | QWERTY | Mismo comportamiento que búsqueda de artículos. |
| Modal edición (cantidad/precio/descuento) | Numérico 4x3 | Teclado fijo en la parte inferior del modal. |
| Agregar cantidad | Numérico modal | Flotante al elegir artículo de la lista. |
| CABYS / Códigos | QWERTY flotante | Aparece al tocar el input CABYS. |
| Nombre cliente / texto libre | QWERTY estilo iOS | Teclado completo con Ñ, ., -, @. |
Layout del teclado numérico
│ 7 │ 8 │ 9 │
├───┼───┼───┤
│ 4 │ 5 │ 6 │
├───┼───┼───┤
│ 1 │ 2 │ 3 │
├───┼───┼───┤
│ . │ 0 │ C │
└───┴───┴───┘
Compartir PDF
Desde el detalle de una factura o cotización puede compartir el PDF directamente con apps del dispositivo (WhatsApp, correo, Drive, etc.) usando la Web Share API.
Flujo
- Si el documento aún no se ha guardado, se guarda automáticamente
- El sistema genera el PDF y lo convierte en archivo compartible
- Se abre el menú nativo de compartir del dispositivo
- Seleccione la app destino (WhatsApp, Mail, Drive, etc.)
Modo offline
El módulo puede funcionar sin conexión a internet. Un switch en la barra superior permite alternar entre modo Online y Offline.
Datos locales (IndexedDB)
Al iniciar, el sistema sincroniza el catálogo de productos y clientes en el almacenamiento local del navegador (IndexedDB). Esto permite:
- Buscar artículos por código, nombre o código de barras sin conexión
- Buscar clientes por código o nombre sin conexión
- Agregar, editar y eliminar líneas del documento sin conexión
- Calcular totales, IVA y descuentos localmente
Flujo con conexión (Online)
- Construya el documento normalmente (buscar artículos, agregar líneas, seleccionar cliente)
- Al procesar la factura, el sistema sube la proforma al servidor
- Se abre el modal de pago (contado, crédito, etc.)
- La factura se registra, se contabiliza y se envía a Hacienda
Flujo sin conexión (Offline)
- Active el modo Offline con el switch en la barra superior
- Construya el documento normalmente desde los datos locales
- Al facturar, la venta se guarda como venta pendiente en IndexedDB
- Cuando recupere la conexión, las ventas se sincronizan automáticamente
Ventas pendientes
Las ventas creadas en modo offline se almacenan como ventas pendientes en IndexedDB hasta que se sincronizan con el servidor.
Sincronización
Al recuperar la conexión, el sistema sincroniza automáticamente las ventas pendientes. Cada venta pendiente se procesa completamente:
- Se crea la factura (VentaMadre + líneas)
- Se aplica el movimiento de inventario
- Se registra el pago (DocumentoDetallePago) para el cierre de caja
- Se genera el asiento contable (ContaDiario)
- Se envía el documento electrónico a Hacienda
Consejos y trucos
Permisos del módulo
Los permisos controlan qué acciones puede realizar cada usuario en Facturación Móvil. Se asignan al grupo de usuarios desde el módulo de Seguridad (SE-001).
| Código | Nombre | Qué autoriza | Dónde aplica |
|---|---|---|---|
654 |
Facturación Móvil — Acceso | Permite entrar al módulo. Sin este permiso el menú de facturación no muestra la opción Móvil. | Menú Facturación |
078 |
Emitir factura | Autoriza procesar cotizaciones como facturas electrónicas (Contado o Crédito). Sin este permiso el botón de procesar aparece deshabilitado. | Modal Procesar |
004 |
Aplicar descuento | Permite ingresar un porcentaje de descuento en las líneas del documento. Sin este permiso el campo de descuento está bloqueado. | Edición de líneas |
023 |
Hacer descuento mayor al permitido del artículo | Permite superar el descuento máximo configurado en el artículo. Requiere también el permiso 004. | Edición de líneas |
006 |
Facturar bajo la utilidad mínima | Permite dejar el precio sin IVA (con el descuento) bajo la utilidad mínima (parámetro 16 o por nivel) aunque siga ≥ al costo. Sin el permiso, el descuento se quita o el precio se ajusta al mínimo. | Edición de líneas |
021 |
Facturar bajo el costo | Permite facturar una línea cuyo precio sin IVA (con el descuento) queda por debajo del costo. Sin el permiso, no se puede continuar. | Edición de líneas |
055 |
Modificar precio de venta | Permite cambiar el precio unitario de una línea de forma manual. | Edición de líneas |
057 |
Cambiar bodega en facturación | Permite seleccionar una bodega diferente a la asignada a la estación. | Edición de líneas |
058 |
Cambiar lista de precios | Permite seleccionar una lista de precios diferente a la predeterminada. | Panel de documento |
059 |
Eliminar líneas | Permite quitar artículos del documento antes de procesarlo. | Lista de líneas |
104 |
Guardar cotización | Permite guardar el documento como cotización (borrador) sin emitirlo como factura. | Modal Procesar |
123 |
Enviar a Cajas | Permite enviar el documento al módulo de Cajas para su cobro en caja. | Modal Procesar |
501 |
Crear Nota de Crédito | Permite generar una NC completa desde el detalle de una factura aplicada. | Detalle de factura |
525 |
Crear Nota de Débito | Permite generar una ND completa desde el detalle de una factura aplicada. | Detalle de factura |
Parámetros de empresa
Los parámetros son valores globales por empresa que afectan el comportamiento del módulo. Se configuran desde Configuración → Parámetros (CF-004).
| Código | Nombre | Qué controla | Valores |
|---|---|---|---|
16 |
Utilidad mínima % | Porcentaje mínimo de utilidad permitido al facturar. Si el precio de venta produce una utilidad menor, se muestra una advertencia al usuario. | Número decimal (ej: 10 = 10%) |
125 |
Factura Electrónica activa | Cuando está en 1, el módulo valida que cada artículo tenga código CABYS y que el documento tenga Actividad Económica antes de emitirlo. |
0 = desactivada1 = activa |
249 |
Moneda nacional | Moneda base de la empresa. Se usa como moneda por defecto en los documentos nuevos. | Código ISO (ej: CRC, USD) |
251 |
Bloquear bodega a estación | Cuando está en 1, el documento usa automáticamente la bodega asignada a la estación y no permite cambiarla aunque el usuario tenga permiso 057. |
0 = libre1 = bloqueada a estación |
343 |
Mostrar serie como nombre | Cuando está en 1, el módulo muestra el número de serie del artículo en lugar de su nombre descriptivo en las líneas del documento. |
0 = nombre1 = serie |
386 |
Copias por defecto de impresión | Número de copias que se imprimen automáticamente al emitir una factura. Afecta la impresión Bluetooth y por APK Bridge. | Número entero (ej: 1, 2) |