FactuDesk

Manual completo de la facturación para computadora: cliente, artículos, precios, cobro e impresión

FD-001 Permiso 653 Facturación → FactuDesk AY-004
Menú Ayuda

Enviarle este manual a un usuario

El enlace abre solo este manual, sin el menú del sistema. El usuario no necesita clave ni entrar a FactuPOS: se ve en cualquier navegador y en el celular.

El WhatsApp sale del número de Soporte Real y el correo de info@soportereal.com. Con Compartir desde este teléfono sale de su propio WhatsApp y elige el contacto de su lista, sin escribir el número.

Introducción

FactuDesk es el módulo principal de facturación de FactuPOS, diseñado para uso en computadoras de escritorio. Permite crear cotizaciones, facturar de contado o crédito, imprimir en POS y enviar documentos electrónicos a Hacienda.

Flujo general de trabajo

Seleccionar cliente
Agregar artículos
Revisar y ajustar
PROCESAR
Imprimir / Enviar
Documento de trabajo Al ingresar al módulo se crea automáticamente un documento de trabajo (cotización). Puede agregar artículos sin necesidad de guardar primero.

Pantalla principal

La pantalla se divide en las siguientes áreas:

Panel Cliente (izquierda)

  • Datos del cliente seleccionado
  • Crédito disponible y deuda
  • Descuento, precio y actividad
  • Agente y referido

Panel Documento (derecha)

  • Número de documento
  • Fecha, tipo y moneda
  • Modo código de barras
  • Configuración de estación

Panel Líneas (centro)

  • Barra de búsqueda de artículos
  • Cantidad y botón Agregar
  • Tabla de líneas del documento

Panel Totales (inferior)

  • Gravado, exento, exonerado
  • Descuento total, IVA
  • Total general en moneda

Barra de herramientas superior

BotónFunción
AbrirAbrir una cotización guardada o de histórico
GuardarGuardar el documento actual como cotización
ClientesAbrir búsqueda rápida de clientes (F3)
OpcionesMAG, cambio de bodega, adelantos
UtilsHerramientas adicionales

Pantallas pequeñas y monitores bajos

FactuDesk acomoda su tamaño según el alto de la pantalla. En monitores de poca altura —portátiles de 1366×768, netbooks o una tablet en horizontal— las fichas de arriba y de abajo se compactan solas para dejarle más espacio a la lista de artículos, que es lo que usted necesita ver mientras factura.

No hay nada que configurar: el sistema lo detecta al abrir la pantalla y al cambiar el tamaño de la ventana.

Al marcar líneas aparece la barra de acciones

Cuando marca la casilla de una o varias líneas, aparece una barra con Eliminar, Tipo de precio, Descuento % e IVA para aplicarlos a todas las marcadas de una vez. Esa barra ocupa espacio, y en pantallas bajas antes dejaba la lista casi sin renglones visibles.

Ahora la barra también se compacta, y en las pantallas más bajas se acomoda en una sola fila que se corre de lado si no cabe, en vez de robarle alto a la lista.

Si aun así ve pocos renglones, tiene tres formas de ganar espacio al instante: F11 pone el navegador en pantalla completa (se van la barra de direcciones y la de marcadores, que son unos 100 píxeles), Ctrl y  reduce el tamaño de la página, y desmarcar las líneas esconde la barra de acciones.
La letra de la lista de artículos no se achica en ningún caso: lo que se compacta son los recuadros de alrededor. Lo que usted lee para facturar se mantiene del mismo tamaño.

Atajos de teclado

Los atajos permiten trabajar sin usar el ratón, ideal para facturación rápida:

TeclaAcciónCuándo usar
F1Ayuda rápida dentro de la pantallaEn cualquier momento
F2Buscar artículo (buscador MBA-001)Para agregar artículos al documento
F3Buscar clientePara cambiar el cliente
F4Abrir una cotización guardadaPara retomar o facturar una cotización
F5Sincronizar las líneas con la base de datosSi la conexión falló un momento y algo se ve raro
F6Consulta rápida de artículoVer precio y existencia sin agregarlo
F7Factura de CONTADOCerrar la venta cobrando de una vez
F8Factura de CRÉDITODejarla por cobrar en la cuenta del cliente
F9Abrir el cajón de dineroPara dar vuelto o cuadrar sin facturar
F10Guardar como cotización Permiso 104Dejar la venta a medias para seguirla después
F11Opciones de líneasCon líneas marcadas en la factura
*Factura de contado rápidaEstando en el campo de búsqueda
EnterBuscar / agregar el artículoEn el campo de código o de cantidad
SuprEliminar la línea seleccionadaSobre la lista de la factura
Moverse entre las líneasEn la factura y en los buscadores
EscCerrar la ventana abiertaEn cualquier ventana
Las tres que hay que aprenderse F2 buscar artículo, F3 buscar cliente y F7 cobrar de contado. Con esas tres se hace la mayoría del trabajo sin soltar el teclado.
Ojo si venía del sistema anterior F4 ya no procesa la factura: ahora abre las cotizaciones guardadas. Para cobrar se usa F7 (contado) o F8 (crédito).

Panel Cliente

Ubicado en la parte izquierda, muestra la información completa del cliente seleccionado.

El punto de color: en qué estado está el cliente

Junto al nombre del cliente hay un punto de color y, cuando corresponde, un rótulo de texto. Es lo primero que hay que mirar antes de facturar:

SeñalQué significaQué hacer
VerdeCliente activo del catálogoFacturar normal
Naranja + rótulo SUSPENDIDOEl cliente está suspendido, casi siempre por moraNo venderle a crédito sin autorización de quien corresponda
Rojo + rótulo INACTIVOCliente inactivo o eliminado del catálogoConfirmar antes de facturarle
GrisCliente genérico (venta de mostrador)Normal para tiquetes de contado
El rótulo se lee, el color solo no basta Por eso, además del color, aparece el texto SUSPENDIDO o INACTIVO al lado del nombre: en plena corrida de caja un punto de color se pasa por alto, una palabra no.

Campos visibles

CampoDescripción
CódigoIdentificador del cliente en el sistema
CédulaNúmero de identificación. Muestra badge MAG si aplica
Nombre FacturaNombre que aparecerá en la factura. Editable para ajustes puntuales
JurídicoRazón social (solo lectura)
ComercialNombre comercial (solo lectura)
Teléfono / EmailDatos de contacto del cliente
DirecciónDirección registrada

Fila de configuración

CampoDescripción
PrecioNivel de precio asignado al cliente (1-10). Determina qué lista de precios se usa
DescPorcentaje de descuento automático del cliente
ExentoSi el cliente está exento de IVA
ActividadActividad económica con la que se le factura al cliente. Clic para cambiarla

Con cuál actividad económica se le factura CAMBIO 2026-09-01

Un cliente puede tener varias actividades económicas registradas. La que aparece en el campo Actividad es la que va a salir en la factura electrónica.

Para cambiarla sin salir de la pantalla de facturación, haga clic sobre el código de actividad (tiene un lapicito al lado). Se abre la ventana Actividad económica con todas las actividades del cliente:

  • La que está marcada en verde es la que se está usando.
  • Doble clic sobre otra la deja marcada. También sirve moverse con las flechas ↑ ↓ y confirmar con Enter.
  • La ficha del cliente se actualiza de una y ya la factura sale con la actividad nueva.
  • Esc cierra la ventana sin cambiar nada.
Queda marcada para las próximas facturas La actividad que elija queda como la predeterminada del cliente: es la que se va a cargar la próxima vez que lo facture. Si era solo para esta factura, vuelva a entrar y marque la de siempre cuando termine.
Si el cliente no tiene actividades Las actividades se agregan desde el botón Editar del cliente, en el campo Actividades Económicas — a mano, del catálogo, o traídas de Hacienda con el botón de la nube.

En empresas que no emiten factura electrónica el campo no se puede tocar, porque la actividad económica no se usa para nada.

Botones de cliente

  • Nuevo — Crear un cliente nuevo sin salir de facturación
  • Editar — Modificar datos del cliente actual
  • Historial — Ver las últimas compras del cliente con filtros y exportación
Cliente genérico (SN) Si no se selecciona un cliente, se usa el cliente genérico "SN". Las facturas electrónicas (tipo 01) requieren un cliente con cédula; para SN se genera un tiquete electrónico (tipo 04).

Panel Crédito

Muestra la situación crediticia del cliente seleccionado:

CampoDescripción
LímiteMonto máximo de crédito autorizado
PlazoDías de crédito del cliente
DisponeCrédito disponible (Límite - Debe). Clic para ver menú de opciones
DebeSaldo total de cuentas por cobrar
TieneSaldo a favor / adelantos del cliente. Clic para ver movimientos o imprimir el saldo. Con el cliente genérico SN siempre muestra 0: esos saldos se ven en Utils → Retiro Adelantos SN (ver)
Crédito insuficiente Si el total del documento excede el crédito disponible, el sistema mostrará una alerta al intentar facturar a crédito. El usuario con permisos adecuados puede forzar la aprobación.

Panel Vendedor

Controla quién se registra como agente de ventas en la factura:

  • Usuario — Código del usuario que está facturando (no editable)
  • Agente — Vendedor asignado. Clic en el nombre (morado) para cambiar
  • Referido — Persona que refirió al cliente
Agente obligatorio (Parámetro 3) Si el parámetro 3 está activo, el agente debe ser diferente al usuario actual. Si intenta procesar con el mismo código, el sistema lo bloqueará. Cambie el agente haciendo clic en su nombre.
Usuarios del sistema no pueden ser agente desde 2026-06-15

Los usuarios 09029 y 59999 son cuentas internas del sistema y nunca pueden quedar como agente de ventas. El sistema lo protege en tres momentos:

  • Al cambiar el agente: si intenta elegir uno de esos usuarios, no se asigna y aparece un aviso.
  • Al abrir una cotización: si la cotización tenía a uno de ellos como agente, se reemplaza automáticamente por el usuario del documento y se guarda corregido.
  • Al tramitar o enviar a cajas: si el agente es uno de esos usuarios, el sistema no deja facturar ni enviar a cajas y le pide cambiar el agente.
Parámetro 922 — Cambiar cliente ya no cambia el agente desde 2026-07-08

Antes, al cambiar el cliente de la cotización, el sistema reemplazaba el agente del documento por el agente configurado en la ficha del cliente (o lo dejaba sin vendedor si el cliente no tenía uno). Ahora el comportamiento se controla con el parámetro 922:

  • Parámetro 922 = 0 (default) — Al cambiar el cliente, el agente del documento NO se toca. El agente por defecto es el usuario que creó la cotización, y solo cambia si usted lo cambia manualmente.
  • Parámetro 922 = 1 — Al cambiar el cliente, el documento hereda el agente configurado en la ficha del cliente. Si el cliente no tiene agente asignado, se conserva el agente actual (nunca queda sin vendedor).

Aplica igual en FactuDesk, SmartPOS, FactuMóvil y FactuDesk.

Usuario Ventas Última actualización: 2026-04-20

En la barra de búsqueda de artículos aparece el campo Usr. Ventas junto con un botón Cambiar. Este campo indica quién se registrará como el usuario del documento de venta.

¿Cómo funciona?

  1. Al iniciar sesión (login), el sistema asigna automáticamente su código y nombre como Usuario Ventas.
  2. Si otra persona necesita facturar desde su sesión, presione el botón Cambiar.
  3. Se abrirá un modal donde debe ingresar la clave del vendedor.
  4. El sistema busca al empleado por su clave y actualiza el Usuario Ventas con su código y nombre.
  5. El cambio se mantiene hasta que se vuelva a cambiar o se inicie sesión de nuevo.

¿Cuándo se usa en la factura?

Parámetro 390 — Usuario de la factura

Controla quién queda como UsuarioCodigo en VentaMadre:

  • Parámetro 390 = 0 — El usuario de la factura es el mismo que creó la cotización (comportamiento tradicional).
  • Parámetro 390 = 1 — El usuario de la factura es el Usuario Ventas activo en ese momento, es decir, quien realmente está vendiendo.
Parámetro 392 — Agente de la factura desde 2026-04-20

Controla quién queda como AgenteCodigo en VentaMadre. Requiere que el parámetro 390 también esté en 1.

  • Parámetro 392 = 0 (default) — Se preserva el agente original asignado en la proforma.
  • Parámetro 392 = 1 — El agente de la factura también será el Usuario Ventas activo (mismo valor que el UsuarioCodigo).

Matriz combinada de parámetros 390 + 392

390392UsuarioCodigoAgenteCodigo
0Quien creó la proformaAgente original de la proforma
10Usuario Ventas activoAgente original de la proforma (preservado)
11Usuario Ventas activoUsuario Ventas activo (mismo código)
Impacto en Comisiones

Si su empresa usa comisiones por agente (reporte VE-023), NO active el parámetro 392. De lo contrario, todas las comisiones se pagarán al cajero/usuario de ventas que factura, no al vendedor original que creó la cotización. Deje 392 = 0 y use la función "Cambiar Agente" en la proforma para asignar el vendedor correcto.

Ejemplo práctico

María (00003) inicia sesión en la computadora. Juan (00005) necesita hacer una venta desde esa misma computadora. Juan presiona Cambiar, ingresa su clave, y ahora el campo muestra 00005 Juan.

  • Con 390=1, 392=0: La factura queda con UsuarioCodigo=00005 (Juan) pero el AgenteCodigo se mantiene como el agente original de la proforma (por ejemplo, SARA).
  • Con 390=1, 392=1: La factura queda con UsuarioCodigo=00005 Y AgenteCodigo=00005 (ambos Juan). Recomendado solo para empresas donde el cajero es el mismo vendedor.

Panel Documento

Ubicado en la esquina superior derecha, controla las propiedades del documento:

CampoDescripción
NúmeroNúmero único del documento de trabajo
FechaFecha del documento. La pone el sistema sola, pero se puede cambiar: haga clic en la fecha (o en el lapicito que tiene al lado) y escoja el día en el calendario. Sirve sobre todo cuando se abre una proforma guardada días atrás y se quiere pasar al día de hoy antes de facturarla. La hora del documento no se toca, y el cambio queda anotado en el Historial del documento.
Tipo01 = Factura Electrónica, 04 = Tiquete Electrónico
MonedaCRC (colones), USD (dólares), EUR (euros), etc.
(piñón)Abre configuración de estación: oficina, caja, bodega, tipo de precio. Guardar requiere el permiso 840; sin él el modal se ve completo pero el botón sale en gris. Se otorga solo a quien ya podía facturar.

Toggles y modos

  • Código de barras — Activa modo escáner. Si el artículo ya existe en la lista, suma la cantidad en vez de crear nueva línea
  • Solo stock — Solo busca artículos con existencias en bodega
Estos dos toggles quedan guardados en esa computadora y para ese usuario: siguen igual aunque cierre la sesión o apague el equipo, y no afectan a los demás. Por eso, si a un usuario "no le salen" artículos que sus compañeros sí ven, lo primero que hay que revisar es si tiene Solo stock encendido (y, dentro de la ventana Buscar Artículo, si el combo quedó en una categoría en vez de Todas las categorías).

Botones del panel

BotónQué hace
NuevaLimpia la pantalla para empezar otro documento
ImprimirVuelve a imprimir el documento actual
HistorialMuestra todo lo que ha pasado con ese documento (quién lo tocó y cuándo)
XCierra el documento
"Ya no me sale dónde dice imprimir" El botón nunca se quitó: por un tiempo quedó como un ícono sin rótulo y por eso costaba encontrarlo. Ahora vuelve a decir Imprimir, y el del reloj de al lado dice Historial.

Panel Líneas

El área central donde se agregan los artículos del documento.

Barra de búsqueda

Escriba el código o nombre del artículo y presione Enter. Si encuentra coincidencia exacta por código, agrega directamente. Si hay varias coincidencias, abre el modal de búsqueda.

Campo de cantidad

A la derecha de la barra de búsqueda. Escriba la cantidad deseada antes de agregar. Presione Enter en el campo de cantidad para agregar el artículo.

Botón Agregar (verde)

Equivale a presionar Enter sobre la cantidad. Agrega el artículo con la cantidad especificada.

Vista simple y vista detallada

En el encabezado de la grilla, al lado derecho de la columna NOMBRE, hay un botón que alterna entre dos formas de ver las líneas. El botón dice a cuál vista lo lleva, no en cuál está.

VistaQué columnas muestra
Detallada
(la de siempre)
Todas: precio unitario, subtotal, descuentos, IVA, margen, etc.
SimpleSolo Cant., %Desc, %IVA, P. Neto, Total, Bod, Stock y %Marg, en ese orden. El espacio que se libera se lo queda el nombre del artículo, que se lee completo.
¿Qué es «P. Neto»? Es lo que vale una unidad ya con el descuento aplicado y con el IVA incluido: el precio final de venta al público. Sale de dividir el Total de la línea entre la cantidad, así que nunca puede discrepar del total que se le cobra al cliente. Solo aparece en la vista simple, porque en la detallada ese dato se ve descompuesto en precio, descuento e impuesto.
Los tres porcentajes de la vista simple %Desc se puede digitar también en esta vista, igual que en la detallada: no hace falta cambiar de vista para dar un descuento. %IVA muestra la tarifa que le tocó a la línea. %Marg es el margen de utilidad y solo lo ven los usuarios con permiso de costos; a quien no lo tenga, la columna le aparece igual pero con un .

La elección queda guardada en esa computadora: la próxima vez que entre a facturar desde ahí, la grilla abre como la dejó. Cada estación tiene la suya, así que una caja puede trabajar en simple y otra en detallada.

Sirve sobre todo en monitores angostos, donde la vista detallada obliga a desplazarse en horizontal para llegar al total. Nada se pierde: las columnas ocultas vuelven con un clic.

Las columnas de la grilla, una por una

ColumnaQué muestra
CÓDIGOCódigo del artículo
PVNivel de precio con el que entró la línea (1 = precio de mostrador, 2 = mayorista…). Se puede cambiar por línea.
NOMBREDescripción del artículo. Debajo aparecen los avisos de la línea: Requiere lote, PAQ / 10 unid (se está vendiendo por paquete), Exo 13 % (quedó exonerada).
CANTCantidad. Si el artículo se vende por paquete, aquí se digitan paquetes y el sistema calcula las unidades.
P. NETO
(solo en vista simple, entre %IVA y TOTAL)
Precio de una unidad ya con descuento e IVA: el precio final al público. Es el Total dividido entre la cantidad.
PRECIO/UDPrecio por unidad sin impuesto. Editable con permiso.
SUBTOTALCantidad × precio unitario, antes de descuento e impuesto.
%DESC y DESC $Porcentaje de descuento y cuánto representa en plata. %DESC se ve en las dos vistas; DESC $ solo en la detallada.
P.TOTALEl subtotal ya con el descuento aplicado — es la base sobre la que se calcula el impuesto.
%IVA e IVATarifa que le corresponde y el monto del impuesto. Si la línea se exoneró, aquí aparece Exo y el impuesto baja o queda en cero. %IVA se ve en las dos vistas; el monto del IVA solo en la detallada.
TOTALLo que paga el cliente por esa línea.
BODBodega de la que sale el producto.
STOCKExistencia disponible en esa bodega. Un significa que no hay dato o que el artículo no maneja existencia.
%MARGMargen de utilidad de la línea, siempre calculado sobre el costo: (precio − costo) ÷ costo × 100. Se ve en las dos vistas, pero solo con permiso de costos: sin él la columna muestra . Si este número no le coincide con el que muestra el artículo en Inventario, vea ¿Por qué el %MARG no coincide con el margen del artículo?
S/MNaturaleza: M = mercadería (baja inventario) · S = servicio (no baja inventario).
Cómo se encadenan los números SUBTOTAL = cantidad × precio/ud  →  menos DESC $ = P.TOTAL  →  sobre ese P.TOTAL se calcula el IVA  →  P.TOTAL + IVA = TOTAL. Si el total de una línea no le cuadra, revise el descuento: el impuesto se calcula después de descontar, no antes.

¿Por qué el %MARG no coincide con el margen del artículo?

Es la pregunta más frecuente sobre esta columna, y casi siempre las dos cifras están bien: no miden lo mismo. Un mismo artículo tiene una sola ganancia en plata, pero esa ganancia se puede expresar en porcentaje de dos maneras distintas según contra qué se divida.

DóndeQué porcentaje muestraFórmula
FactuDesk — columna %MARG
(y también SmartPOS, FastPOS y la factura de escritorio)
Siempre sobre el COSTO (lo que en contabilidad se llama markup): cuánto le gana encima de lo que le costó. (precio − costo) ÷ costo × 100
Inventario — Edición de Artículo IN-002 y el Catálogo El que tenga configurado ese nivel de precio en Margen sobre: COSTO (marca C) o VENTA (marca V). Sobre VENTA es qué tajada del precio de venta es ganancia. Sobre COSTO: (precio − costo) ÷ costo × 100
Sobre VENTA: (precio − costo) ÷ precio × 100
Ejemplo con números reales Artículo con costo ₡531.34 y precio sin impuesto ₡1.327.44. La ganancia es ₡796.10 — una sola, en los dos lados. Cambia solo el porcentaje:
  • Sobre la venta (lo que muestra Inventario si el nivel está en V): 796.10 ÷ 1.327,44 = 59,97 % → «de cada ₡100 que cobro, ₡59,97 son ganancia».
  • Sobre el costo (lo que muestra FactuDesk): 796.10 ÷ 531,34 = 149,83 % → «por cada ₡100 que me costó, le gano ₡149,83».
Las dos son correctas. El sobre-venta nunca pasa de 100 %; el sobre-costo sí puede pasarlo, y por eso suele verse mucho más alto.
Cómo saber en qué base está un artículo En Inventario → Edición de Artículo IN-002, en la lista de abajo, el porcentaje de Utilidad lleva a la par una letra chiquita: C = sobre costo, V = sobre venta. Para ver o cambiar esa configuración de un nivel, haga doble clic sobre la fila del precio y busque Margen sobre. Si quiere que todos los niveles queden en la misma base, se puede cambiar de una sola vez desde Cambios Globales (operación Margen Sobre por nivel).
Cuándo sí hay que revisar Si el nivel de precio del artículo está en C (sobre costo) y aun así el %MARG de la factura no coincide, ahí sí hay algo que ver: lo más común es que el costo cambió después de fijar el precio, que la línea lleva un descuento (el %MARG usa el precio ya descontado) o que la factura se está haciendo con otro nivel de precio (columna PV) distinto al que está viendo en Inventario.

El detalle que se abre bajo cada línea

Cada línea se puede desplegar para ver su ficha completa. Esto es lo que significa cada dato:

DatoQué es
UMUnidad de medida (Unid, Kg, Lt…). Es la que se reporta a Hacienda.
DescEl descuento de la línea, en plata.
GravadoCuánto de esa línea paga impuesto.
ExentoCuánto está exento por naturaleza del producto (no por exoneración del cliente).
ExonerCuánto quedó exonerado por la autorización del cliente. Si esta línea tiene monto, la de Gravado baja en la misma proporción.
TarifaCódigo de tarifa de Hacienda (por ejemplo 08 = 13 %). Es el que viaja en el comprobante electrónico.
%ExoPorcentaje que perdona la exoneración. Solo aparece en las líneas exoneradas.
UbicUbicación física del artículo en la bodega — le sirve a quien lo va a despachar.
MargenLa utilidad de la línea en plata (precio menos costo).
CodDescCódigo del tipo de descuento que exige Hacienda (por ejemplo 07). No es el porcentaje: es el motivo.
FracSi el artículo admite fracciones (decimales) o solo unidades enteras.
CABYSEl código del producto ante Hacienda. Es el que decide si la línea se puede exonerar — ver Exoneración por documento.
Act.EcoActividad económica con la que se está facturando esa línea.
Cómo leer una línea exonerada Una línea exonerada se reconoce a simple vista: en NOMBRE aparece Exo 13 %, la columna IVA queda en 0.000, y en el detalle Gravado 0.00 con todo el monto en Exoner y el dato %Exo. Si ve Exo arriba pero Exoner: 0.00 abajo, algo quedó a medias: quite y vuelva a aplicar la exoneración.
Ojo con las líneas por paquete Cuando la línea dice PAQ · 10 unid, la cantidad que se digita son paquetes, pero el precio de la columna es por unidad: por eso el subtotal se ve diez veces más grande que el precio unitario. Está bien. Lo que se descarga del inventario son las unidades (10 por paquete).

Panel Totales

Muestra el desglose completo del documento en la parte inferior:

  • Total Venta — Suma de todas las líneas sin descuento ni IVA
  • Descuento — Total de descuentos aplicados
  • Gravado / Exento / Exonerado — Desglose según tipo impositivo
  • IVA — Total del impuesto al valor agregado
  • TOTAL — Monto final a cobrar

Buscar artículo — Modal MBA-001

Presione F2 o haga clic en el botón Buscar para abrir el modal de búsqueda avanzada.

Barra de búsqueda del modal

  • Campo de texto — Busca por código, nombre o código de barras
  • Categoría — Filtro por categoría de artículos
  • Solo Stock — Muestra solo artículos con existencias
  • Buscar — Ejecuta la búsqueda
  • Agregar — Agrega todos los artículos que tengan cantidad ingresada

Lista de resultados (panel superior)

Muestra los artículos encontrados con: código, nombre, stock, precio, IVA y precio neto. Cada fila tiene un campo de cantidad para ingresar directamente.

El precio de cada fila es el del nivel que realmente aplica según las reglas (parámetro 57 / cliente / estación), no siempre el P1. Junto al precio aparece un badge con el nivel (ej. P2) para confirmar de un vistazo cuál se está mostrando — coincide con el precio que se factura.

En cada fila, junto al nombre, hay un botón de manita (): es Pedir — solicitar abastecimiento de ese artículo. Ver Pedir abastecimiento desde el buscador.

Panel de detalle (4 fichas inferiores)

Al seleccionar un artículo, se cargan 4 fichas con información detallada:

Imagen NUEVO

  • Foto del artículo seleccionado (`/img/{db}/articulos/{codigo}.png`)
  • Si no hay imagen subida → placeholder gris

Stock Externo MEJORADO

  • Stock en TODAS las BDs configuradas en `EmpresasExternas` (incluyendo la BD actual marcada con badge azul "ACTUAL")
  • Toolbar con checkbox "Solo con stock > 0" (persiste en localStorage)
  • Estados visuales: stock>0 normal · stock=0 italic gris · "(No existe)" gris claro · "(Error)" rojo
  • Footer con TOTAL stock sumando todas las empresas donde existe el artículo
  • Click en fila con stock → muestra bodegas de esa empresa

Precios

  • 10 niveles de precio (P1 a P10)
  • Precio base e IVA incluido
  • Clic para seleccionar, doble clic para agregar

Bodegas

  • Stock por bodega
  • Clic para seleccionar bodega

Información

  • Datos adicionales del artículo
  • Unidad de medida, CABYS

Navegación con teclado en el modal

TeclaAcción
Navegar entre filas de resultados
EnterSi hay cantidad: agregar. Si no: buscar o navegar a cantidad
0-9Ir directamente al campo de cantidad de la fila
EscCerrar el modal
Agregar múltiples artículos Puede ingresar cantidades en varias filas y luego presionar el botón Agregar para agregarlos todos de una vez.

Flujo Enter → Bodega → Cantidad (Parámetro 383)

Cuando el Parámetro 383 está activo (= 1) y el Parámetro 102 permite seleccionar bodega (= 0), la tecla Enter sigue un flujo guiado de 3 pasos para confirmar artículo + bodega + cantidad antes de agregar la línea:

  1. Paso 1 — En la lista de artículos: seleccione la fila con / y presione Enter. El modal mueve automáticamente el foco a la ficha Bodegas y resalta la primera bodega con stock disponible.
  2. Paso 2 — En la ficha Bodegas: use / para elegir otra bodega si es necesario y presione Enter. El modal se cierra, el código del artículo se coloca en el campo de búsqueda principal de la factura y el foco salta al campo cantidad principal (no agrega aún). Aparece un toast: "Bodega: X. Ingrese cantidad y Enter."
  3. Paso 3 — En el campo cantidad principal: digite la cantidad y presione Enter. Recién acá se agrega la línea, usando la bodega que eligió en el paso 2.
Cuándo conviene activar el Parámetro 383 En empresas donde el cajero necesita elegir conscientemente la bodega de cada artículo antes de agregarlo (no usar la bodega default de la estación). Pasa el foco por las 3 decisiones (artículo → bodega → cantidad) sin requerir el mouse.
Param 102Param 383Comportamiento del Enter
01Flujo de 3 pasos — Artículo → Bodega → Cantidad (recomendado para multibodega)
00Enter agrega la línea directo con la bodega default
1cualquieraEnter agrega directo. El Param 383 se ignora porque 102 bloquea la selección de bodega

Sugerencia de cambio de bodega (línea sin existencia) CAMBIO 2026-08-27

Cuando el Parámetro 102 permite seleccionar bodega (= 0) y usted agrega un artículo que no tiene existencia en la bodega usada, el sistema verifica automáticamente si hay stock en otra bodega. Si lo hay, abre el modal "Sin existencia en esta bodega" con la lista de bodegas que sí tienen el artículo y su existencia.

  • Cada bodega muestra su existencia; las que cubren la cantidad solicitada se resaltan en verde.
  • Al hacer clic en una bodega, la línea recién agregada se mueve a esa bodega (cambia solo esa línea) y la tabla se actualiza.
  • Si prefiere dejarla como está, use "Conservar bodega actual".
  • Los servicios (no manejan inventario) nunca disparan esta sugerencia.
Nota Si el Parámetro 102 = 1 (bloquea la selección de bodega), la sugerencia no aparece, porque el usuario no puede cambiar de bodega.

Que la tome sola cuando el artículo está en una sola bodega (Parámetro 928)

En negocios donde cada artículo vive en la bodega de su proveedor (galerías, consignación, ferias), el aviso salía en todas las líneas y siempre con una sola opción para escoger. Con el Parámetro 928 = 1 el sistema deja de preguntar en ese caso:

  • Si el artículo tiene existencia en una sola bodega y esa bodega alcanza para la cantidad, la línea se pasa sola a esa bodega y aparece el aviso "Se tomó de la bodega …" con el nombre.
  • Si el artículo está en dos o más bodegas, el sistema siempre pregunta: sale el modal para que usted elija de cuál sale.
  • Con el Parámetro 928 = 0 (valor de fábrica) todo sigue igual que antes: siempre sale el modal.
Dónde se activa En Configuración → Parámetros, parámetro 928. Necesita además el Parámetro 102 = 0, porque el que no puede cambiar de bodega tampoco puede moverla automáticamente.

Agregar líneas

Existen varias formas de agregar artículos al documento:

1. Búsqueda directa (barra principal)

  1. Escriba el código o nombre en la barra de búsqueda
  2. Ajuste la cantidad en el campo a la derecha
  3. Presione Enter o el botón Agregar

2. Modal de búsqueda (F2)

  1. Presione F2 para abrir el modal
  2. Busque el artículo por código o nombre
  3. Opcionalmente seleccione un precio o bodega específica
  4. Ingrese la cantidad y presione Enter

3. Desde historial del cliente

  1. Clic en Historial en el panel de cliente
  2. Busque la compra anterior por fecha o artículo
  3. Doble clic en el artículo para agregarlo al documento actual con el precio sugerido

4. Escáner de códigos de barras

Active el modo "Código de barras" y escanee directamente. El artículo se agrega automáticamente.

¿El artículo se vende suelto y por caja?

Si el artículo tiene empaque, al agregarlo el sistema le pregunta si está facturando paquetes o unidades sueltas. Vea Artículos por paquete o caja.

Artículos por paquete o caja Última actualización: 2026-08-05

Hay artículos que se venden de las dos formas: sueltos y por caja. Una aspirina se vende por pastilla, pero también en cajas de 12.

Para que el sistema lo sepa, la ficha del artículo tiene el campo «Uds x Med» (Inventario → Artículos). Si ahí dice 12, significa: el paquete de este artículo trae 12 unidades.

El inventario siempre se lleva en unidades

El sistema no maneja dos existencias separadas (una de cajas y otra de sueltas): hay una sola, en unidades. Facturar una caja de 12 descarga 12 unidades del stock. El paquete es una forma de digitar y de ver la cantidad, no una existencia aparte.

Por lo mismo no existe un precio de caja: el precio es por unidad, y la caja cuesta 12 veces ese precio. Si necesita venderle la caja más barata que 12 sueltas, debe crear un artículo aparte para la caja, con su propio precio.

Al agregar el artículo: ¿paquete o unidad?

Cuando agrega un artículo que tiene empaque, el sistema le pregunta antes de meterlo a la factura:

  • Facturar 2 PAQUETES — debajo le dice cuántas unidades se cobran (24).
  • Facturar 2 UNIDADES — sueltas, como siempre. Es la opción que queda marcada, así que si usted solo presiona Enter factura unidades, igual que antes.
  • No agregar nada — cierra sin tocar la factura (también con Esc).

La pregunta sale al agregar desde la barra de búsqueda, desde el modal de búsqueda (F2) —incluso eligiendo precio o bodega—, desde el historial del cliente y también con el escáner de código de barras.

Si usa pistola de códigos de barras

Con artículos de empaque el escaneo se detiene en la pregunta: hay que contestarla antes de leer el siguiente código. Si dispara la pistola con la pregunta abierta, esa lectura se descarta y el sistema se lo avisa — así ningún artículo entra a la factura sin que usted haya decidido si era caja o unidad.

Los artículos que no tienen empaque (o tienen «Uds x Med» en 1) se agregan igual que siempre, sin ninguna pregunta.

Cómo se ve en la lista de líneas

En la columna CANT, cuando la cantidad alcanza al menos un paquete, la casilla se muestra en paquetes y debajo aparecen las unidades reales que se están facturando:

Lo que se facturaCasilla CANTDebajo
1 unidad1 UNID
11 unidades11 UNID
12 unidades1 PAQ12 unid
18 unidades1.5 PAQ18 unid
24 unidades2 PAQ24 unid

Mientras no llegue a un paquete completo la casilla sigue en unidades, y el rótulo de al lado (PAQ o UNID) siempre le dice en qué está el número que ve.

Ojo al editar la cantidad

Si la casilla dice PAQ, lo que escriba son paquetes: escribir 3 factura 36 unidades. Puede escribir media caja con 1.5 (usando punto, no coma). Si la casilla dice UNID, lo que escriba son unidades sueltas.

Antes de poner «Uds x Med» en un artículo

Ese mismo campo lo usan las compras: al aceptar una factura electrónica, si el artículo tiene empaque el sistema convierte la línea de cajas a unidades (multiplica la cantidad y divide el costo). Póngalo solo si el proveedor le factura por caja. Si el proveedor le factura por unidad y usted pone 12, la compra le entrará con 12 veces más existencias y el costo dividido entre 12.

Editar líneas

Una vez agregada una línea, puede modificar:

  • Cantidad — Clic en la celda de cantidad para editar. Si el artículo se vende por caja, esa celda puede estar en paquetes: vea Artículos por paquete o caja
  • Precio — Clic en la celda de precio (requiere permiso 024)
  • Descuento — Clic en la celda de descuento (requiere permiso 004)
  • Bodega — Clic en la celda de bodega para cambiar
  • Eliminar — Botón rojo en la línea (requiere permiso 059)
Protección de utilidad El sistema protege el margen de utilidad. Si un descuento o cambio de precio genera pérdida, se mostrará una alerta y se ajustará automáticamente al mínimo permitido.

Modal de utilidad negativa

Cualquier cambio de precio o descuento que genere pérdida (precio sin IVA, con el descuento, < costo) dispara un modal centralizado, con dos modos según el permiso del usuario:

PermisoModalAcción
Con permiso 021 (Facturar a costo)Modal rojo de confirmaciónEl usuario debe escribir SI para autorizar el cambio.
Sin permiso 021Modal amarillo informativo "No autorizado"Muestra el descuento máximo permitido para el artículo. No permite continuar; solo cerrar.

Si el usuario no tiene permiso 064 (ver utilidad), el modal oculta el costo y los valores de utilidad calculada — sólo informa el descuento máximo permitido.

Excepción: Cortesía total (Tipo 03 + 100%) Cuando se aplica un descuento con Tipo 03 — Descuento por bonificación al 100%, las validaciones de utilidad mínima y descuento máximo se omiten automáticamente. El artículo se entrega como cortesía oficial, sin necesidad de permiso 021.

Artículos con precio 0

Si un artículo tiene precio 0 en el nivel asignado al cliente, la línea se agrega al documento respetando ese precio (entra en 0). El cajero puede editar el precio inline para establecer el valor de venta. El sistema sólo dispara el modal de "bajo costo" cuando el nuevo precio queda por debajo del costo — establecer un precio inicial mayor al costo es válido sin restricciones.

Niveles de precio

El sistema soporta hasta 10 niveles de precio (P1 a P10) por artículo. La selección del precio sigue estas reglas:

Reglas de asignación de precio

PrioridadCondiciónPrecio usado
1Parámetro 57 activo (precio fijo estación)Precio de la estación (siempre, sin excepción)
2Cliente es SN (genérico)Precio de la estación
3Precio seleccionado manualmente en modalEl precio seleccionado (P1, P2, P3, etc.)
4Cliente tiene TipoPrecioVenta asignadoEl precio del nivel del cliente
5Ninguna de las anterioresPrecio de la estación
Precio fijo de estación (Parámetro 57) Si el parámetro 57 está en 1, los precios en el modal aparecen bloqueados (gris) y no se puede seleccionar manualmente un nivel diferente. Solo se usa el precio configurado en la estación.
Cliente genérico (SN) Cuando el cliente es SN, siempre se usa el precio de la estación, sin importar lo que se seleccione en el modal de precios.

Cómo seleccionar un precio diferente

  1. Asegúrese de tener un cliente real (no SN) y que el parámetro 57 esté inactivo
  2. Abra el modal de búsqueda (F2) y busque el artículo
  3. En la ficha Precios (panel inferior), haga clic en el nivel deseado (P1, P2, P3...)
  4. La fila se resaltará en azul indicando la selección
  5. Agregue el artículo: doble clic en la fila de precio, Enter, o ingrese cantidad y presione Agregar
Listado completo de niveles (incluso en 0) El panel Precios del modal muestra todos los niveles definidos para el artículo (P1, P2, P3, P4, P5), incluso los que están en 0. Esto permite al cajero ver qué niveles existen y agregarlos al documento aunque no tengan precio configurado — luego se edita el precio en la línea.

Cambio de nivel sobre una línea existente

Cuando se cambia el nivel de precio de una línea ya agregada (por ejemplo P1 → P2) usando la barra de precio masiva:

  1. Se actualiza el precio al del nuevo nivel.
  2. El descuento previo se resetea a 0 (siempre, sin excepción de permisos). Esto evita que un descuento aplicado al nivel anterior arrastre al nuevo bajo reglas distintas.
  3. Si el nuevo nivel tiene un Descuento Fijo configurado, se aplica automáticamente — siempre que cumpla con el Descuento Máximo y la Utilidad Mínima de ese nivel. Si no cumple, queda en 0% y la razón se registra en bitácora.

Descuentos

El sistema maneja múltiples tipos de descuento con prioridades definidas:

Tipos de descuento

TipoOrigenPermiso
Descuento del clienteConfigurado en ficha del clienteNinguno (se aplica automáticamente)
Descuento recordadoÚltimo descuento aplicado al mismo cliente+artículoParámetro 277 activo
Precio recordadoÚltimo precio con que se le facturó ese artículo a ese cliente (ver detalle)Parámetro 277 activo
Descuento fijo del artículoConfigurado en el artículoNinguno
Descuento manualEditado por el usuario en la líneaPermiso 004
Descuento sobre el máximoSupera el descuento máximo configurado en el artículoPermiso 023

Prioridad de descuentos

  1. Descuento recordado (param 277) — Tiene prioridad máxima si está activo
  2. Descuento del cliente — Se aplica automáticamente
  3. Descuento fijo del artículo — Se usa si el cliente no tiene descuento
Descuento bloqueado por precio (Parámetros 153-158) Se puede configurar que ciertos niveles de precio no admitan descuento. Si el precio activo está bloqueado, el descuento se fuerza a 0% automáticamente.
Cortesía total (Tipo 03 + 100%) Cuando se aplica un descuento con Tipo 03 — Descuento por bonificación al 100%, las validaciones de utilidad mínima y descuento máximo se omiten. El artículo se considera entregado como cortesía oficial. Se puede aplicar línea por línea o de forma masiva desde el modal de opciones (MV-OPC).

Validación en 3 etapas (descuento → utilidad mínima → costo)

Cuando se aplica un descuento o se edita el precio de una línea, el sistema valida en orden, etapa por etapa. Cada etapa tiene su propio permiso: si el usuario no lo tiene, esa etapa lo detiene (se capa el descuento o se ajusta el precio).

Todo se compara SIN IVA Las tres etapas comparan el precio sin IVA (el precio de lista ya con el descuento aplicado) contra el costo (también sin IVA). El IVA se suma después y no interviene en la validación de utilidad ni de costo.
#Qué revisa (precios sin IVA)Permiso
1El descuento supera el descuento máximo del artículo023 — Hacer descuento mayor al permitido del artículo
2El precio (con el descuento) queda bajo la utilidad mínima (parámetro 16 o por nivel de precio), pero todavía ≥ al costo006 — Facturar bajo la utilidad mínima
3El precio (con el descuento) queda por debajo del costo021 — Facturar bajo el costo
Ejemplo (todos los montos sin IVA) Artículo con precio ₡130, costo ₡100, descuento máximo 10% y utilidad mínima 20% (precio mínimo ₡120). El cajero aplica un descuento del 12% → precio con descuento ₡114.40:
  • Etapa 1 — 12% > 10% (máximo del artículo): necesita el permiso 023. Sin él, el descuento se capa al 10%.
  • Etapa 2 — ₡114.40 < ₡120 (utilidad mínima): necesita el permiso 006. Sin él, se le quita el descuento o se sube el precio al mínimo permitido.
  • Etapa 3 — ₡114.40 ≥ ₡100 (costo): no aplica; la línea pasa sin pedir el permiso 021.
Si en cambio el descuento fuera del 30% → precio con descuento ₡91, que queda por debajo del costo (₡100): además del 023 y el 006, el cajero necesitaría el permiso 021 para poder facturar esa línea.
Autorización de un supervisor (Etapa 1 — descuento sobre el máximo) Si el cajero no tiene el permiso 023 e intenta un descuento mayor al máximo del artículo, ya no se capa en silencio: aparece automáticamente una ventana pidiendo la clave de un supervisor. Si la clave corresponde a un usuario que tiene el permiso 023, el descuento completo se aplica y queda registrado quién lo autorizó (el cajero sigue siendo el responsable de la venta). Si se cancela, el descuento queda topado al máximo del artículo, como antes.
  • Funciona en los tres puntos donde se aplica descuento: la barra de descuentos de líneas seleccionadas, el campo %Dc de cada fila y el modal de Opciones (MV-OPC).
  • La autorización cubre solo la Etapa 1 (descuento sobre el máximo). Si el descuento además queda bajo la utilidad mínima (Etapa 2) o bajo costo (Etapa 3), siguen pidiéndose los permisos 006 / 021 respectivamente; un aviso lo indica.
Regla rápida Mientras el precio sin IVA (con el descuento) cumpla la utilidad mínima → libre. Si queda bajo la utilidad mínima pero ≥ al costo → permiso 006. Si queda por debajo del costo → permiso 021 (que también requiere el 006 porque ya cruzó la utilidad mínima). La cortesía total (Tipo 03 al 100%) omite las tres etapas.

Cálculo de precios y totales

Esta sección explica exactamente cómo el sistema calcula cada línea y los totales del documento, con las fórmulas que se ejecutan tanto en el backend (_funciones_calculo.php) como en el frontend (calcularTotales()).

Fórmula única compartida Todas las APIs (agregar línea, cambiar precio, aplicar descuento, exonerar) ejecutan la misma función de cálculo para garantizar resultados consistentes. Cualquier cambio en una línea dispara el recálculo completo.

Paso 1 — De dónde sale el precio unitario

El precio de una línea se resuelve en el momento de agregar el artículo siguiendo esta prioridad (se detiene en la primera que aplique):

#CondiciónPrecio usado
1Parámetro 57 = 1 (precio fijo de estación)Estaciones.PrecioVenta — siempre, sin excepción
2Cliente SN (genérico, sin código)Precio de la estación
3Usuario seleccionó un nivel en el modal de búsquedavista_articulo.Precio{N} (N = 1-10)
4Cliente tiene TipoPrecioVenta asignadovista_articulo.Precio{TipoCliente}
5Ninguna anteriorPrecio de la estación
Fallback si el nivel está en 0 Si el precio del nivel elegido es 0, el sistema usa Precio1 como fallback. Al cambiar de nivel desde el modal de utilidades con un precio 0, el cambio se omite silenciosamente y se registra en bitácora (ver cotizacion_cambia_tipo_precio.php).

Paso 2 — Cadena de cálculo de la línea

Con el precio resuelto, la línea pasa por 10 cálculos en cadena. El nombre entre paréntesis es el campo físico en ProformaHija:

#CálculoFórmula
1SubTotal bruto (ArticuloVentaSubTotal1)Cantidad × Precio
2Monto de descuento (ArticuloDescuentoMonto)SubTotal1 × (Descuento% ÷ 100)
3SubTotal con descuento (ArticuloVentaSubTotal2)SubTotal1 − DescuentoMonto
4SubTotal con otros cargos (ArticuloVentaSubTotal3)SubTotal2 + OtrosCargos
5Monto exonerado (ArticuloVentaExonerado)SubTotal3 × (ExoneradoPct ÷ IvaPct) si IvaPct > 0
6Monto gravado (ArticuloVentaGravado)SubTotal3 − Exonerado si IvaPct > 0
7Monto exento (ArticuloVentaExento)SubTotal3 − Gravado − Exonerado (cuando IvaPct = 0 → todo es Exento)
8IVA calculado (ArticuloIvaMonto)SubTotal3 × ((IvaPct − ExoneradoPct) ÷ 100)
9IVA devuelto (ArticuloIvaDevuelto)IvaMonto si MedioPago = '02' (tarjeta) y IvaPct = 4; si no, 0
10Total de línea (ArticuloVentaTotal)Gravado + Exonerado + Exento + IvaMonto − IvaDevuelto
Orden crítico Primero se aplica el descuento, luego se suma OtrosCargos, después se calcula exoneración, y finalmente el IVA. El IVA NUNCA se calcula sobre el precio original — siempre sobre SubTotal3 (después de descuento + otros cargos).

Paso 3 — Redondeo (Parámetros 190 y 195)

Parámetro 195 — Decimales del IVA

Controla con cuántos decimales se redondea el campo ArticuloIvaMonto. Rango permitido: 0 a 6. Default: 2. El resto de campos (SubTotales, Gravado, Exonerado, Total) siempre se redondean a 2 decimales.

Parámetro 190 — Redondear total factura

Controla si el IVA se calcula sobre el subtotal redondeado o sobre el subtotal sin redondear. Es clave cuando el precio unitario sin IVA tiene 4 decimales y el total con IVA debe cuadrar con un precio "redondo" al cliente (ej: ₡1,700.00).

ValorBase del IVAEjemplo PU 1,504.4248 × 1 × 13%
0 (default)ROUND(SubTotal3, 2)Subtotal 1,504.42 · IVA 195.57 · Total 1,699.99
1SubTotal3 sin redondearSubtotal 1,504.42 · IVA 195.58 · Total 1,700.00 ✓

Ver detalles y cuándo activarlo en Parámetros → 190.

Paso 4 — Casos especiales

IVA devuelto (tarjeta con tarifa 4%)

Cuando el documento tiene MedioPagoCodigo = '02' (tarjeta) y una línea tiene IVA del 4%, ese IVA se marca como "devuelto" y se resta del total de la línea. Esto aplica principalmente a canasta básica cuando se paga con tarjeta.

Exoneración parcial o total

Si el cliente tiene exoneración sobre el artículo, el campo ArticuloIvaExonerado guarda el porcentaje exonerado (no el monto). La fórmula distribuye:

  • Gravado = parte del SubTotal3 que sigue afecta al IVA
  • Exonerado = parte del SubTotal3 liberada del IVA
  • IVA neto = SubTotal3 × ((IvaPct − ExoPct) ÷ 100)

Si la exoneración es total (ExoPct = IvaPct), el IVA queda en 0 y todo el SubTotal3 se reporta como Exonerado.

Artículo Exento (IvaPct = 0)

Si el artículo no grava IVA, todo el SubTotal3 se clasifica como Exento (ni gravado ni exonerado). El IVA y el IVA devuelto quedan en 0.

Otros cargos

Campo ArticuloOtrosCargos — se suma al SubTotal2 antes de calcular el IVA, por lo que sí paga IVA (si la línea es gravada).

Paso 5 — Totales del documento

Cuando una línea cambia, el sistema recalcula ProformaMadre sumando todas las líneas y agrupando por naturaleza CABYS (hacienda.dbo.VistaNaturalezaArticulo):

Campo en ProformaMadreFuente
TotalCostoΣ ArticuloCosto × ArticuloCantidad
TotalVentaΣ ArticuloVentaSubTotal1 (sin descuento, sin IVA)
TotalDescuentoΣ ArticuloDescuentoMonto
TotalMercGravado / Exonerado / ExentoΣ líneas con Naturaleza CABYS = 1 (mercancía)
TotalServGravado / Exonerado / ExentoΣ líneas con Naturaleza CABYS = 2 (servicio)
TotalIvaΣ ArticuloIvaMonto
TotalIvaDevueltoΣ ArticuloIvaDevuelto
TotalΣ ArticuloVentaTotal + TotalImpuestoServicio
Impuesto de servicio (servicio 10%) TotalImpuestoServicio es un cargo adicional (típico en restaurantes: 10% de servicio) que se suma al total final pero NO se incluye en cada línea individual. Se calcula a nivel documento.

Paso 6 — Cálculo en tiempo real (frontend)

Mientras el usuario edita líneas, el panel "Totales" se actualiza instantáneamente en JavaScript sin esperar al backend. Luego de 300ms sin cambios, se envía al servidor la actualización definitiva (debounce).

Los totales visibles en pantalla suman cada línea así:

  • Gravado / Exonerado / Exento mercancía — Σ campos de línea (todos van a mercancía en frontend; el servidor los reclasifica por CABYS)
  • IVA — Σ l.ivaTotal (ojo: el campo JS se llama ivaTotal, no impuesto)
  • IVA devuelto — Σ l.ivaDevuelto
  • Total — Σ l.total

Paso 7 — Margen de utilidad

El porcentaje de margen se calcula solo para productos (excluye servicios, naturaleza = 2). Se muestra en el panel de totales si el usuario tiene permiso 064.

CálculoFórmula
Venta neta de líneaGravado + Exonerado + Exento (después de descuento, sin IVA)
Costo total productosΣ Costo × Cantidad (solo naturaleza ≠ 2)
Venta total productosΣ venta neta (solo naturaleza ≠ 2)
Margen %((VentaTotal − CostoTotal) ÷ CostoTotal) × 100
Base del margen El margen usa la venta post-descuento sin IVA. Si descuenta 10%, el margen que ve reflejará esa rebaja real. No se calcula sobre el precio de lista.

Paso 8 — Moneda extranjera

En facturas con moneda distinta a la nacional (ver parámetro 249), el cálculo de la línea se hace en la moneda del documento. La conversión a moneda nacional ocurre al momento de contabilizar:

  • Pagos — siempre en la moneda del documento. Si el cliente paga con otra moneda, se convierte usando el tipo de cambio y se guarda en la moneda del documento.
  • Asiento contable — cada línea de DocumentoDetallePago se multiplica por su TipoCambio para llevarla a la moneda nacional.
  • Ajuste de redondeo — si DEBE/HABER difieren por menos de 1.00 (por redondeos), se agrega automáticamente una línea de ajuste en la cuenta del parámetro 83 (Caja Efectivo).

Paso 9 — Validación de límites (constraints BD)

Antes del UPDATE, la función calcularTotalesLinea() proyecta los valores y valida que no excedan los check constraints de la base:

CampoLímite
ArticuloVentaSubTotal1500,000,000
ArticuloVentaGravado100,000,000
ArticuloVentaTotal100,000,000

Si alguna proyección excede, el sistema auto-corrige la línea: cantidad pasa a 1 y si el precio excede 500,000 se pone a 0, evitando así un error SQL que bloquearía el documento.

Resumen visual del flujo

Precio
Descuento
Otros Cargos
Exoneración
IVA
Total línea

Ejemplo completo

Artículo con Precio = 1,000, Cantidad = 2, Descuento = 10%, IVA = 13%, sin exoneración, sin otros cargos, MedioPago = efectivo:

PasoCálculoValor
SubTotal12 × 1,0002,000.00
DescuentoMonto2,000 × 0.10200.00
SubTotal22,000 − 2001,800.00
SubTotal31,800 + 01,800.00
Exonerado1,800 × (0 ÷ 13)0.00
Gravado1,800 − 01,800.00
Exento1,800 − 1,800 − 00.00
IvaMonto1,800 × ((13 − 0) ÷ 100)234.00
IvaDevuelto(efectivo, no aplica)0.00
Total línea1,800 + 0 + 0 + 234 − 02,034.00
Ubicación del código
  • Backend — /functions/shared/cotizacion.php — funciones cotline_calcular_totales_linea() y cotline_actualizar_totales_proforma()
  • Frontend — /modules/facturacion/factudesk/js/factudesk.js — los totales se repintan al recargar el documento
  • Selección de precio — /apis/shared/cotizacion/cotizacion_tipoprecio_cambiar.php
  • Agregar línea — /apis/shared/cotizacion/cotizacion_linea_agregar.php

¿Sale Factura o Tiquete? Última actualización: 2026-09-03

El tipo de documento no se escoge: lo decide el sistema según la ficha del cliente, en el momento de procesar. Da igual desde cuál pantalla se facture (FactuDesk, SmartPos, FastPOS, Facturación Móvil): la regla es la misma para todas.

Cómo está el clienteQué documento sale
Cédula válida y tipo de identificación 01 Física, 02 Jurídica, 03 DIMEX o 04 NITEFactura Electrónica (01)
Tipo de identificación 05 Extranjero no domiciliadoFactura de Exportación (09)
Cliente genérico SN, sin cédula, cédula incompleta, o tipo de identificación 00 «Sin identificación» o 06 «No contribuyente»Tiquete Electrónico (04)
El caso que más sorprende: cliente con cédula, pero tipo «Sin identificación» Un cliente puede tener la cédula bien escrita y aun así salir como Tiquete, porque lo que manda es el tipo de identificación. Si en su ficha quedó en 00 «Sin identificación» —típico en clientes viejos o importados de otro sistema— todos sus documentos salen como tiquete, aunque los demás clientes salgan como factura. La pantalla no avisa: se da cuenta cuando ve el documento impreso.

Cómo hacer que salga Factura

  1. Vaya a Clientes → Catálogo de Clientes (CL-001) y abra el cliente.
  2. En Tipo de identificación ponga el que corresponde: 01 Física (9 dígitos), 02 Jurídica (10 dígitos — también las instituciones públicas, que empiezan con 4), 03 DIMEX (11 o 12 dígitos) o 04 NITE (10 dígitos).
  3. Verifique que la cédula esté completa y sin guiones, y guarde.
  4. Vuelva a facturar. Ahora sale Factura Electrónica (01).
El tiquete que ya se emitió no se borra Una vez aceptado por Hacienda, la única forma de dejarlo sin efecto es una Nota de Crédito completa con razón «01 - Anulación de documento», y después volver a facturar con el cliente ya corregido. El paso a paso está en Notas de Crédito y Débito.
Parámetro 353 — clientes con tipo de cédula 00 En Configuración → Parámetros, el 353 decide qué pasa cuando se factura a un cliente con tipo de identificación 00:
  • — deja facturar y el documento sale como Tiquete (es lo que causa la sorpresa).
  • Nono deja emitir y avisa «El cliente tiene tipo de cédula 00 (no válido para facturación electrónica)», para que se corrija la ficha antes de facturar.

Factura de contado

Genera una factura con pago inmediato. Acceso: el botón PROCESARFact. Contado o F7 directo.

La factura de contado NO queda en cuentas por cobrar Contado significa que la factura ya se cobró: el sistema la da por pagada con el medio que se escogió (efectivo, tarjeta, SINPE…) y por eso no aparece en Cuentas por Cobrar ni en el estado de cuenta del cliente. Si el cliente se lleva la mercadería para pagarla después, la factura tiene que hacerse con Fact. Crédito (F8).
Cómo se decide la condición que sale impresa: hacen falta las DOS cosas

Para que un documento salga como Crédito se tienen que dar las dos condiciones a la vez:

  1. que la factura se haya procesado con Fact. Crédito (F8), y
  2. que el cliente tenga un plazo mayor que cero en su ficha.

Si falta cualquiera de las dos, el documento es de Contado:

Se procesó con…Plazo en la ficha del clienteSale impreso
F7 Fact. Contadocualquiera (aunque tenga 30 días)Contado
F8 Fact. Crédito0 díasContado
F8 Fact. Crédito30 díasCrédito — Plazo: 30 días · Vence: …

Es la misma regla con la que el sistema arma el comprobante electrónico que se le manda a Hacienda, y por eso el papel, el tiquete POS, el correo y lo que Hacienda tiene registrado dicen siempre lo mismo. Un cliente sin plazo es, para el sistema, un cliente de contado.

Una factura de contado que ya se envió a Hacienda no se puede pasar a crédito: hay que anularla con una Nota de Crédito y volver a facturarla con F8, después de ponerle el plazo al cliente en su ficha.

Si le va a fiar, póngale primero el plazo al cliente Facturar con F8 a un cliente que tiene plazo 0 deja el documento como contado ante Hacienda, aunque la mercadería se la haya llevado sin pagar. El plazo se pone en la ficha del cliente, en Clientes, campo Plazo.

Flujo de factura contado

  1. Se valida el documento (precio > 0, artículos válidos, agente si es obligatorio)
  2. Se abre el modal de pago con el total a cobrar
  3. Seleccione el medio de pago: efectivo, tarjeta, transferencia, etc.
  4. Para efectivo: ingrese el monto recibido. El sistema calcula el vuelto
  5. Para tarjeta/transferencia: ingrese la referencia
  6. Confirme el pago. La factura se genera y se envía a Hacienda
  7. Se imprime automáticamente (según configuración)

Denominaciones de efectivo

El modal de pago muestra botones con las denominaciones de la moneda activa. Haga clic para sumar al monto recibido. Por ejemplo, para CRC: 1.000, 2.000, 5.000, 10.000, 20.000.

Pago con varios medios (mixto)

Una misma factura puede cobrarse con varios medios de pago a la vez: por ejemplo ₡20.000 en efectivo y el resto con tarjeta. Se van agregando líneas de pago hasta completar el total; el modal muestra siempre cuánto falta y, si se paga de más en efectivo, cuánto es el vuelto.

Revise que el total quede en cero No confirme mientras quede un faltante o un sobrante que no sea vuelto de efectivo: esa diferencia después aparece en el cierre de caja y hay que perseguirla documento por documento.

Número de comprobante en pagos que no son efectivo

El sistema puede pedir el número de comprobante (el de SINPE, la transferencia, el depósito o el voucher de la tarjeta) cada vez que se agrega un pago que no sea efectivo. Sirve para que después, a la hora de conciliar contra el banco, cada pago de la factura tenga su número al lado.

Se activa con el parámetro 28 Vaya a Configuración → Parámetros y busque el 28, «Facturación, comprobante obligatorio en pagos que no son efectivo (tarjeta/SINPE/depósito)». Póngalo en . Viene apagado de fábrica.

Con el parámetro encendido, al agregar el pago se abre una ventanita «Comprobante de …» donde se escribe el número (hasta 20 caracteres) y se presiona Agregar pago. El número queda guardado con ese pago y se muestra en la lista de pagos del mismo modal, para poder revisarlo antes de confirmar.

Medio de pago¿Pide comprobante?
EfectivoNo — nunca lo pide (tampoco para el vuelto)
SINPE Móvil
TarjetaSí, salvo que la caja cobre con datáfono: ahí el número de autorización lo pone el datáfono solo
Transferencia, depósito y cualquier otro medio

Con el parámetro apagado, no pregunta nada y el pago se agrega directo, como siempre.

Es todo o nada El parámetro 28 enciende o apaga la solicitud completa: no hay forma de pedirlo solo para SINPE y no para tarjeta. Y aplica a los tres caminos de cobro por igual — el botón +, Todo Tarjeta y Todo SINPE.

Cobro con datáfono

Si la caja tiene datáfono conectado (bridge instalado y configurado), al escoger tarjeta el monto se manda solo al datáfono y la pantalla queda esperando la respuesta. Cuando el cliente pasa la tarjeta y el banco aprueba, la factura se cierra guardando el número de autorización.

  • Si el datáfono rechaza, la venta no se cierra: se puede reintentar o cambiar de medio de pago.
  • Si el datáfono aprueba pero la factura no salió (se cayó la red justo ahí), no vuelva a pasar la tarjeta: revise primero en Consulta de Facturas y en el cierre de datáfono, porque el cobro puede estar hecho.
  • Las anulaciones (VOID) y los cierres de lote se manejan desde la configuración del datáfono, no desde la factura. Ver el manual del Datáfono.

Si el cobro no avanza al confirmar Última actualización: 2026-09-11

Antes de emitir la factura, el sistema revisa que el asiento contable cuadre y que haya existencia. Mientras lo hace, el botón verde dice «Validando asiento…» y después «Validando stock…»; normalmente tarda uno o dos segundos.

Si algo impide esa revisión, el sistema ya no se queda esperando: suelta el botón y muestra un aviso con lo que pasó. El aviso puede salir al presionar Fact. Contado (antes de que se abra el cobro) o al confirmar. En todos estos casos la factura NO se emitió, así que se puede volver a intentar sin riesgo de que salga repetida.

El aviso dice…Qué hacer
No se cargó el validador de facturasLa pantalla quedó a medio cargar en ese equipo. Recárguela con Ctrl+F5 (así baja todo de nuevo) y vuelva a cobrar. Si después de recargar sigue saliendo, llame a soporte: es algo de ese equipo, como el navegador o un programa que bloquea páginas.
No se pudo validar (el servidor no respondió)Revise la conexión a internet y vuelva a confirmar.
El asiento no cuadraHay una diferencia entre lo cobrado y el total, o falta una cuenta contable. El aviso trae el detalle.
Stock insuficienteAlguna línea no tiene existencia suficiente. El aviso dice cuál.
Facturación con Caja (Parámetro 19) Si el parámetro 19 está activo, el botón "Fact. Contado" aparece deshabilitado. La facturación de contado solo puede hacerse desde el módulo de Cajas.

Factura de crédito MV-005

Genera una factura con pago a plazo. Acceso: el botón PROCESARFact. Crédito o F8 directo.

Requisitos

  • Cliente con código diferente a SN (debe estar registrado)
  • El cliente debe tener un plazo mayor que cero en su ficha. Con plazo 0 el documento sale y se declara a Hacienda como Contado, aunque se haya procesado con F8 — ver el cuadro de la sección Factura de contado
  • El cliente debe tener crédito disponible suficiente
  • Se calcula automáticamente la fecha de vencimiento según los días de crédito del cliente

Flujo

  1. Se valida el documento y el crédito disponible
  2. Se confirma la fecha de vencimiento
  3. La factura se genera con condición "Crédito" (si el cliente tiene plazo; con plazo 0 queda como "Contado")
  4. Se crea automáticamente la cuenta por cobrar (CxC)
  5. Se envía a Hacienda y se imprime
  6. Si se ingresó un adelanto, se aplica automáticamente un recibo CxC sobre la factura recién creada (ver sección abajo)

Adelanto al convertir (2026-05-11)

Cuando el cliente entrega un pago parcial al momento de generar la factura a crédito, se puede registrar el adelanto dentro del mismo modal. Tras crear la factura, el sistema aplica automáticamente un recibo CxC contra ese documento.

CampoDescripción
Monto adelantoImporte del pago inmediato. Se capea al total de la factura. Dejar en 0 si no hay adelanto.
Medio de pagoCuenta contable activa (caja, banco, etc) que recibe el adelanto. Lista cargada desde vista_catalogo_contable filtrando cuentas que inician con 1 (activos).
ComprobanteN° de transferencia, voucher, depósito, etc. Obligatorio si el monto es mayor a 0.
DetalleDescripción del pago. Obligatorio si el monto es mayor a 0.
Cómo funciona El adelanto se procesa después de que la factura ya está creada, la CxC registrada y el asiento contabilizado. Si la aplicación del adelanto falla por algún motivo (cuenta inválida, conexión, etc), la factura queda creada igual y el adelanto se puede aplicar manualmente luego desde CxC → Aplicar Recibo (MC-001). La validación de comprobante y detalle se hace antes de iniciar la conversión.

Impresión automática del recibo (2026-05-15)

Cuando el adelanto se aplica con éxito, el recibo CxC se imprime automáticamente en la misma impresora que la factura, justo después de la factura, para que ambos comprobantes salgan uno seguido del otro y se puedan entregar juntos al cliente.

  • La impresión usa la misma impresora configurada en la estación para facturas crédito.
  • Si la opción de imprimir está desmarcada en el modal, tampoco se imprime el recibo.
  • Si la impresión del recibo falla, queda registrado en el log del modal pero la factura y el recibo ya están guardados en BD — se puede re-imprimir el recibo desde el módulo CxC.

Validaciones previas

Si el monto del adelanto es mayor a 0 y falta cualquiera de los tres campos obligatorios (medio de pago, comprobante o detalle), el sistema muestra un aviso y enfoca el campo faltante antes de iniciar la transacción — no se crea la factura hasta que estén completos.

Archivar cotización

Guarda la cotización en el histórico sin generar factura. Útil para cotizaciones que se concretan sin pasar por Hacienda.

Flujo

  1. Pulse el botón PROCESAR y elija Archivar Cot.
  2. Se valida que los artículos tengan stock (si aplica la restricción)
  3. Se agrega automáticamente un pago en efectivo
  4. El documento se copia a CotizaMadre/CotizaHija
  5. Se elimina de ProformaMadre (documento de trabajo)
  6. Opcionalmente se imprime en POS
Validación de stock al archivar Si un artículo tiene Sobregira = 0 (no permite sobregiro) y no tiene stock en la bodega asignada, el proceso se detiene y muestra la lista de artículos sin stock.

Enviar a Cajas

Transfiere la cotización al módulo de Cajas para que sea facturada desde ahí. Útil cuando un vendedor prepara la cotización y otro usuario la cobra.

  • Requiere permiso 123
  • El documento queda disponible en el módulo de Cajas
  • Se limpia el documento de trabajo actual

Enviar Pedido

Manda la proforma a la bandeja de pedidos para que en oficina la revisen y la facturen. Es el camino del vendedor que toma el pedido pero no emite la factura. Se llega por el botón PROCESAREnviar Pedido.

  • Requiere el permiso 536. Sin él el botón se ve, pero en gris.
  • Si el documento todavía es un borrador, el sistema lo guarda primero y le pone su número real.
  • El documento se mueve a pedidos con un consecutivo propio de pedido y queda congelado tal como lo digitó el vendedor.
  • En oficina se abre desde FactuDesk (botón ABRIR) y se copia a una proforma nueva para facturarla.
  • Al terminar, la pantalla queda limpia y lista para el siguiente cliente.
Perfil «toma pedidos pero no factura» Déle al usuario el permiso 536 y no le dé el 078. Va a poder armar el documento y enviarlo como pedido, pero los botones EFECTIVO, TARJETA, SINPE, Factura Contado y Factura Crédito le van a quedar en gris.

Imprimir

Múltiples formatos disponibles desde el botón PROCESARImprimir:

Formatos de impresión

FormatoDescripción
POS CompletoTiquete para impresora térmica con precios, descuentos e IVA por línea
POS SimpleTiquete simplificado: solo cantidad, código y nombre (sin precios por línea)
PDFDocumento en formato PDF para descargar o enviar
Pantalla CompletaVista del documento en pantalla, estilo factura, con opción de imprimir desde el navegador

«Cotización Completa» sale en el formato que tenga configurado su estación CORRECCIÓN 2026-09-07

El botón Cotización Completa (sección Impresora POS del modal MC-010) no imprime siempre igual: usa el formato que su estación tiene definido para cotización. Es el mismo campo que se ve en Configuración → Estaciones → Cot. Formato, o en el modal Configurar Estación de su propia pantalla.

Formato de la estaciónCómo sale la cotización
FIPVIVI002 (el más usado)Tiquete de impresora térmica, en el ancho de papel de la estación (32, 40 o 48)
FIPVIVI003 / FIPVIVI004Hoja carta en texto, para matricial o láser (ancho fijo del formato, no el del papel térmico)
FIPVIVI005Hoja carta con diseño (logo, tablas, cuadro de firma y el SON: en letras). La arma el programa de impresión de su computadora y sale por la impresora de cotización de la estación.

El número de impresora también sale de la estación (Cot. Número); si se pide más de una copia, cada hoja se manda como un trabajo aparte y la primera va marcada ORIGINAL y las siguientes COPIA (esa marca la controla el parámetro 394).

Si entre el 4 y el 7 de setiembre de 2026 su cotización salió llena de letras sueltas Del 4 al 7 de setiembre de 2026, las estaciones configuradas en hoja carta (FIPVIVI003, 004 o 005) recibían por error el tiquete de impresora térmica. Como una impresora de hoja carta no entiende las órdenes de la térmica, las imprimía como texto: cada renglón arrancaba con una «a» suelta y arriba salía algo como @·a·!··E·. Ya está corregido y la cotización vuelve a salir con el diseño de hoja carta de siempre. No hubo que cambiar nada en la configuración de las estaciones.
«Cotización Simple» — sin precios por línea NUEVO 2026-09-07 Cotización Simple saca el documento sin los montos de cada línea. En una estación de hoja carta (FIPVIVI005) sale la misma hoja del Completa —con el logo, el cuadro del cliente y el pie— pero las columnas de Precio/U, SubTotal, IVA y Total de cada artículo salen en 0.00. En una estación de impresora térmica sale el tiquete de siempre, sin precios.

Sirve para mandarle al cliente el detalle de lo que lleva —cantidad, código y descripción— sin mostrarle los precios artículo por artículo.

El Detalle / Serie de la línea también sale en el tiquete de la cotización CAMBIO 2026-09-04

Cuando usted da doble clic sobre una línea y le escribe algo en Detalle / Serie (por ejemplo «2 bonificaciones», un número de serie o un lote), ese texto ya venía saliendo en el tiquete de la factura, en el PDF de la cotización y en el correo que se le manda al cliente. Lo que faltaba era justamente el tiquete POS de la cotización: ahí el detalle se perdía y el cliente recibía la cotización sin esa aclaración. Ya sale, en POS Completo y en POS Simple.

Cómo se acomoda en el papel lo deciden los mismos dos parámetros que ya mandaban en la factura, así que la cotización y la factura salen iguales:

ParámetrosCómo se imprime
343 = 0 y 391 = 0Todo en la misma fila: COCA 6 - 2 bonificaciones
343 = 0 y 391 = 1El nombre arriba y el detalle en su propio renglón debajo. Si usted escribió varios renglones (con Enter), cada uno sale en su renglón.
343 = 1Se imprime solo el detalle, en lugar del nombre del artículo.
La cotización ya no se corta encima de la fecha El tiquete de la cotización cortaba el papel antes de tiempo: la cuchilla queda unos dos centímetros por detrás del cabezal de impresión, así que el corte caía justo sobre el renglón de la fecha y hora del final, lo partía por la mitad y dejaba además un pedacito suelto de papel. Ahora la cotización cierra igual que el tiquete de la factura —que nunca tuvo el problema—: el corte lo hace el programa de impresión al terminar el trabajo, con el avance que corresponde. La fecha y la hora salen completas y no queda ningún recorte de más.

Las notas del documento ya salen al pie del tiquete de la cotización CAMBIO 2026-09-04

Lo que usted escribe en el panel DETALLE FACTURA —las condiciones que negocia con el cliente en el momento: «cancela por SINPE», «entregar en la soda al frente del EBAIS», a quién se le entrega— ya venía saliendo en la vista en pantalla, en el PDF y en el correo de la cotización. El que las perdía era el tiquete POS, y por eso había que escribirlas a mano sobre el papel. Ya salen, en POS Completo y en POS Simple.

Se imprimen al pie, justo debajo del total y arriba del agente y la caja. Solo aparece lo que tenga algo escrito:

Sale comoDe dónde viene
DETALLE:La cajita grande de notas del panel DETALLE FACTURA. Si usted escribió varios renglones con Enter, cada uno sale en su renglón; los renglones largos se parten por palabra, nunca a media palabra.
OC:La orden de compra del cliente.
PEDIDO POR:El campo PEDIDO (número de pedido o quién lo pidió).
ENTREGA:El modo de entrega (Local, Xpress, Llevar).

Y de último, centrada, sale la condición fija de sus cotizaciones —el parámetro 7, por ejemplo «Válida por 3 días»—, la misma leyenda que ya salía en el PDF y en la vista en pantalla.

Los acentos ya no descuadran el tiquete La impresora térmica no sabe imprimir tildes ni eñes: las sacaba como símbolos raros y además le corría las columnas, así que el renglón se pasaba del ancho del papel y se partía donde no debía (se veía, por ejemplo, en la dirección de la empresa: 16-PALMITAS salía cortado en tres pedazos). Ahora el tiquete de la cotización limpia los acentos antes de imprimir —PALMITAS, doña sale dona—, igual que ya lo hacía el tiquete de la factura, y cada renglón cabe donde tiene que caber.

Cómo se lee el desglose del documento impreso CAMBIO 2026-08-26

Tanto el tiquete térmico como los formatos de hoja carta (matricial, láser e inyección) imprimen el resumen en el mismo orden que el panel Totales de la pantalla, para que el cliente pueda seguir la cuenta de arriba hacia abajo:

RenglónQué es
V. BRUTALo que valen los artículos antes del descuento y sin IVA. Solo aparece si la factura lleva descuento.
DESCUENTOLa rebaja que se aplicó. Solo aparece si hay descuento.
SUB TOTALV. BRUTA menos el DESCUENTO. Es la venta ya rebajada, todavía sin IVA.
MERC GRAVADA / SERV GRAVADO / MERC EXONERADA / MERC EXENTA / SERV EXENTOCómo se reparte ese SUB TOTAL según pague o no IVA. Van agrupados por condición: primero lo gravado, después lo exonerado y de último lo exento, igual que el panel SUBTOTALES de la pantalla. Sumados dan el SUB TOTAL. Cada renglón sale solo si tiene monto.
IVAEl impuesto que se le suma al SUB TOTAL.
IVA DEVUELTOEl IVA que se le devuelve al cliente (compras con tarjeta de ayuda social). Solo aparece si aplica.
TOTALSUB TOTAL + IVA. Es lo que el cliente paga.
El DESCUENTO ya está aplicado, no se vuelve a restar Antes se imprimía primero MERC GRAVADA y MERC EXENTA y después el DESCUENTO, y eso hacía creer que faltaba restarlo del total. No era así: esas mercaderías ya vienen rebajadas. Ahora el descuento va arriba, entre V. BRUTA y SUB TOTAL, que es donde realmente se resta, y las cuentas cierran a la vista: V. BRUTA − DESCUENTO = SUB TOTAL y SUB TOTAL + IVA = TOTAL.
Si su tiquete no muestra estos renglones El desglose del tiquete se controla con el parámetro 192 — Imprime sub-totales (Configuración → Parámetros). Si está en No, el tiquete sale solo con DESCUENTO, IVA y TOTAL. Póngalo en para ver el desglose completo.
En hoja carta el desglose va en un renglón corrido Los formatos de hoja carta imprimen lo mismo pero seguido, separado por comas: V.Bruta: 146,113.86, Desc: 34,022.71, SubTotal: 112,091.15, Merc.Grav: 87,586.15, Merc.Exen: 24,505.00, IVA: 10,076.88. Si no cabe en el ancho del papel, sigue en el renglón de abajo sin partir ningún monto por la mitad.
En pantalla, PDF y correo La vista en pantalla, el PDF y el documento que se le manda al cliente por correo ya venían con este orden y no cambiaron: ahí VENTA BRUTA, DESCUENTO y SUB TOTAL van juntos en su propio cuadro, y las mercaderías en el cuadro de al lado.

Las marcas de cada línea: (B…) bodega, (G…) IVA y (D…%) descuento CAMBIO 2026-08-27

En el tiquete térmico, debajo del nombre de cada artículo va un renglón con la cantidad y unas marcas entre paréntesis. Así se leen:

MarcaQué dice
(B1)La bodega de donde salió el artículo.
(G13)El porcentaje de IVA con que se cobró esa línea.
(D2.5%)El porcentaje de descuento que se le aplicó a esa línea. Solo sale si la línea lleva descuento.
El descuento ahora se imprime con decimales Antes el porcentaje de descuento se imprimía redondeado a número entero: un 2.5 % salía como (D3%) y el cliente reclamaba que le estaban cobrando distinto de lo pactado. El monto rebajado siempre estuvo bien; lo que mentía era el rótulo. Ahora se imprime el porcentaje tal cual es(D2.5%), (D7.25%)— y si el descuento es un número redondo se sigue viendo corto: (D10%). Vale igual para la vista en pantalla, el PDF, la proforma que se comparte y las pantallas del celular.

Modal "Imprimir cotización" — Texto vs Con Imágenes NUEVO

El botón Imprimir en la ficha Documento del panel principal abre un modal (código MV-PRT) con dos opciones para visualizar la cotización en pantalla:

OpciónDescripciónArchivo
TEXTO Vista clásica sin imágenes — más compacta, ideal para impresión rápida o envío por email ver_cotizacion_desktop.php
CON IMÁGENES Incluye una columna "Foto" al inicio de cada artículo. Útil cuando el cliente necesita identificar visualmente los productos cotizados ver_cotizacion_desktop_imagenes.php
Código del artículo en la vista TEXTO La cotización en formato TEXTO muestra el código del artículo en una columna propia, entre Cant y Descripción, con el mismo tamaño de letra que la cantidad para que sea fácil de leer.
Imágenes de artículos Las imágenes se cargan desde /img/{empresa}/articulos/{codigo}.png. Subirlas desde Inventarios → Editar artículo. Si un artículo no tiene imagen subida, aparece un placeholder gris en su lugar.
Copias En el modal de impresión puede seleccionar la cantidad de copias. El valor se guarda en localStorage para futuras impresiones.
Facturas a crédito sin "vuelto" En el tiquete POS de una factura a crédito ya no se imprimen las líneas PAGA CON ni Vuelto, porque en crédito no hay pago en efectivo al momento. Las facturas de contado siguen mostrando el vuelto normalmente.

Cálculo de totales en reportes FIX 2026-04-28

Los reportes ahora calculan VENTA BRUTA y SUB TOTAL desde las líneas individuales (no desde campos cabecera) para mayor precisión:

TotalFórmula
VENTA BRUTAΣ (ArticuloVenta × ArticuloCantidad) — precio unitario × cantidad, ANTES de descuento
DESCUENTOΣ ArticuloDescuentoMonto
SUB TOTALΣ (Gravado + Exonerado + Exento) — DESPUÉS de descuento, sin IVA
TOTAL IVASuma de IVA por línea
TOTALSUB TOTAL + TOTAL IVA − IVA DEVUELTO

Aplicado en: ver_cotizacion_desktop.php, ver_cotizacion_desktop_imagenes.php, ver_factura_desktop.php, correos de cotización (HTML + PDF) y correos de factura (HTML + PDF).

Enviar correo

Envía la cotización por correo electrónico al cliente. Desde el botón PROCESAREnviar Correo.

  • Se adjunta el PDF de la cotización
  • Se envía al email registrado del cliente
  • Opcionalmente copia al emisor (parámetro 74)
  • Opcionalmente copia al agente de ventas (parámetro 318)

Envío automático de la factura al cliente

Cuando convertís una cotización en factura, el envío del PDF al cliente depende de si la empresa usa factura electrónica o no:

  • Empresas con factura electrónica: el correo con la factura (PDF + XML firmado + XML de respuesta) se envía automáticamente después, cuando Hacienda acepta o rechaza el documento. No hay que hacer nada manual.
  • Empresas sin factura electrónica (régimen tradicional/simplificado, sin envío a Hacienda): el PDF de la factura se envía al cliente de una vez, en el momento de facturar. Antes esto solo pasaba con envío manual; ahora es automático.

En ambos casos el correo va al EmailFactura del cliente; si está marcado, se agrega copia al agente de ventas (parámetro 318) y al email de respaldo (parámetro 149). A los clientes genéricos (SN) no se les envía. Si el cliente no tiene email registrado, no se envía nada.

Compartir y exportar

Opciones disponibles en el botón PROCESAR:

OpciónDescripción
CompartirUsa Web Share API del navegador o descarga PDF
WhatsApp ClienteAbre WhatsApp Web con el detalle de la cotización
WhatsApp AgenteEnvía al agente de ventas por WhatsApp
Exportar ExcelDescarga archivo Excel con el detalle
Exportar XMLDescarga archivo XML con la estructura del documento

Hacer una proforma y entregársela al cliente

Proforma y cotización son lo mismo. En FactuPOS el documento se llama cotización, pero es exactamente lo que usted conoce como factura proforma: el papel con precios que se le entrega al cliente antes de facturarle. No existe un módulo aparte llamado «Proforma»: se hace desde Facturas.

Paso a paso

  1. Entre a Facturas (FactuDesk, FD-001).
  2. Escoja el cliente.
  3. Agregue las líneas (los artículos con su cantidad y precio), igual que para una factura.
  4. Presione PROCESAR (MP-001).
  5. En el cuadro Imprimir y Correo elija cómo se la entrega:
    • Imprimir — abre los formatos (MC-010): Cotización Completa o Simple para la impresora, y Pantalla Completa o Simple para verla en pantalla e imprimirla desde el navegador.
    • Correo — se la manda al correo del cliente.

En el cuadro Compartir y Exportar del mismo PROCESAR también están WhatsApp Cliente, Compartir, Excel y XML.

No hay que facturar para entregar una proforma. Mientras sea cotización no se envía nada a Hacienda, no lleva consecutivo de factura y no rebaja el inventario. Esos tres pasos ocurren solo cuando usted procesa Factura Contado o Factura Crédito.

Después de entregarla

  • Para retomarla — botón Abrir, pestaña Cotizaciones (ver Abrir cotización).
  • Para convertirla en factura — se abre y se procesa como Factura Contado o Factura Crédito. No hay que digitarla de nuevo.
  • Si le pidieron cambios — ábrala, corrija las líneas y vuelva a imprimir o enviar. Es el mismo documento.
No la elimine para «limpiarla». Borrar una cotización es definitivo y no hay papelera — ver Eliminar una cotización. Si ya no la va a usar, simplemente déjela ahí: una cotización sin facturar no afecta nada.

Guardar cotización

El documento se guarda automáticamente conforme agrega líneas. Sin embargo, puede usar el botón Guardar de la barra de herramientas para:

  • Asegurar que todos los cambios estén persistidos
  • Generar un número de cotización definitivo
  • Permitir que otros usuarios puedan abrir el documento

Abrir cotización

Presione el botón Abrir de la barra de herramientas para recuperar una cotización guardada.

Las tres pestañas

Arriba del listado hay tres pestañas, con la cantidad de documentos de cada una:

  • Cotizaciones — las que están vivas, para retomar o facturar.
  • Pedidos — los que enviaron los vendedores, separados en pendientes, procesados y anulados.
  • Histórico — las ya facturadas. Son de consulta: al elegir una, el sistema le ofrece clonarla, no la reabre.

Filtros disponibles

  • Desde / Hasta — rango de fechas.
  • Código — número de documento o código de cliente.
  • Cliente — nombre, nombre comercial, teléfono o dirección.
  • Monto >, Agente, Usuario y Orden.

Buscar por cualquiera de los números del recorrido NUEVO

Cuando un documento viene de un pedido de vendedor, el número que el cliente tiene en la mano casi nunca es el que hay que facturar: se le entregó una proforma, esa pasó a pedido, y de ahí salió otra proforma.

La casilla Código busca en todo ese recorrido. Escriba el número que tenga —la proforma que recibió el cliente, el número de pedido o el de la proforma nueva— y el documento aparece igual. No hace falta saber cuál de los tres es.

«No aparece acá, pero sí en otra pestaña» La búsqueda trabaja sobre la pestaña en la que usted esté parado: son tres listas distintas. Si escribe un número y la lista sale vacía, el sistema revisa solo las otras dos y se lo dice: «Con 1015 no hay nada en Cotizaciones, pero sí hay 2 en Histórico», con un botón para saltar directo. Así un documento ya facturado, o que todavía es pedido, no se le pierde.

Columna «Viene de» NUEVO

Al lado de cada documento se lee de dónde salió: por ejemplo «Pedido 35 · Prof. 1015». Así quien factura sabe qué tiene en la mano sin abrir nada.

La columna aparece sola cuando hay algo que mostrar: si ningún documento de la lista viene de un pedido, no ocupa lugar. El color distingue las dos formas de llegar: la proforma creada al abrir el pedido completo, y la creada con los pendientes que habían quedado faltando.

Columnas ACTUALIZADO

El listado muestra dos columnas para identificar al cliente:

  • N. Comercial (italic gris) — nombre comercial registrado en el catálogo de clientes (Clientes.ClienteNombreComercial)
  • Nombre Cot. (bold) — nombre manual escrito en la cotización (ProformaMadre.ClienteNombre) — es el dato editable e identificativo

Para clientes genéricos (SN, 0) que no tienen registro en el catálogo, la columna N. Comercial muestra el mismo nombre manual de la cotización para evitar quedar vacía.

Ordenamiento

Haga clic en las columnas (Número, Fecha, N. Comercial, Nombre Cot., Total, Usuario) para ordenar. La fecha ordena por defecto de más reciente a más antigua.

Exportar e imprimir listado

Al lado del botón Buscar aparecen dos botones adicionales:

  • Excel — Descarga un archivo .xlsx con los resultados filtrados. Columnas: Número, Fecha, Cliente ID, Cliente Nombre, Total, Moneda, Usuario, Agente, Estado, Líneas.
  • Imprimir — Abre una vista imprimible con los filtros aplicados, totales y tabla de cotizaciones.

De las cotizaciones a una orden de compra NUEVO

Cuando varias cotizaciones o pedidos llevan artículos que hay que conseguir, no hace falta abrirlos uno por uno ni sumar a mano. Desde esta misma ventana se juntan y se convierten en una orden de compra para el proveedor.

  1. En la pestaña Cotizaciones o Pedidos, marque con la casilla de la izquierda los documentos que quiere juntar. Se puede marcar también una cotización que está en Cajas.
  2. Presione el botón morado Compra, que muestra entre paréntesis cuántos documentos marcó. Se abre la ventana Pedir a proveedor (MV-022).
  3. Ahí aparece un renglón por artículo, con lo que suman todos los documentos marcados:
    • Cotizado — la cantidad total de ese artículo en los documentos.
    • Stock — lo que hay hoy en las bodegas de las que se cotizó.
    • Faltante — lo cotizado menos el stock. Si el stock alcanza, sale un 0 con un visto verde.
    • Pedir — lo que se le va a pedir al proveedor. Viene con el faltante y usted lo puede cambiar. Con Enter pasa a la línea siguiente. En 0 no se pide.
    • Costo y Subtotal — con el costo del catálogo, sin IVA. Abajo se va sumando el total.
    • Últ. proveedor — a quién se le compró la última vez (o el proveedor de la ficha). Haga clic en el nombre para usarlo en la orden.
    • Documentos — en cuáles cotizaciones o pedidos está.
  4. Arriba, en Proveedor, escriba el código o el nombre y elíjalo de la lista. El sistema lo propone solo con el proveedor al que más artículos le compró la última vez.
  5. Presione Generar orden de compra. La orden se crea en borrador y el sistema le ofrece abrirla en otra pestaña, en Compras → Órdenes de Compra, para revisarla, ajustar costos y enviarla al proveedor.

La lista también sale en Imprimir y Excel, con las cantidades tal como las dejó en «Pedir». Sirve como reporte para pasárselo a quien compra.

Lo que el sistema cuida por usted
  • Los servicios no aparecen: un servicio no se le compra a un proveedor.
  • Un artículo que está en la lista de exclusiones de compra aparece marcado en amarillo y con «Pedir» en 0. Si de verdad lo necesita, escriba la cantidad: antes de crear la orden el sistema le vuelve a avisar.
  • Si marca un pedido y también la cotización que salió de ese pedido, no se cuenta dos veces: el sistema suma solo la cotización y se lo dice.
  • Se trabaja con los documentos marcados en una pestaña a la vez. El Histórico no se usa, porque eso ya se facturó.
  • Cada orden es para un solo proveedor. Si los artículos van a proveedores distintos, ponga en 0 lo que no es de ese proveedor, genere la orden y repita con el siguiente.
Permiso 574: Órdenes de compra El botón Compra necesita el mismo permiso con el que se crean órdenes en Compras. Sin él, el botón se ve gris y, al pasar el mouse, dice qué permiso falta.
Permiso 069: Ver cotizaciones de otros Sin este permiso, solo puede ver sus propias cotizaciones. Con el permiso, puede ver y recuperar cotizaciones de cualquier usuario.

Eliminar una cotización (y qué queda de ella)

En la ventana de Abrir, al marcar la casilla de una o varias cotizaciones aparece el botón Eliminar. Requiere el permiso 060 y solo funciona con cotizaciones en estado Borrador o Guardada: una que ya se facturó no se puede eliminar.

Eliminar es DEFINITIVO: no hay papelera Al eliminar, la cotización se borra de verdad —cabecera, líneas y medios de pago—. No queda guardada en ningún lado del sistema y no hay una pantalla de «eliminadas» para volver a verla ni un botón de deshacer. Antes de eliminar, imprima o exporte la cotización si cree que la va a necesitar.

Lo que sí queda: el registro en la Bitácora

Cada eliminación deja un renglón en Seguridad → Bitácora (permiso 911) que dice «Eliminó cotización #…», con el número de la cotización, quién la eliminó y la fecha y hora exactas. Busque ahí escribiendo Eliminó cotización, o el número si lo tiene.

Ese registro sirve para saber qué pasó con un número que ya no aparece en el listado, pero no guarda el contenido: no trae el cliente, ni los artículos, ni el total de la cotización borrada.

Si necesita el contenido de una que ya se eliminó El sistema respalda la base de datos todas las noches. Escríbale a Soporte Real con el número de la cotización (el que aparece en la Bitácora) y la fecha aproximada en que se eliminó, y se revisa si todavía está en un respaldo para recuperarle el detalle. Cuanto antes avise, más probable es lograrlo.

Cómo evitar tener que recuperarla

  • Si la duda es si se va a usar, no la elimine. Una cotización guardada no estorba: se filtra por fecha, cliente o monto y no afecta inventario ni contabilidad.
  • Imprima o exporte antes de eliminar. Desde la misma ventana de Abrir están los botones Excel e Imprimir del listado.
  • Controle quién puede eliminar. El permiso 060 se asigna por usuario en Seguridad → Permisos; quitándolo, ese usuario ve las cotizaciones pero no puede borrarlas.

Pedidos en línea y comprobante de pago NUEVO

Los pedidos que sus clientes hacen desde la tienda en línea (ecommerce) llegan al sistema como pedidos y se ven en el módulo Facturación → Pedidos en línea (requiere el permiso 115). Desde ahí, con doble clic en un pedido se abre en FactuDesk para revisarlo y convertirlo en factura.

Comprobante de pago (SINPE / transferencia)

Si el cliente pagó por SINPE Móvil o transferencia, al hacer el pedido puede adjuntar el número de comprobante y una imagen del pago. Ese comprobante se ve en dos momentos:

  • En la lista de “Pedidos en línea” — una columna Comprobante muestra el número de SINPE y un enlace para abrir la imagen del pago.
  • Al abrir el pedido en Facturación — aparece un banner verde en la parte superior con el texto “Comprobante de pago (SINPE/transferencia): N° …” y un botón Ver comprobante que abre la imagen en una pestaña nueva.
Recomendación Verifique que el pago realmente ingresó (revisando la imagen y su cuenta SINPE) antes de facturar el pedido. Si el pedido no trae comprobante adjunto, la columna muestra “—” y el banner no aparece.
Disponibilidad El comprobante se guarda en la tabla ProformaComprobantePago y la imagen en /img/{empresa}/comprobantes/. Si su empresa aún no tiene activada esta función, el sistema sigue funcionando igual: el pedido se ve normal, solo sin la columna de comprobante.

De dónde viene este documento NUEVO

Cuando el documento que abre salió de un pedido de vendedor, arriba de las líneas aparece una franja azul que dice el recorrido completo:

Proforma 1035Pedido 35Proforma 1015

Se lee de izquierda a derecha, del documento que tiene en pantalla hacia atrás: la proforma 1035 salió del pedido 35, que a su vez salió de la proforma 1015. La 1015 es la que el cliente recibió y por la que va a preguntar; la 1035 es la que usted tiene que facturar.

Los dos tipos de escala

  • Pedido 35 (azul) — el pedido se abrió completo y de ahí salió esta proforma.
  • Pedido 35 (pendientes) (ámbar) — esta proforma se armó con lo que había quedado faltando de ese pedido, desde Ventas › Pedido vs Facturado.

Pase el puntero por encima de cada escala para ver la explicación.

Recorridos de más de una escala Si de un pedido quedaron pendientes que después volvieron a pasar por otro pedido, la franja los muestra todos, uno tras otro. No hay que ir a buscar cada número por separado.
Se puede cerrar La × del extremo derecho oculta la franja para ese documento. Vuelve a aparecer cuando abra otro que también venga de un pedido. Si el documento no viene de ningún pedido, la franja simplemente no sale.

Historial del cliente

Desde el panel de cliente > botón Historial, puede consultar las últimas compras del cliente seleccionado.

  • Muestra las últimas 1,000 líneas de compra
  • Filtros por fecha, categoría y monto
  • Agrupamiento por categoría (toggle)
  • Doble clic para agregar un artículo al documento actual con el precio sugerido
  • Exportación a Excel y PDF

Modo código de barras

El checkbox "Código de barras" en el panel de documento controla el comportamiento al agregar artículos repetidos:

ModoArtículo repetido
ActivadoSuma la cantidad a la línea existente del mismo artículo
DesactivadoCrea una nueva línea independiente (permite mismo código varias veces)
Uso con escáner Active este modo cuando use un escáner de códigos de barras. Cada escaneo sumará +1 a la cantidad del artículo. Desactívelo si necesita varias líneas del mismo artículo con diferentes precios o bodegas.

Compuestos manuales

Permite agregar artículos compuestos (kits o paquetes) que contienen múltiples componentes. Requiere permiso 119.

Cómo usar

  1. Agregue el artículo principal al documento
  2. Abra la pestaña "Compuestos" en el panel lateral
  3. Busque y agregue los artículos componentes
  4. Ajuste las cantidades de cada componente
Tabla VentaHijaCompuesto Los componentes se guardan en la tabla VentaHijaCompuesto al facturar, vinculados a la línea principal.

Exoneraciones: los tres caminos

Exonerar es facturarle a un cliente con menos impuesto (o sin impuesto) porque la ley se lo permite. En FactuDesk hay tres caminos distintos, y conviene no confundirlos porque se configuran y se aplican diferente:

Por documento de exoneración

El cliente tiene una autorización (DGT, zona franca, misión diplomática, institución). Se le baja el impuesto a los productos que esa autorización cubre, y se decide por CABYS.

MAG (agropecuaria)

Productores inscritos ante el Ministerio de Agricultura: el impuesto del 13 % baja al 1 %. Depende de la condición del comprador, no del producto.

Pesca / INCOPESCA

Registro de pescadores. En FactuDesk se consulta la vigencia del cliente ante Hacienda.

 Por documentoMAG
De qué dependeDe una autorización con lista de productosDe que el cliente sea productor inscrito
¿Mira el CABYS?Sí, línea por líneaNo
Qué le hace al impuestoLo rebaja según el porcentaje autorizadoLo baja de 13 % a 1 %
Dónde se configuraFicha del cliente → pestaña ExonerarNo se configura: se consulta a Hacienda
La exoneración se aplica ANTES de cobrar Se exonera sobre el documento que está en pantalla. Una vez facturado, para corregir hay que hacer nota de crédito y volver a facturar. Y lo que quede exonerado es lo que va al comprobante electrónico: es responsabilidad del negocio que la autorización del cliente sea real y esté vigente.

Exoneración MAG (agropecuaria)

Los productores agropecuarios inscritos ante el MAG tienen derecho a comprar sus insumos con un impuesto del 1 % en lugar del 13 %. No es un descuento sobre el precio: es una tarifa de impuesto distinta, autorizada por ley.

Cómo funciona por dentro

Conviene entenderlo porque explica todo lo demás:

PasoQué hace el sistema
1. Pregunta a Hacienda Con la cédula del cliente, FactuPOS consulta en línea el registro agropecuario de Hacienda. No es un dato que se digite ni que dependa de la memoria de nadie: lo responde Hacienda en el momento.
2. Guarda la respuesta El resultado (activo o no, con su fecha) queda guardado en la ficha del cliente. Por eso, la próxima vez el distintivo MAG aparece de una en el panel del cliente, sin volver a consultar.
3. Cambia la tarifa de las líneas Al aplicarlo, cada línea que tenga 13 % pasa a la tarifa del 1 %. El precio del artículo no cambia: lo que cambia es el impuesto que se le cobra encima.
4. Va así a la factura electrónica La línea se reporta a Hacienda con esa tarifa reducida. Es decir, queda documentado que esa venta se hizo al 1 % — de ahí que el registro del productor tenga que estar realmente vigente.
Qué cambia en la plata Un artículo de ₡10.000 con 13 % se le cobra al cliente en ₡11.300. Con MAG aplicado, el mismo artículo se le cobra en ₡10.100: el precio sigue siendo ₡10.000 y el impuesto baja de ₡1.300 a ₡100. En la grilla lo ve directo: la columna %IVA pasa de 13 a 1 y el TOTAL de la línea baja.

Cómo aplicarla, paso a paso

  1. Cargue el cliente (tiene que ser un cliente del catálogo con cédula, no el genérico) y agregue las líneas.
  2. Abra Opciones → pestaña MAG. Arriba se ve el nombre y la cédula con la que se va a consultar.
  3. Pulse Consultar. El sistema le pregunta a Hacienda y muestra el estado del productor y la fecha.
  4. Si está vigente, se habilita el botón Exonerar con MAG.
  5. Al pulsarlo, las líneas al 13 % pasan a 1 %, una por una, mostrando el avance.
  6. Revise la grilla: las líneas cambiadas quedan con %IVA 1. Ya puede cobrar.

Qué toca y qué no toca

LíneaQué le pasa
Con 13 %Pasa a 1 %
Exenta, al 1 %, al 2 % o al 4 %Queda igual — ya tiene un trato especial
Agregada después de aplicar el MAGEntra con su tarifa normal: hay que volver a aplicar el MAG

Si el documento no tiene ninguna línea al 13 %, el sistema avisa y no cambia nada.

Si el MAG no está vigente, el botón no se habilita Cuando Hacienda responde que el registro está vencido o que no existe, el botón queda apagado y sale el aviso de MAG no vigente. No es una falla del sistema: es que ese cliente hoy no puede comprar con tarifa reducida. El distintivo MAG del panel del cliente muestra el estado y la fecha de vencimiento.
Por qué conviene consultar cada vez El registro agropecuario vence. Aplicar la tarifa del 1 % a un productor cuyo registro ya caducó deja una factura electrónica mal tarifada, y el problema es del que factura, no del cliente. La consulta toma dos segundos y queda registrada con su fecha.
MAG no es lo mismo que la exoneración por documento El MAG baja la tarifa por la condición del comprador (es productor agropecuario) y no revisa CABYS. La exoneración por documento depende de una autorización con lista de productos y sí revisa el CABYS de cada línea. Son caminos distintos y no se mezclan en la misma línea.

Pesca / INCOPESCA

En Opciones → pestaña Pesca se consulta ante Hacienda si el cliente está en el registro de pesca. La pantalla muestra el estado (Vigente o no), el nombre, la fuente, la fecha de alta y la de vencimiento, y la fecha de la última consulta.

En el panel del cliente aparece el distintivo PESCA cuando el cliente tiene registro: azul si está vigente, rojo si venció.

Es una consulta de respaldo Sirve para confirmar la condición del cliente antes de facturarle con el trato que corresponda. La rebaja de impuesto se aplica por el camino que corresponda a su caso (documento de exoneración o MAG).

Exoneración por documento del cliente

Es el caso más común: el cliente tiene una autorización de exoneración (orden de compra autorizada de la DGT, zona franca, misión diplomática, institución del Estado…) y puede comprar ciertos productos con el impuesto rebajado o en cero.

Antes de facturar: configurarlo en el cliente

La autorización no se digita en la factura: vive en la ficha del cliente, pestaña Exonerar. Ahí se registra, por cada autorización:

DatoQué es
Tipo de documentoQué clase de exoneración es (compras autorizadas DGT, zona franca, diplomáticos, etc.)
Número de documentoEl número de la autorización — es el que sale en la factura electrónica
Institución que la emitióQuién autorizó
Fecha de emisión y de vencimientoLa vigencia de la autorización
Porcentaje de exoneraciónCuánto del impuesto se perdona
Artículo e incisoLa base legal, cuando aplica
Lista de CABYSQué productos cubre esa autorización (uno o muchos códigos CABYS)
Un cliente puede tener VARIAS autorizaciones Y cada una con su propia lista de productos. En una misma factura pueden quedar líneas exoneradas con autorizaciones distintas: el sistema le pone a cada artículo la que le corresponde según su CABYS. No hay que facturar por separado.

Cómo aplicarla, paso a paso

  1. Cargue el cliente y agregue todas las líneas.
  2. Abra Opciones → pestaña Exonerar.
  3. Se abre la lista de las líneas del documento, y cada una viene marcada:
    • ✓ verde — el CABYS del artículo está cubierto. En la columna Cód. Exo se ve con cuál autorización va a quedar.
    • ✗ rojo — ese producto no está en ninguna autorización del cliente: queda gravado (se factura con su impuesto normal).
  4. Confirme. El sistema procesa línea por línea, cada una con su autorización, y recalcula los totales.
¿Y si un producto está en dos autorizaciones? Gana la que vence más tarde (la más vigente). Que una esté marcada como predeterminada ya no manda: lo que decide es el CABYS de cada artículo.
Todo depende del CABYS Si un artículo no tiene CABYS o lo tiene mal puesto, nunca va a poder exonerarse, por más que el cliente tenga la autorización. Cuando una línea sale en rojo y el cliente insiste en que sí está cubierta, lo primero que hay que revisar es el CABYS del artículo en su ficha.

La ventana «Aplicar Exoneración», columna por columna

Arriba muestra el número del documento y un contador del tipo «1 de 7 línea(s)»: cuántas se van a exonerar de cuántas hay. Entre paréntesis, en rojo, cuántas no están cubiertas por la exoneración del cliente.

ColumnaQué muestra
# · Código · ArtículoLa línea del documento
CABYSEl código del artículo. Es el que se compara contra la lista de la autorización
Exo?✓ verde = cubierta, se va a exonerar · ✗ rojo = no cubierta, se factura con impuesto
Cód. ExoCon cuál autorización va a quedar esa línea (por ejemplo AL-00003053-25). Un guion significa que no le tocó ninguna
IVA%La tarifa que tiene hoy la línea
Ya exoneradoSi la línea ya venía exonerada de antes
EstadoCómo va el proceso al confirmar: pendiente, procesando, listo u omitido
Que diga «no cubierta» no significa que al artículo le falte el CABYS En la mayoría de los casos el artículo sí tiene CABYS — lo que pasa es que ese CABYS no está en la lista de la autorización del cliente. Ejemplo real: de 7 líneas, 6 tienen CABYS y aun así solo una se exonera, porque solo esa está incluida en la autorización AL-…. Antes de mover el artículo, revise la pestaña Exonerar del cliente: es ahí donde se agrega el CABYS que falta.

La validación no es igual para todos los tipos

Tipo de exoneraciónCómo la trata el sistema
Compras autorizadas por la DGT (tipo 01)Valida estrictamente por CABYS: solo exonera los productos que estén en la lista de la autorización
Los demás tipos (zona franca, diplomáticos, instituciones…)No se valida el CABYS: se aplica según lo configurado en la autorización

Ver cómo quedó

El botón Ver Exoneración muestra, línea por línea, con cuál autorización quedó cada artículo y cuánto impuesto se rebajó. Conviene revisarlo antes de cobrar, sobre todo en facturas grandes.

Quitar la exoneración

OpcionesQuitar Exo. Muestra las líneas que quedaron exoneradas y, al confirmar, las devuelve a su impuesto normal.

Lo que se ve es lo que va a Hacienda La autorización que el sistema le asignó a cada línea queda guardada y es exactamente la que se reporta en el comprobante electrónico. Al convertir la cotización en factura, esos datos se arrastran solos: no hay que volver a exonerar.

Avisos frecuentes

Lo que pasaQué significa
Todas las líneas salen en rojoEl cliente no tiene autorizaciones registradas, o ninguna cubre esos productos. Revise la pestaña Exonerar de su ficha.
Unas líneas sí y otras noEs lo normal: la autorización cubre ciertos productos. Las demás se facturan con impuesto.
La autorización está vencidaHay que actualizar el documento en la ficha del cliente; no se puede exonerar con una autorización vencida.
Se exoneró pero el total no cambióPuede que el porcentaje de exoneración configurado sea 0 o que las líneas ya estuvieran exentas.

Moneda extranjera

FactuPOS permite facturar en moneda distinta a la nacional (USD, EUR, etc.) con conversión automática a moneda local para el asiento contable.

Cambiar la moneda del documento

  1. En el Panel Documento, haga clic en el campo Moneda
  2. Seleccione la moneda deseada (USD, EUR, etc.)
  3. El sistema usa el tipo de cambio del día (configurado en Contabilidad > Tipos de cambio)
  4. Agregue los artículos normalmente — los precios se convierten a la moneda elegida

Pagos en moneda mixta

En el modal de pago de contado puede recibir efectivo en cualquier moneda configurada. El sistema siempre guarda el pago en la moneda del documento, convirtiendo el monto recibido si es necesario:

Factura enUsuario pagaSe registra
CRC (faltante 500)500 CRC500 CRC
CRC (faltante 500)50 USD (TC=498)500 CRC + vuelto 24.400 CRC
USD (faltante $10)$10 USD10 USD
USD (faltante $10)6.000 CRC (TC=500)10 USD + vuelto $2

Asiento contable

El asiento contable se registra siempre en moneda nacional. El sistema convierte usando el tipo de cambio del documento. Si aparece una diferencia de centavos por redondeo, agrega automáticamente una línea de ajuste con la cuenta del parámetro 83 (Caja efectivo).

Parámetro 249 — Moneda nacional La moneda nacional no está fija en CRC. Se define en el parámetro 249, permitiendo operar el sistema en otros países (Panamá = PAB, El Salvador = USD, etc.).
Parámetro 110 — Conversión USD visible Si el parámetro 110 = 1 y la factura está en moneda nacional, se muestra el equivalente en USD debajo del total, calculado con el tipo de cambio actual.

Saldo a favor del cliente

Los adelantos y saldos a favor del cliente se muestran en el Panel Crédito, línea Tiene:. Cuando es mayor a 0, el monto titila suavemente para llamar la atención del cajero.

Cliente genérico (SN): "Tiene:" siempre muestra 0 Las notas de crédito del cliente SN sí dejan saldo a favor, pero no se ven en el panel de crédito: se guardan aparte, por factura. Para verlos y retirarlos use Utils → Retiro Adelantos SN y busque la factura original (ver abajo).

Menú del saldo a favor

Haga clic sobre el monto de Tiene: para abrir el menú con estas opciones. Desde acá el saldo solo se consulta: para usarlo como pago, emita la factura a crédito (F8) y aplíquelo desde CxC → Cuenta Detalle → Aplicar pago.

OpciónQué hace
Ver movimientosAbre el modal de movimientos de la cuenta de adelantos (últimos 5 años)
Imprimir saldoEmite un comprobante del saldo actual por impresora POS

Generar adelanto

Desde el botón Utils:

  • Adelanto Cliente — Registra un adelanto a favor. Requiere cliente con código.
  • Retirar Adelanto — Devuelve al cliente parte o todo su saldo a favor.
  • Retiro Adelantos SN — Caso especial para clientes sin código, abre el modal Saldos Notas de Crédito MV-040.

Modal Saldos Notas de Crédito MV-040

Ruta: UtilsRetiro Adelantos SN. Lista las facturas que generaron NC con saldo a favor disponible para clientes sin código (cuenta 2104SN, tabla SaldosAFavor).

  • Columnas: Factura (con el número de la nota de crédito debajo) · Cliente · Fecha · Movimientos · Caja · Saldo
  • Buscador por número de factura, número de nota de crédito o nombre de cliente
  • Tipo de devolución: Efectivo (param 83) o Tarjeta (param 84 — requiere número de comprobante de anulación del datáfono)
  • Saldo Requerido: monto a retirar. Se calcula automáticamente el Saldo a Retirar (mín. entre requerido y disponible)

Botones de acción

BotónAcción
Exportar ExcelCSV con todas las filas visibles (Nota Crédito, Caja, Usuario, Saldo, Moneda)
Imprimir SaldoImprime comprobante POS del saldo de la factura seleccionada, con detalle de movimientos (fecha + monto con signo) y saldo final
AceptarProcesa el retiro. Genera asiento contable (UDE), registra en SaldosAFavor, imprime comprobante contable y a continuación imprime el comprobante del saldo restante (incluso si queda en 0)
Doble impresión al retirar Al presionar Aceptar, la impresora emite dos tiquetes: (1) comprobante contable del movimiento UDE y (2) comprobante de saldo a favor con el detalle de movimientos. El cliente queda con constancia del retiro y del saldo que queda pendiente.

Cuenta contable del saldo a favor

La cuenta contable donde se registra el saldo a favor se construye concatenando la cuenta base (parámetro 89, por defecto 2104) con el código del cliente:

ClienteCuenta generadaNombre
1082104108Adelanto - {Nombre del cliente}
3120252104312025Adelanto - {Nombre del cliente}
SN (genérico)2104SNSaldo a Favor - Sin Cliente (SN)
Creación automática Si la cuenta no existe en el catálogo contable, se crea automáticamente al emitir la primera NC/ND o al hacer el primer retiro. No requiere configuración manual.
Cambio 2026-04-20 Antes, las NC con cliente genérico (SN) registraban el saldo directamente en caja. Ahora lo registran en 2104SN como un pasivo real. Esto permite hacer el Retiro Adelantos SN correctamente, cancelando el pasivo contra caja.
Documentación contable Los adelantos generan movimientos en la cuenta de saldos a favor del cliente. Todos los movimientos (ingresos, retiros, aplicaciones) quedan disponibles en "Ver movimientos".

Envío Express y Boletillas BO-001

Desde el botón PROCESAREnvío Express, puede abrir el módulo de boletillas para gestionar envíos a domicilio / guías de transporte del día.

  • Pasa automáticamente el código y nombre del cliente actual (auto-abre el modal "Nueva Boletilla")
  • Funciona con cualquier cliente, incluyendo SN
  • Abre el módulo de boletillas en una nueva pestaña

Filtros del listado

Todos los filtros aplican auto-submit: al cambiar un valor la lista se recarga sola (los inputs de texto usan un debounce de 500ms, Enter también envía).

FiltroDescripción
Desde / HastaRango de fechas. Formato visible DD/MM/YYYY vía Flatpickr (independiente del idioma del navegador). Por defecto: mes actual.
EstadoPendiente (default) · Calle · Entregado · Todos. Nota: si no ve resultados al aplicar un filtro, revise que Estado no esté restringido a "Pendiente".
UsuarioFiltra por el cajero/usuario que creó la boletilla. Coincidencia exacta (aplica RTRIM para tolerar espacios).
AgenteFiltra por agente asignado. Incluye opción (sin agente) para ver boletillas sin asignar.
ClienteBusca por código o nombre de cliente (LIKE).
OrdenFecha descendente (default) / ascendente. Se recuerda en localStorage.

Estados

EstadoSignificado
Pendiente (0)Boletilla creada, aún sin salir a ruta.
Calle (1)El agente tiene la boletilla en ruta (con fecha/hora de Salida).
Entregado (2)Boletilla devuelta / entregada (con fecha/hora de Entrada).

Acciones masivas

Al marcar boletillas con los checkboxes aparece una barra azul con acciones:

  • Asignar Agente (MB-002) — asigna un agente a todas las seleccionadas y las pasa a estado Calle.
  • Marcar Entrada — registra hora de entrada y pasa a Entregado. Solo aplica a boletillas en estado "Calle".
  • Reset — limpia Agente a 59999, Estado a Pendiente y vacía Salida/Entrada. Útil para corregir errores.

Códigos del módulo

CódigoElemento
BO-001Listado principal de boletillas
MB-001Modal Crear / Editar Boletilla
MB-002Modal Asignar Agente (masivo)
MB-003Modal Buscar Cliente

Validación de monto alto

Cuando una línea supera los 5 millones de colones (cantidad x precio), el sistema muestra un modal de confirmación de seguridad.

Comportamiento

  1. Al agregar o editar una línea que supera el umbral, aparece un modal rojo
  2. Debe escribir la palabra "SI" (en mayúsculas) para confirmar
  3. Si cancela, la línea se elimina automáticamente
  4. Se envía una alerta por correo al email del parámetro 194
Protección contra errores Esta validación previene errores de digitación. Un artículo de 1,000 con cantidad 10,000 generaría una factura de 10 millones. El modal obliga a verificar antes de continuar.

Configuración de estación

La estación define los valores predeterminados para facturar. Acceda con el botón (piñón) en el panel Documento.

CampoDescripción
OficinaSucursal o punto de venta
CajaNúmero de caja/terminal
BodegaBodega predeterminada para las líneas
Tipo de precioNivel de precio predeterminado (1-10)
Estación por sesión La estación se asigna al iniciar sesión y se libera al salir. Solo un usuario puede usar una estación a la vez.

Modal Buscar Artículo MBA-001

Modal principal de búsqueda y selección de artículos durante la facturación. Se abre con F2 o el botón de búsqueda. Permite filtrar por categoría, por stock y muestra precios y existencias en tiempo real.

Barra de búsqueda

  • Texto — busca por código, código de barras, nombre, descripción o serie.
  • Todas las categorías — combo para limitar a una categoría específica.
  • Solo stock — checkbox que filtra a artículos con existencia positiva.
  • Buscar / Agregar — ejecuta búsqueda o agrega el primer resultado al documento.

Cuando el buscador no muestra artículos

La pantalla del buscador dice por qué está vacía. Son cuatro mensajes distintos y no significan lo mismo:

Lo que dice la pantallaQué pasóQué hacer
Escribí el nombre o el código del artículoEl campo de búsqueda está vacío.Escribir al menos una letra o un número.
Sin resultadosSe consultó el catálogo y no hay ningún artículo que coincida con lo escrito.Probar con menos letras (el buscador encuentra por pedacitos de código, nombre, descripción interna y código de barras). Si aun así no sale, revisar en Inventario → Artículos que el artículo exista y esté activo: los artículos inactivos y eliminados no se pueden facturar y por eso no aparecen acá (los descontinuados sí aparecen, para terminar de vender lo que queda).
Sin resultados con existenciasHay artículos que coinciden, pero están en existencia cero y el check Solo con stock los esconde. Es lo que pasa con los artículos recién creados, que todavía no tienen entrada de inventario. No quiere decir que el artículo no exista.Tocar el botón Buscar sin ese filtro que sale debajo del mensaje: apaga el check y repite la búsqueda. El check se recuerda en esa computadora, así que si quedó prendido de otro día, sigue prendido.
No se pudo consultar el catálogoLa consulta falló o tardó demasiado (conexión, servidor ocupado). No quiere decir que el artículo no exista.Intentar de nuevo. Si sigue igual, avisar a soporte y mandar la foto de la pantalla: debajo del mensaje sale el motivo en letra chiquita, que es justo lo que soporte necesita.
Ojo con el filtro de categoría y el check de solo stock: si quedaron puestos de una búsqueda anterior, pueden dejar la lista vacía aunque el artículo exista. El combo debe decir Todas las categorías.

Lista de resultados (con imagen lateral)

A la izquierda de la lista aparece la ficha de imagen del artículo seleccionado (130px de ancho, ocupa todo el alto del panel superior). Si el artículo tiene varias imágenes en su carrusel, se muestran apiladas verticalmente con scroll. Click sobre cualquier imagen la abre en grande (lightbox) sobre toda la pantalla; cierra con Esc, click fuera o el botón ✕.

Tabla con las columnas: Código, Nombre, Stock, Precio (sin IVA), IVA %, Neto (con IVA) y Cant (cantidad a agregar). Al pasar el mouse, se muestra además la categoría y subcategoría del artículo.

  • Enter sobre una fila → agrega el artículo al documento.
  • Clic sobre una fila → marca la fila como seleccionada y carga los paneles laterales de detalle.

Pedir abastecimiento desde el buscador MFD-SOL

En cada fila de resultados, pegado al nombre del artículo, aparece el botón de la manita (). Es el atajo para pedir que se abastezca ese artículo sin salir de la factura. Sirve para dos cosas:

  • El encargo puntual de un cliente: pide algo que no se tiene y se le va a conseguir.
  • La reposición de lo que se está agotando: el vendedor, que es quien lo ve primero, avisa en el momento.

Se abre una ventanita que pregunta cuánto hay que pedir (el foco entra directo ahí: digitar el número y Enter alcanza) y, si se despliega Para quién es, deja ajustar el cliente, para cuándo se necesita y marcarlo como encargo urgente. El cliente viene tomado de la factura que está abierta. También se abre con Shift + F2.

El pedido cae en Facturación → Despacho y Abastecimiento → Solicitud de Abastecimiento, etiquetado como FACTUDESK, y ahí proveeduría le asigna proveedor y genera la orden de compra. No descuenta ni compra nada por sí solo. Ver Solicitud de Abastecimiento.

Paneles de detalle (parte inferior)

PanelContenido
Stock ExternoExistencias en otras empresas del grupo (según configuración). La BD del usuario actual aparece resaltada en azul fuerte (sin badge). Filas en gris itálico indican que el artículo no existe en esa empresa; rojo claro = error de conexión a la BD.
PreciosLos niveles de precio (P1..Pn dinámicos) con columna Base y Base+IVA. Cada fila muestra badges de qué nivel corresponde a Estación (E) y Cliente (C). El nivel default aplicado se resalta con fondo azul.
BodegasExistencia por bodega con ubicación física. Total al encabezado.

Reglas de selección de precio (versión 2026-05-11)

El cajero puede elegir un nivel de precio diferente clickeando sobre la fila correspondiente en el panel Precios — esto se respeta al agregar la línea. Hay UNA regla que bloquea esa selección manual:

EscenarioDefault aplicadoPermite cambiar
Parámetro 57 = 1 (precio fijo de estación)P{ESTACION.tipoPrecio} forzado❌ NO. Las filas salen grises con cursor 'no permitido' y aviso amarillo "P{n} fijo".
Param 57 = 0 + Cliente SN (genérico)P{ESTACION.tipoPrecio}✅ SÍ. El cajero puede elegir cualquier otro nivel y se respeta.
Param 57 = 0 + Cliente real con TipoPrecioVentaP{TipoPrecioVenta del cliente}✅ SÍ.
Param 57 = 0 + Cliente real sin TipoPrecioP{ESTACION.tipoPrecio}✅ SÍ.

Flujo Enter — selección de precio + bodega + cantidad (bidireccional)

El Enter funciona en cualquier orden. Pasos:

  1. Buscás el artículo y se selecciona (fila marcada azul).
  2. Tipeás la cantidad en el input de la fila (default 1).
  3. Click en un nivel de precio (ej: P3) y click en una bodega (ej: Bodega A) — en cualquier orden.
  4. Enter con el foco en cualquier lado del modal → agrega con cantidad + P3 + Bodega A automáticamente.

Lo mismo aplica con doble clic en cualquier fila de precio o bodega (atajo equivalente al Enter). Tras agregar, el modal se cierra y las selecciones globales se limpian.

Cantidad por monto (Precio→Cant en barra de búsqueda)

Junto al input "Cantidad" hay un campo "Precio→Cant" que solo se activa para artículos fraccionados (azúcar, harina, líquidos a granel...). Tipeás el monto que el cliente quiere gastar (con IVA) y al hacer Enter / Tab el sistema calcula la cantidad fraccionada y la pone en Cantidad.

Fórmula: cantidad = (monto ÷ (1 + IVA/100)) ÷ precio redondeada a 3 decimales. Misma función disponible también dentro del modal Editar Artículo (MV-ART) usando el precio virtual (con descuento aplicado).

Imagen IA con Claude Vision Si el artículo se creó vía búsqueda con IA, el sistema usa Claude Vision para validar que la imagen elegida realmente sea del producto — descarta automáticamente personas, dibujos, ingredientes sueltos y logos sin marca. Reduce drásticamente las imágenes incorrectas en catálogos nuevos.

Modal Editar Artículo MV-ART

Al hacer doble clic (o usar la opción Editar) sobre una línea del documento se abre este modal para ajustar cantidad, precio, descuento, IVA, compuestos, lotes y vencimientos.

Campos principales

CampoDescripción
CantidadControlada con / +. Respeta la configuración de decimales (parámetro 25).
Precio Real / Precio Real c/IVAPrecio unitario original del artículo, sin y con IVA.
Precio Deseado / Precio c/IVA DeseadoPrecio virtual al que querés que quede el artículo. Al escribirlo, el sistema calcula solo el % de descuento necesario — NO cambia el precio base. Por eso requiere permiso 004 (descuentos), no el 024.
Desc. % / Desc. MontoDescuento manual sobre la línea. Requiere permiso 004.
Precio deseado (sin / con IVA)Campo de la ficha “Descuento desde precio virtual”: escribís el precio al que querés que quede el artículo y el sistema calcula solo el % de descuento necesario. Es un precio virtual — NO cambia el precio base. Solo requiere permiso 004 (descuentos), igual que escribir el descuento directamente.
Tarifa IVACombo con las tarifas de Hacienda que tenga cargadas la empresa: 02 Reducida 1 %, 03 Reducida 2 %, 04 Reducida 4 %, 08 General 13 % y 10 Tarifa exenta (0 %). CORREGIDO 2026-09-03 Ojo: el exento es el 10 — el código 01 no existe en el catálogo.
IVA %Porcentaje calculado a partir de la tarifa (solo lectura). Manda la tarifa: el porcentaje siempre sale de la tarifa elegida, nunca al revés.
Detalle / SerieTexto libre adicional que se imprime y viaja al XML. Ideal para número de serie, lote o nota.

Totales del modal

En la parte inferior del modal se muestran Subtotal, IVA y Total calculados en tiempo real al cambiar cualquier campo.

Pestañas especiales

PestañaFunción
Compuestos ManualPermite agregar sub-artículos (kit) que se descuentan de bodega al aplicar. Requiere permiso 119. Tabla: Id, Código, Nombre, Uds, Bodega, Costo/Ud, Total.
LOTESSelección de lotes específicos cuando el artículo maneja control de lotes. Se distribuye la cantidad por lote.
VENCIMIENTOSSelección de lote por fecha de vencimiento. Útil para FIFO / FEFO.
Recalculo automático Al cambiar cantidad, precio o descuento, los totales (subtotal, IVA, total) se recalculan inmediatamente. Los valores se redondean a 2 decimales para evitar errores IEEE 754.
Un producto exento sigue exento aunque edite la línea CORREGIDO 2026-09-03 Si el artículo está marcado con tarifa exenta en su ficha de Inventarios, editar la línea no le agrega impuesto: puede cambiarle la cantidad, el precio, el descuento o borrarle la observación y el producto se mantiene en 0 % . El impuesto solo cambia si usted cambia a propósito la Tarifa IVA del combo.
Descuento por “precio deseado” y permisos Aplicar un descuento escribiendo el precio deseado (con o sin IVA) solo requiere el permiso de descuentos (004) — igual que escribirlo en la lista de la factura. El permiso de editar precio (024) se pide únicamente si cambiás el precio base del artículo (campos “Precio Real” / “Precio Real c/IVA”), no al calcular un descuento.

Utilidades VE-UTL

Menú de funciones adicionales accesible durante la facturación. Cada utilidad abre un modal o ejecuta una acción sobre el documento actual o sobre la caja.

Inventario y artículos

UtilidadQué hace
Stock de lotesConsulta existencia por lote para el artículo seleccionado.
Kardex LotesHistorial de movimientos por lote (entradas, salidas, saldo).
Facturar a CostoAplica el costo promedio como precio de venta. Requiere permiso 021.
Sincronizar líneas con BDRefresca precios, stock y costos desde la base de datos sin perder el detalle capturado.

Cliente y saldos

UtilidadQué hace
Ingreso de adelanto de clienteRegistra un adelanto a favor del cliente (genera documento de abono).
Retiro de saldo a favorDevuelve parte o todo el saldo a favor del cliente.
Retiro Adelantos SNRetiro de adelantos del cliente genérico (Sin Nombre).

Documentos

UtilidadQué hace
Clonar CotizaciónDuplica la cotización que tiene abierta en pantalla en una cotización nueva, con consecutivo nuevo. No pide número: trabaja siempre sobre el documento actual, así que primero abra la cotización que quiere copiar y después entre a esta opción.
Clonar FacturaCrea una cotización nueva a partir de una venta ya emitida. Al abrirlo le muestra de una vez sus últimas 5 ventas: haga clic en una y queda clonada. Si necesita otra, búsquela por número de documento o por nombre de cliente. Solo lista facturas (01), tiquetes (04) y FEC (09).
Reimprimir VentaAbre el modal MV-018 para volver a imprimir una venta con la configuración actual de la estación. Al abrirlo muestra de una vez las últimas 5 ventas emitidas por su usuario, y además puede buscar por número o nombre de cliente. Requiere permiso 142; sin él pide clave de un supervisor.
Nota de CréditoGenera una nota de crédito sobre una factura ya emitida. Al abrirlo le muestra sus últimas 5 ventas para que elija una con un clic, sin digitar los 20 dígitos. También puede escribir el número de la factura y confirmar cliente, fecha y total con la lupa antes de continuar.
BoletillasEnvío Express / guías de transporte.
«Mis últimas 5 ventas» son las suyas, no las de todos. En Reimprimir Venta, Clonar Factura y Nota de Crédito la lista que aparece al abrir son las últimas ventas emitidas con su propio usuario. Si necesita un documento de otra persona o de otro día, use igual la caja de búsqueda: esa busca en todo.

Caja y efectivo

UtilidadQué hace
Contador MonedasHerramienta para contar billetes y monedas (arqueo de caja).
Contabilizar CierreEnvía el cierre de caja actual a Contabilidad.
Mov. ContableRegistra un movimiento contable manual asociado a la caja. Es la via para un gasto pagado con dinero de la caja: tipo de documento GAS, la cuenta del gasto del lado AUMENTA y la cuenta de caja/efectivo del lado RESTA. Paso a paso en Cobro en Caja · Movimiento Contable.
Ingreso Fondo CajaRegistra una inyección de efectivo a la caja.
Retiro Fondo CajaRegistra un retiro de efectivo de la caja.
Abrir CajónEnvía el comando ESC/POS para abrir la gaveta de dinero.

Import / Export de cotizaciones

UtilidadFormato
Exportar Cotización a Excel.xlsx con líneas y totales.
Exportar Cotización a XMLXML estructurado (útil para traspaso a otros sistemas).
Exportar Cotización a CSVSeparado por coma.
Importar Cotización (CSV/XML)Carga líneas desde archivo externo al documento actual.

Configuración

UtilidadQué hace
Romana / BalanzaAbre el modal MCF-ROM para configurar la lectura de códigos de balanzas (peso o precio embebido). Ver MCF-ROM.

Configuración Romana / Balanza MCF-ROM

Permite que el lector de barras interprete los códigos que imprimen las balanzas (romanas) cuando un código no se encuentra ni como Cod_Articulo ni como CodigoBarra. Se accede desde Utilidades VE-UTL → Configuración → Romana / Balanza.

Cómo funciona

Cuando escaneás un código en el campo de búsqueda de artículos, el sistema lo busca en este orden:

  1. Busca por Cod_Articulo exacto.
  2. Si no existe, busca en CodigoBarra.
  3. Si no existe y la romana está activa, intenta interpretarlo como código de balanza extrayendo el código del artículo y el valor (peso o precio).

El código de la balanza siempre arranca en la posición 1 y el valor sigue inmediatamente después. Solo hay que indicar 2 longitudes.

Campos del modal

CampoDescripción
Activa para toda la empresaSi está apagado, el sistema ignora la romana y los códigos no encontrados marcan error normalmente. La configuración es por empresa (compartida entre todas las estaciones).
Tipo: Cantidad / PrecioCantidad = el valor representa el peso en gramos, se divide por 1000 para obtener kg. Precio = el valor es el precio final con IVA, se calcula la cantidad como precio ÷ precio_unitario_artículo.
Largo del código del artículoCantidad de dígitos que ocupa el código del artículo desde la posición 1.
Largo del valor (peso o precio)Cantidad de dígitos del valor, arrancando justo después del código.
Probar parseo (no guarda)Pegá un código de prueba y mostrá qué extrae el sistema con la configuración actual. Útil para validar antes de guardar.

Ejemplo: EAN-13 estándar de balanza

Para un código como 2600101056111 (13 dígitos):

ConfiguraciónValor
TipoPrecio (con IVA)
Largo del código del artículo7 → extrae 2600101
Largo del valor5 → extrae 05611 = ¢5,611
Dígito 13Check digit del EAN-13, se ignora.

El artículo en la base de datos debe llamarse exactamente 2600101. Al escanear, el sistema agrega 1 unidad (en modo precio se usa la cantidad precio_balanza ÷ precio_artículo).

Configuraciones típicas

FormatoLargo cód.Largo val.Total dígitos
EAN-13 (con check digit)7513 (12 + check)
EAN-13 alterno6613 (12 + check)
Código corto6511

Importante: el último dígito de un EAN-13 es el check digit y NO debe entrar al cálculo. Por eso para 13 dígitos totales se configura código + valor = 12.

Almacenamiento

La configuración vive en la tabla dbo.RomanaConfig (singleton, 1 fila por empresa). La migración 20260511104634 la crea con valores default desactivados.

Opciones de línea MV-OPC

Modal que aplica acciones masivas sobre las líneas seleccionadas del documento. Se accede desde el menú Opciones o con el botón correspondiente de la barra de acciones.

Acciones disponibles

AcciónEfecto sobre las líneas seleccionadasPermiso
DescuentoAplica un % de descuento con tipo de descuento seleccionable.004
IVACambia la tarifa de IVA de las líneas.
PrecioAsigna un precio manual específico.024
Tipo PrecioCambia el nivel de precio (P1..P10) de las líneas.
ExonerarAplica la exoneración del cliente a las líneas.
Quitar Exo.Revierte la exoneración aplicada.
Exon. MAGAplica exoneración MAG (sector agropecuario) si el cliente la tiene vigente.
PescaMarca las líneas como actividad pesquera (exoneración especial).
BodegaCambia la bodega de origen de las líneas seleccionadas.
Saldo a favorAplica saldo a favor del cliente como forma de pago.

Aplicar descuento (modal detallado)

Al elegir "Descuento" se abre el panel con:

  • Tipo de Descuento — combo con las 10 clases Hacienda (01 Descuento general, 02 Bonificación, 07 Descuento comercial, etc.).
  • Porcentaje (%) — campo numérico con botones rápidos: 0, 5, 10, 15, 20, 25, 40, 50.
  • Descuento Máximo — checkbox que aplica el descuento máximo permitido por artículo.
  • Aplicar Descuento — botón primario que efectúa la acción sobre todas las líneas seleccionadas.
Requiere selección previa Debe marcar al menos una línea con el checkbox antes de abrir Opciones. Sin selección, las acciones no tienen efecto y se muestra un aviso.

Otros Datos, costos y margen

Tres funciones que se usan a diario y que conviene conocer: los datos extra que se le pueden poner a una factura, la actualización de costos al abrir una cotización y la columna de margen.

Otros Datos (MV-042)

Permite agregarle campos adicionales a una factura o proforma (número de orden de compra del cliente, placa del vehículo, número de contrato… lo que el negocio necesite).

Cómo acceder
  • Desde FactuDesk: Botón Utils → Opción "Otros Datos"
  • Desde Detalle Factura (VE-030): Botón "Otros Datos" en la barra de acciones

Flujo de uso

  1. Abra el modal "Otros Datos" desde cualquiera de los dos lugares
  2. Panel izquierdo: CRUD de favoritos (agregar / renombrar / quitar nombres de campos reutilizables)
  3. Panel derecho: formulario Nombre + Valor → click en un favorito lo pre-llena
  4. "Aceptar" guarda en FacturaVentaOtrosDatos y auto-registra el nombre en favoritos
  5. Lista inferior muestra los datos actuales — clic en fila para editar, 🗑️ para eliminar

Integración con Hacienda

Los campos guardados se emiten automáticamente en el nodo <Otros> del XML enviado a Hacienda como <OtroTexto codigo="NombreCampo">valor</OtroTexto>.

Transfer proforma → factura

Al convertir una proforma a factura, los datos extras se migran automáticamente del número de proforma al nuevo consecutivo de factura (sin intervención del usuario).

Auto-refresh de costos al abrir cotización

Cada vez que se abre o recupera una cotización/proforma, el sistema ahora sincroniza automáticamente los costos de las líneas con el costo actual del catálogo de artículos.

Problema que resuelve Antes, si el usuario actualizaba el costo de un artículo en Inventarios, las líneas ya existentes en proformas mantenían el costo viejo → el margen mostrado era incorrecto. Ahora al abrir la cotización, los costos se recalculan automáticamente.

Preview del último artículo encontrado

En la barra de búsqueda, después del input de código ahora aparece un preview visual del artículo buscado:

EstadoApariencia
Sin buscarGris claro con
Artículo encontradoVerde con código + nombre completo
No existeRojo con mensaje "No encontrado"

Margen de utilidad — validaciones

La columna %Marg de la tabla tiene 4 estados según la calidad del dato:

CondiciónSe muestra
Costo ≤ 0.01 (sin costo o residual) (em dash gris)
Margen calculado entre 0% y 1000%XX.XX% verde, 2 decimales
Margen negativo (precio menor al costo)−X.XX% parpadeando rojo ↔ amarillo
Margen > 1000% (costo mal configurado)ERROR parpadeando rojo ↔ amarillo
Margen negativo — venta con pérdida Si la casilla del margen aparece parpadeando con un porcentaje negativo, significa que el precio de venta es menor al costo del artículo. Revise que:
  • El descuento aplicado no sea excesivo
  • El precio editado manualmente no esté por debajo del costo
  • El costo del artículo sea correcto (si está inflado artificialmente)
ERROR en %Marg Cuando vea una celda parpadeando con "ERROR" en la columna margen, significa que el costo del artículo está mal configurado en el catálogo de Inventarios. Corrija el costo en Inventarios → Artículos (IN-002).

Filas sin stock — formato visible

Cuando una línea de artículo tiene cantidad mayor al stock disponible (faltante en bodega), toda la fila se marca en rojo:

  • Fondo: rojo claro (#fef2f2)
  • Texto: rojo oscuro (#dc2626) en peso 600 y tamaño completo (no se ve más pequeño)
  • Todos los campos de la fila (código, nombre, cantidad, precio, totales) mantienen el mismo tamaño que filas normales

Esto permite detectar visualmente artículos que provocarían sobregiro antes de procesar la factura.

Doble clic inteligente en tabla artículos

Se intercambió la acción del doble clic para mejor UX:

  • Doble clic en el CÓDIGO del artículo → abre el Kardex (consulta histórica de movimientos)
  • Doble clic en el NOMBRE del artículo → abre Editar Línea (MV-ART)

Indicador de conexión en el Total

El header de la ficha Total ahora muestra:

  • Moneda activa del documento (CRC, USD, EUR) como chip amarillo
  • Botón 💱 Cambiar que abre un popup para cambiar la moneda del documento
  • Puntito • de conexión al extremo derecho:
    • Verde pulsando → servidor en línea
    • Rojo pulsando → sin conexión

El sistema hace un ping automático al servidor cada 30 segundos, y también escucha los eventos online/offline del navegador.

Número de documento — últimos 10 dígitos

El número del documento mostrado en la ficha Documento se recorta a los últimos 10 dígitos cuando es un consecutivo electrónico (20 caracteres). Para proformas cortas se mantiene completo. El número completo sigue enviándose correctamente a todas las APIs.

Botón "Nueva" reubicado

El botón Nueva (abrir nueva venta en pestaña aparte) se movió del panel de Herramientas a la ficha Documento, junto al botón Imprimir. Solo es visible cuando la proforma tiene consecutivo real (no en documento de trabajo).

Parámetro 380 — control completo del teléfono

El parámetro 380 (Imprimir teléfono del cliente) ahora aplica en todos los formatos de salida:

  • ✅ POS térmica (FIPVIVI002)
  • ✅ Hoja carta centrado (FIPVIVI003)
  • ✅ Hoja carta 2 columnas (FIPVIVI004)
  • ✅ PDF DataReport (FIPVIVI005)
  • ✅ Matricial GDI (FIPVIVI006)
  • ✅ Vista HTML web
  • ✅ PDF del correo electrónico
  • ✅ Cuerpo HTML del correo
  • ✅ Bluetooth

Si 380 = 0, el teléfono del cliente no se imprime y la etiqueta cambia de "Tel/Email:" a "Email:" automáticamente.

Parámetros clave

El comportamiento del módulo se controla mediante parámetros de empresa:

Parámetros 49 y 249 — Monedas desde 2026-04-30

El sistema maneja dos parámetros distintos para moneda:

ParámetroConceptoEditableUso
49 Moneda predeterminada ✅ Sí La que se asigna a documentos nuevos al abrir Facturación. Cambiala desde Configuración para que las cotizaciones por default arranquen en USD, EUR, etc.
249 Código moneda nacional ❌ No (fija) La moneda del país. Es la base de los tipos de cambio (TC = 1). No se cambia.

Comportamiento al abrir Facturación

  • Si el documento de trabajo (u#####u) no existe → se crea con la moneda predeterminada (param 49)
  • Si existe pero está vacío → se sincroniza con la predeterminada actual al recargar
  • Si tiene líneas → respeta la moneda original (no rompe precios convertidos)
  • Si el cliente seleccionado tiene una moneda específica configurada en su ficha → esa gana sobre la predeterminada
Conversión automática de moneda al agregar artículo desde 2026-04-30

Cada artículo del catálogo tiene una moneda asignada (campo Cod_TipoMoneda). Al agregar el artículo a una cotización, el sistema decide:

Moneda ArtículoMoneda DocumentoAcción
USDUSDNo convierte — inserta el precio tal cual del catálogo
CRCCRCNo convierte
CRC (nacional)USDDivide entre el TC del USD → precio en USD
USDCRC (nacional)Multiplica por el TC del USD → precio en CRC
USDEURConversión cruzada vía la moneda nacional (factor TC_USD / TC_EUR)

El TC siempre se busca actualizado en la tabla TipoCambio al agregar la línea (no se confía en valores guardados que pudieran estar desactualizados).

Configurar la moneda de cada artículo Verificá en Inventarios → Editar artículo que el campo "Moneda" coincida con la moneda en que están registrados los precios. Si los precios están en USD pero la moneda dice CRC, las cotizaciones en USD quedarán con valores incorrectos.
Tipo de cambio visible en ficha Impuestos 2026-05-02

Cuando una cotización está en moneda extranjera (USD, EUR, etc.), aparece una fila adicional en la columna Impuestos del panel de totales:

💱 T.C. USD       500.00
  • Solo se muestra si la moneda del documento difiere de la moneda nacional (param 249).
  • El valor es el TC guardado en la cotización al crearla o cambiar la moneda — se "congela" para que cotizaciones viejas mantengan su histórico.
  • Si se modifica el TC en el catálogo de Tipos de Cambio, las cotizaciones existentes no se actualizan; solo las nuevas tomarán el TC nuevo.
  • Para forzar refresco del TC en el doc de trabajo: borrar todas las líneas y recargar el módulo.
Parámetro 45 — Orden de líneas en cotización desde 2026-04-27

Controla cómo se ordenan los artículos al abrir/recargar una cotización. Aplicado en cotizacion_carga_desktop.php.

ValorOrden aplicadoSQL
1Por nombre del artículo (alfabético)ORDER BY a.ArticuloNombre, h.NumeroLinea
2Por código del artículoORDER BY h.ArticuloCodigo, h.NumeroLinea
3 (default)Por línea (cronológico de inserción)ORDER BY h.NumeroLinea

El segundo criterio (NumeroLinea) es desempate por si hay nombres/códigos repetidos. El frontend NO re-ordena después de agregar líneas — para ver el orden correcto hay que recargar.

Editar fecha de la cotización NUEVO

En el panel Documento, hacer click sobre la fecha (icono ✏️ a la derecha) abre un selector Flatpickr para cambiar la fecha de la cotización.

  • Conserva la hora original de la cotización — solo cambia la parte fecha
  • Funciona sin importar el estado del documento (borrador, guardada, pedido, en cajas, histórica)
  • API: POST /api/proformas/cotizacion_actualiza_fecha.php — body { numero, fecha: "YYYY-MM-DD" }
Parámetro 277 — Recordar el último precio y descuento del cliente desde 2026-08-04

Con este parámetro activo, cuando le agrega a un cliente un artículo que ya le vendió antes, la línea sale con el mismo precio y descuento de la última vez — aunque la lista de precios haya cambiado desde entonces.

Para qué sirve: los precios pactados con un cliente suelen no estar en ninguna lista. Si el vendedor no se los sabe de memoria, factura al precio de lista y la empresa cobra de menos (o de más) sin darse cuenta.

Funciona desde el primer día: no hay que esperar a facturarle de nuevo. Si el sistema no tiene el precio a mano, lo busca en el historial de ventas de ese cliente y lo usa. Aplica en la facturación de computadora, celular y punto de venta.

SituaciónQué precio sale
El cliente ya compró ese artículo (aunque haya sido hace años)El último precio y descuento que se le facturó
Nunca le ha comprado ese artículoEl precio normal de su lista
Cliente genérico / contado sin nombreEl precio normal de su lista
El usuario escribe el precio a manoEl que escribió el usuario (manda sobre todo)

Tener en cuenta

  • El precio recordado se aplica aunque sea menor que el de la lista: se respeta lo pactado con el cliente. Si queda por debajo del costo, siguen actuando las autorizaciones de siempre (permisos 006 y 021).
  • Se recuerda el precio de facturas, tiquetes y exportaciones. Las notas de crédito y débito no cambian el precio recordado, porque corrigen un documento y no fijan un precio nuevo. Las facturas anuladas tampoco cuentan.
  • Este parámetro antes recordaba solo el descuento. Si su empresa ya lo tenía activo, ahora también recordará el precio.
  • Para cambiarle el precio pactado a un cliente, basta con facturarle al precio nuevo: la próxima vez saldrá ese.
Parámetro 190 — Redondear total factura desde 2026-04-22

Controla cómo se calcula el IVA de cada línea cuando el precio unitario sin IVA tiene decimales que, al sumarse con el IVA, deben cuadrar con un precio objetivo "redondo" con IVA incluido.

Caso típico: un artículo "vale" ₡1,700.00 con IVA al público. Para que eso cuadre con IVA 13%, el precio unitario sin IVA se guarda como 1,504.4248 (4 decimales). Sin este parámetro, el sistema redondea el subtotal antes de calcular el IVA y el total queda en ₡1,699.99 (pierde 1 céntimo).

ValorCálculo del IVAEjemplo PU 1,504.4248 × 1 × 13%
0 (default) IVA = Subtotal redondeado × tarifa Subtotal 1,504.42 · IVA 195.57 · Total 1,699.99
1 IVA = Subtotal sin redondear × tarifa Subtotal 1,504.42 · IVA 195.58 · Total 1,700.00

¿Cuándo activarlo?

  • El catálogo tiene precios "con IVA redondos" (₡500, ₡1,000, ₡1,700, etc.) y el cliente espera ver ese mismo total en la factura.
  • El usuario edita el campo Total con IVA en la línea y quiere que el valor digitado se respete tal cual al facturar.
  • Facturas POS / tiquetes donde el subtotal + IVA deben sumar exactamente el precio mostrado al cliente.

Nota Hacienda v4.4

Con el parámetro activo (190=1) puede haber una diferencia de ±0.01 entre Gravado × Tarifa e IvaMonto declarado en el XML. Esta diferencia está dentro de la tolerancia oficial de Hacienda (±0.05 por línea) y es el patrón estándar en sistemas de facturación electrónica que respetan el precio "con IVA objetivo".

Cómo activarlo

Desde Configuración → Parámetros de Empresa (CF-004), editar el parámetro 190 y poner valor 1. Toma efecto inmediato en la próxima línea agregada o modificada.

ParamDescripciónValores
3Agente obligatorio diferente al usuario0 = No, 1 = Sí
19Facturación solo por Cajas0 = Normal, 1 = Solo Cajas
25Decimales en cantidades0-3 decimales
50Permitir sobregiro global0 = No, 1 = Sí
57Precio fijo por estación0 = Libre, 1 = Fijo
65Relleno de código de artículo a 15 caracteres (pad con ceros a la derecha al buscar)0 = No, 1 = Sí
83Cuenta contable de Caja Efectivo (usada para ajuste de redondeo en moneda extranjera)Cuenta contable
102Bloquear selección de bodega0 = Libre, 1 = Fija
110Mostrar equivalente en USD debajo del total0 = No, 1 = Sí
125Generar factura electrónica0 = No, 1 = Sí
153-158Bloquear descuento por nivel de precio0 = Permitir, 1 = Bloquear
190Redondear total factura — cuadra el total de línea con el precio objetivo con IVA (ver detalle)0 = Tradicional, 1 = Total cuadra exacto
194Email alerta montos altosDirección email
249Código de moneda nacional (configurable por país)CRC / USD / PAB / etc.
277Recordar último precio y descuento cliente+artículo (ver detalle)0 = No, 1 = Sí
343Mostrar serie como nombre artículo0 = Normal, 1 = Solo serie
344Mostrar % descuento por línea en factura física, pantalla y PDF. El monto del descuento por línea y el total DESCUENTO al pie siempre se imprimen (no se ocultan).1 = Mostrar, 0 = Ocultar
385Mostrar artículos con precio 0 en el modal de búsqueda0 = Ocultar, 1 = Mostrar
390Usuario de la factura: 0 = creador de la cotización, 1 = Usuario Ventas activo0 / 1
392Agente de la factura = Usuario Ventas (requiere 390=1). Con 1 sobreescribe el agente original de la proforma. No activar si usa comisiones por agente.0 / 1

Permisos

Los permisos controlan qué acciones puede realizar cada usuario en el módulo de facturación. Se configuran desde Configuración > Usuarios asignando los códigos correspondientes.

Acceso al módulo

CódigoPermisoEfecto si NO tiene
653Acceso a FactuDeskNo puede abrir el módulo

Edición de líneas

CódigoPermisoEfecto si NO tiene
024Editar precio de ventaEl campo de precio aparece como solo lectura, no puede cambiar el precio unitario ni el total con IVA en las líneas
004Aplicar descuentos manualesEl campo de descuento aparece como texto, no puede modificar el % de descuento en líneas
023Hacer descuento mayor al permitido del artículoEl descuento queda limitado al máximo configurado por artículo (no puede superarlo)
006Facturar bajo la utilidad mínimaSi el precio sin IVA (con el descuento) queda bajo la utilidad mínima (parámetro 16 o por nivel) aunque siga ≥ al costo, no puede aplicarlo: el descuento se quita o el precio se ajusta al mínimo
021Facturar bajo el costoSi el precio sin IVA (con el descuento) queda por debajo del costo, no puede continuar (modal "No autorizado"). También controla la opción "Facturar a Costo" del menú de acciones
059Eliminar líneasNo puede borrar artículos individuales ni seleccionados del documento

Visualización

CódigoPermisoEfecto si NO tiene
064Ver margen de utilidadNo ve la columna "Util %" en la tabla de artículos ni el monto total de margen en el pie del documento
656Ver stock de inventarioNo ve la columna "Stock" con la existencia disponible por bodega en la tabla de artículos

Acciones del documento

CódigoPermisoEfecto si NO tiene
104Guardar cotizacionesBotón "Guardar" deshabilitado, no puede guardar proformas/cotizaciones
060Eliminar cotizacionesNo puede eliminar cotizaciones completas desde el modal de recuperar
069Ver cotizaciones de otros usuariosSolo ve sus propias cotizaciones al recuperar; con el permiso ve las de todos
119Compuestos manualesNo ve la pestaña de artículos compuestos (kits)
123Enviar a CajasBotón "Enviar a Cajas" deshabilitado
536Enviar proforma como pedidoDentro de PROCESAR, el botón Enviar Pedido aparece en gris. Este permiso es independiente del 078: se puede tener uno sin el otro
078Emitir facturasLos botones de cobro EFECTIVO, TARJETA y SINPE aparecen en gris, y dentro de PROCESAR también quedan grises Factura Contado y Factura Crédito. El botón PROCESAR sí abre: desde ahí se puede enviar pedido, enviar a Cajas, imprimir, mandar por correo o WhatsApp, archivar y exportar. La factura la tiene que emitir un usuario autorizado
El botón PROCESAR ya no depende del permiso 078 desde 2026-08-27 Antes, al usuario sin el permiso 078 se le apagaba el botón PROCESAR completo. El problema es que PROCESAR no es «la factura»: es el menú donde también viven Enviar Pedido, Enviar a Cajas, Imprimir, Correo, WhatsApp, Archivar y Excel / XML. Por eso un vendedor con el permiso 536 (enviar proforma como pedido) no lograba mandar ni un pedido. Ahora PROCESAR abre siempre y adentro quedan en gris únicamente Factura Contado y Factura Crédito. Así se arma el perfil «vendedor que toma pedidos pero no factura»: 536 sí, 078 no.
El permiso 078 se revisa ANTES de apartar el número desde 2026-08-25 Antes, quien no tenía el permiso 078 alcanzaba a pulsar cobrar: el sistema ya le había apartado el número de factura y recién después lo rechazaba, así que ese número quedaba quemado y en el listado de Ventas se veía un salto en la numeración. Ahora el permiso se revisa primero y no se gasta ningún consecutivo. Si por cualquier otro motivo un número llegara a quedar sin usar, queda un renglón en la Bitácora del Sistema que empieza con «FACTURA NO EMITIDA», con el número y el motivo.
Botones deshabilitados Los botones de acciones sin permiso no se ocultan, sino que aparecen en gris con un tooltip "Sin permiso". Así el usuario sabe que la función existe pero no tiene acceso.
Cómo se asignan los permisos Los permisos se asignan por usuario en Configuración > Usuarios > Editar > Permisos. Los cambios aplican inmediatamente la próxima vez que el usuario recarga el módulo (no requiere cerrar sesión).