FactuNubix Guía de usuario
Introducción

¿Qué es FactuNubix?

FactuNubix es una aplicación de gestión comercial diseñada para pequeñas y medianas empresas del sector de moda, calzado y accesorios. Permite controlar el inventario de productos, registrar compras a proveedores, emitir facturas de venta, hacer seguimiento de pagos y analizar el rendimiento del negocio desde el celular o el computador.

Todo funciona en la nube (Firebase / Firestore), lo que significa que los datos se sincronizan automáticamente entre todos los dispositivos vinculados a la misma cuenta de Google. Sin conexión, la app sigue funcionando con la caché local y sincroniza cuando se recupera el internet.

Flujo de trabajo típico

  1. Configura tu empresa — ingresa en Ajustes los datos de la empresa (nombre, NIT, IVA por defecto) que aparecerán en las facturas impresas.
  2. Registra tus productos — crea el catálogo en Inventario con referencia, descripción, precio, costo, marca y categoría. Puedes importarlos masivamente desde Excel.
  3. Agrega tus clientes y proveedores — en la sección Terceros crea las empresas/tiendas (clientes) y proveedores/talleres.
  4. Registra compras — cuando llega mercancía de un proveedor, crea una Compra (COMP), por ejemplo desde Documentos → Compras → Nueva compra. Suma unidades al inventario y genera deuda en Cartera → Por Pagar.
  5. Emite facturas — cuando vendes, crea una Factura (FAC) en Documentos → Ventas. Descuenta unidades del inventario y genera saldo en Cartera → Por Cobrar.
  6. Gestiona pagos — en Cartera registra los abonos parciales o totales de clientes y proveedores.
  7. Analiza — en la pestaña Estadísticas (icono 📊 en la barra superior) consulta ventas, rotación, clientes en riesgo, cartera vencida, rentabilidad y más.

Datos que maneja la app

📦 Productos
Catálogo con stock calculado por movimientos, precios, costos, colores, marcas y categorías.
👥 Terceros
Clientes (empresa/tienda) y proveedores/talleres, con historial por tercero y exportación PDF.
📄 Documentos
Ventas (FAC), Compras (COMP), Devoluciones (DEV) e Ingreso manual (INGM). Cada subpestaña tiene su lista y botón de alta; los iconos ? explican cuándo usar cada tipo. Las entradas suman stock (+); las ventas lo descuentan (−).
🛒 Compras
COMP: compra al proveedor (entra stock). DEV: devolución de venta — el cliente devuelve mercancía (vuelve a sumar stock). En Cartera, DEV se lista en Por Pagar por comodidad de la interfaz, aunque contablemente es crédito al cliente.
💳 Cartera
Control de pagos, abonos, saldos y estado de pago en cuentas por cobrar y por pagar (exportable a PDF/Excel).
📊 Historial
Movimientos de inventario con filtros avanzados y exportación PDF. Los análisis gráficos están en la pestaña Estadísticas (📊 en la barra superior).
⚙️ Ajustes
Apariencia, colaboradores, datos de empresa y Centro de gestión (backups, restauración, limpieza y permisos).
Pestañas principales

Pestaña Inventario

Cómo se calcula el stock

El saldo de cada producto se calcula en tiempo real reproduciendo todos los movimientos en orden cronológico. No hay un campo "unidades" fijo; el saldo es siempre el resultado del historial.

Tipos que suman stock: COMP, INGM, NUEVO, AJUSTE+ y DEV (devolución de venta: el cliente devuelve mercancía vendida).
Tipos que restan stock: FAC y AJUSTE−.
En el replay del historial no cuentan los movimientos excluidos: líneas COMP/DEV cuyo movimiento o documento ligado está Anulada, movimientos FAC ligados a factura anulada, y movimientos INGM marcados como Anulada en el propio movimiento.

Estado del producto: Activo / Inactivo

Cada producto tiene un campo Estado propio (Activo / Inactivo), independiente del estado de facturas y compras. En inventario, Inactivo sigue listado (misma fila/tarjeta, con estilo atenuado) y el stock se calcula igual que para Activo.

En Estadísticas, la app no filtra por Activo/Inactivo: los gráficos usan movimientos del periodo (y excluyen documentos Anulada como en el resto del sistema). Vistas como top de stock por producto o por marca, cuando el periodo no es «Todo», solo incluyen productos que tuvieron algún movimiento de inventario en ese rango; eso puede hacer que un artículo no salga aunque sea Activo, si no hubo actividad en el periodo.

Costo del producto — editable y con actualización automática desde Compras

El campo Costo (Pesos) en Editar Producto ya no es de solo lectura: puedes escribirlo o corregirlo manualmente cuando quieras. Además, se sigue actualizando automáticamente en dos situaciones relacionadas con compras:

  • Al registrar una entrada (COMP, DEV o INGM desde Documentos, o entrada genérica desde Inventario) — al guardar, el sistema toma el precio de esa línea y lo escribe como el nuevo costo del producto (las devoluciones DEV no lo modifican). También actualiza el proveedor si aplica.
  • Al editar el precio de un ítem en una COMP ya guardada, o al agregar un producto nuevo a una COMP existente — ese precio se propaga automáticamente como costo del producto.
Por eso, al abrir Editar Producto después de haber registrado una compra, el campo Costo ya aparece pre-llenado con el último precio de entrada. Puedes dejarlo así, o sobrescribirlo a mano si el precio de la compra no refleja el costo real del producto (ej. flete, aduana, ajustes internos).
⚠️ El costo se sobreescribe cada vez que se registra o edita una entrada de compra — incluso si lo habías corregido manualmente antes. Siempre refleja el precio de la compra más reciente, no un promedio: si editas el costo a mano, ten en cuenta que la próxima compra de ese producto volverá a sobrescribirlo.

Precio Venta 1 y Precio Venta 2 — columna PV2 en Inventario

Cuando 🏷️ Usar Precio Venta 1 y 2 está activado en Ajustes → Permisos, el inventario muestra una columna adicional PV2 junto a la columna de precio. Cada producto puede tener dos precios independientes:

  • PV1 (Precio Venta 1): precio estándar o minorista. En el encabezado de la tabla pasa a llamarse PV1; cuando la función está desactivada se llama simplemente Precio Venta.
  • PV2 (Precio Venta 2): segundo precio (ej. precio mayorista). La columna PV2 solo aparece con la función activa; si un producto no tiene PV2 asignado, muestra .

Al buscar un producto para agregar a una factura o devolución, el tooltip de precio muestra PV1: $… · PV2: $… cuando ambos precios están disponibles.

Editar un producto

  • Se edita desde la pantalla de Inventario tocando el producto.
  • Si cambias el campo de unidades directamente, se crea un movimiento AJUSTE+ o AJUSTE−.
  • Puedes editar nombre, referencia, categoría, marca, precio de venta, costo (campo libre, editable directamente), proveedor, estado.
  • Con Precio Venta 1 y 2 activo: aparece el campo Precio Venta 2 (con nota ej. precio mayorista) junto a Precio Venta 1. Ambos se guardan de forma independiente.

Eliminar un producto

La eliminación de productos está protegida por permisos en Ajustes → Centro de gestión → Permisos.
  • Si Eliminar productos del inventario está activado, en Editar Producto aparece el botón Eliminar.
  • Si está desactivado, el botón se oculta y no se permite eliminar desde ese modal.
  • Al eliminar, también se eliminan los movimientos de ese producto para mantener el historial consistente.
Pestañas principales

Pestaña Terceros

Empresas / Tiendas (clientes)

  • Se crean, editan y eliminan desde la sección Terceros → pestaña Empresa/Tienda.
  • Campos: código, NIT/Cédula, nombre de empresa, nombre completo, ciudad, teléfono, correo electrónico, términos de pago, descuento global (%).
  • El campo términos de pago aquí es solo el valor por defecto que se pre-llena al crear una factura nueva para ese cliente — no bloquea nada en el propio directorio de clientes, así que no lleva tooltip de "términos vencidos" (ese concepto solo aplica dentro de una Factura o Compra ya guardada; ver Términos y vencimiento).
  • Con 🏷️ Usar Precio Venta 1 y 2 activo: aparece el campo Lista de Precios Predeterminada (PV1 — Precio Venta 1 / PV2 — Precio Venta 2). Define qué precio se aplica automáticamente en Factura y Devolución al seleccionar ese cliente. Si se cambia manualmente en la factura, la app muestra una confirmación de advertencia.
  • Al editar un cliente (nombre o empresa), el sistema actualiza retroactivamente los movimientos FAC que estaban a su nombre.
  • El descuento global del cliente puede pre-llenarse al crear una factura.

Proveedores / Talleres

  • Misma lógica que los clientes, desde la pestaña Proveedor/Taller.
  • Al editar nombre o empresa del proveedor, se sincronizan retroactivamente los movimientos COMP y DEV.

Eliminar terceros

⚠️ Eliminar un cliente o proveedor solo lo borra del directorio. Los movimientos históricos (FAC, COMP, DEV) mantienen el nombre del tercero aunque ya no exista en el directorio.

Historial por tercero

Desde la lista de clientes o proveedores puedes ver el historial de compras o ventas asociado a ese tercero (botón de historial por fila), con filtros por período y producto. Los registros en estado Anulada no se listan en esos historiales (Empresa/Tienda → ventas; Proveedor/Taller → compras/devoluciones); el registro anulado sigue consultándose desde Cartera, Ventas o Compras, como se describe en Estados → visibilidad de Anulada.

Pestañas principales

Pestaña Documentos

La pestaña Documentos agrupa ventas y los flujos de entrada de inventario que antes se mezclaban en una sola lista: ahora cada flujo tiene su subpestaña, su lista filtrable y su botón de alta.

Subpestañas (Ventas, Compras, Devoluciones, Ingreso manual)

SubpestañaContenido y acción principal
VentasLista de FAC con búsqueda y filtro por período. Botón Nueva Factura (icono −, rojo): descuenta stock al despachar.
ComprasSolo documentos COMP. Botón Nueva compra (icono +, verde): suma stock. Modal con tipo COMP fijo.
DevolucionesSolo DEV. Botón Nueva devolución (icono +, teal): suma stock. La FAC relacionada es opcional — si la eliges, el buscador filtra solo los productos de esa factura; si ya no existe, usa el catálogo completo.
Ingreso manualLista de movimientos INGM. Botón Nuevo ingreso manual (icono +, lima): entrada directa sin documento en Cartera.
  • En el modal de entrada, si abriste desde una subpestaña, el tipo (COMP / DEV / INGM) aparece como texto fijo arriba. Al abrir la entrada por otras rutas (por ejemplo, desde un producto en Inventario), ese bloqueo se limpia y vuelve a mostrarse el selector de tipo (por defecto COMP).
  • Títulos del modal según flujo: Nueva compra, Nueva devolución, Nuevo ingreso manual; al editar un movimiento desde el historial: Editar entrada.
  • En móvil, las cuatro subpestañas no se parten en dos filas: caben en una fila con scroll horizontal si hace falta.
  • Cada subpestaña tiene un icono ? con ayuda sobre cuándo usarla (Ventas, Compras, Devoluciones, Ingreso manual).

🗃️ Archivados en Documentos

Al final de cada subpestaña (Ventas, Compras, Devoluciones e Ingreso manual) hay un bloque plegable 🗃️ Archivados. Los datos se cargan solo al expandirlo (no ralentiza el inicio de la app).

  • No suma al total de la lista activa de arriba — es consulta histórica separada.
  • Ventas: columnas #, Fecha, Referencia, Empresa de Cliente, Nombre Completo, Estado, Total y Utilidad (respeta el toggle mostrar/ocultar utilidad de la lista de ventas).
  • Compras / Devoluciones: mismas columnas excepto Utilidad; la referencia abre el detalle en solo lectura.
  • Ingreso manual: movimientos INGM archivados (por fecha de historial); solo lectura, sin Desarchivar.
  • Con Permitir Desarchivar activo en Ajustes, aparece ↩ Desarchivar en facturas, compras y devoluciones archivadas.
  • Las facturas/compras en Anulada aparecen aquí (a diferencia del Libro Mayor por tercero, que oculta Anulada en 🗃️ Archivados).

Editor de Facturas (FAC) — capacidades

  • Crear una nueva factura con número automático correlativo.
  • Seleccionar cliente (empresa/tienda), vendedor, bodega, ciudad, términos de pago, notas.
  • Agregar productos línea por línea con búsqueda por nombre, referencia o categoría. Cada línea incluye cantidad, precio, descuento por ítem (%) y color.
  • Aplicar un descuento global (%) sobre el subtotal neto.
  • Configurar IVA por factura (sobrescribe el IVA de empresa si se usa override).
  • Ver subtotal, descuentos, IVA y total en tiempo real.
  • Cambiar el estado entre Pendiente y Anulada desde la columna Estado ▾ en Cartera; Cancelada (Pagada) se alcanza al completar el pago en el modal de pagos (Pago Factura / abonos).
  • Imprimir o exportar la factura a PDF.
  • Eliminar la factura (con restricciones, ver abajo).

Importar desde foto o archivo (escaneo con IA)

Desde el editor de ítems, el botón Importar desde foto o archivo permite cargar hasta 5 archivos a la vez (foto, PDF, Word .doc/.docx o Excel/CSV .xls/.xlsx/.csv) de una factura o remisión de proveedor. El sistema analiza el contenido con inteligencia artificial y agrega automáticamente las filas de productos al editor.

  • Fotos y PDF se envían directamente para lectura visual del documento; Word y Excel/CSV se leen primero en el navegador (se extrae el texto o las hojas) y ese texto es lo que se analiza.
  • El análisis reconoce cliente, fecha, número de documento y cada línea de producto (referencia, descripción, cantidad y precio unitario). Cuando una fila de proveedor mezcla marca y referencia en un solo texto (por ejemplo "AJ (901 - MORRAL AJ)"), el sistema separa automáticamente el código (901) de la descripción.
  • Si ya hay productos agregados en la factura, se pregunta si quieres agregar (suma las filas nuevas al final) o reemplazar (borra los ítems actuales y deja solo los del archivo).
  • Al cargar varios archivos a la vez, se procesan uno por uno y las filas de todos se van sumando (salvo que elijas reemplazar, que solo aplica al primero).
  • Requiere haber iniciado sesión con Google — el análisis se hace en un servidor propio, no en el navegador.
⚠️ La precisión no es del 100%. Siempre revisa con cuidado las cantidades, precios y referencias que se agreguen antes de guardar la factura — el sistema puede leer mal un documento borroso, manuscrito o con formato inusual.

Lista de precios (PV1 / PV2) en Factura y Devolución

Con 🏷️ Usar Precio Venta 1 y 2 activo en Ajustes, aparece el control Lista de precios: PV1 · PV2 en el encabezado del editor de ítems. Funciona así:

  • Al seleccionar un cliente que tiene una Lista de Precios Predeterminada configurada en Terceros, el control cambia automáticamente a PV1 o PV2 y todos los ítems se pre-cargan con ese precio.
  • Al cambiar manualmente entre PV1 y PV2, si el cliente seleccionado tiene una preferencia distinta, la app muestra una confirmación: "¿Deseas cambiar a Precio Venta 2 para esta factura?". Si se confirma, todos los ítems ya agregados actualizan su precio al de la lista elegida.
  • La etiqueta activa muestra · usando Precio Venta 1 o · usando Precio Venta 2 junto a los botones.
  • Al agregar un producto, el precio inicial corresponde a la lista activa: PV1 usa el campo Precio Venta 1 del producto; PV2 usa Precio Venta 2 (cae a PV1 si el producto no tiene PV2 asignado).
  • Este control aplica igual en el editor de Devoluciones (DEV).

Guardado automático (Borrador)

Las facturas guardan automáticamente en dos capas:

  • Factura nueva (sin ID) — guarda en localStorage del navegador 3 segundos tras el último cambio, y también al presionar "Volver" o salir de la app.
  • Factura existente (con ID) — guarda silenciosamente en Firestore 3 segundos tras cada cambio, y también al salir.
  • Sin conexión o error de Firestore — cae de respaldo a localStorage para no perder datos.
Restauración de borrador: al abrir una factura (nueva o existente), si hay un borrador guardado en localStorage, el sistema lo restaura automáticamente y muestra el mensaje "📋 Borrador restaurado — guarda para confirmar". El borrador se borra del localStorage tras una escritura exitosa en Firestore.
⚠️ El auto-guardado NO aplica si:
  • La factura está en modo solo lectura (Cancelada).
  • Los términos de pago han vencido (los campos financieros no se auto-guardan, pero el estado y las notas sí se pueden cambiar).
  • La factura es nueva y aún no tiene ítems (no guarda borrador vacío).

Límite de cantidad por stock disponible

Al agregar o editar un ítem, el sistema valida que la cantidad no supere el stock disponible:

  • Al agregar un producto — sin colores: bloquea si la cantidad supera el stock. Con colores: valida color por color y bloquea si alguno supera su stock individual.
  • Al editar la cantidad de un ítem ya agregado — muestra el saldo actual en tiempo real y no permite cerrar si la cantidad lo supera.
Excepción — color "Surtidos": los colores cuyo nombre incluye la palabra "surtidos" no están sujetos a la restricción individual de color; en su lugar usan el total de unidades del producto.
Esta validación aplica únicamente en la edición de la factura. Si el stock cambia después de haber guardado (por ejemplo, por otra factura), el sistema no bloquea retroactivamente las facturas existentes.

Permitir Saldo Negativo (Ajustes → Centro de gestión → Permisos)

El toggle Permitir Saldo Negativo cambia el comportamiento de todo lo anterior en toda la app:

  • Desactivado (por defecto): el comportamiento es el descrito arriba — el sistema bloquea agregar o guardar cantidades que superen el stock disponible, y el saldo de cada producto/color nunca se muestra por debajo de cero.
  • Activado: se puede facturar o vender aunque el stock quede en negativo — ya no se bloquea la cantidad ni al agregar un ítem ni al editarlo, en productos con o sin colores.
  • Con el saldo en negativo, el número se muestra en rojo y en negrilla en Inventario (por producto y por grupo de marca) y en el detalle de cantidad dentro del editor de la factura, para que sea fácil detectarlo.
  • Este permiso es independiente de los permisos de eliminación/anulación y del modo Precio Venta 1 y 2; se guarda junto con ellos en Centro de gestión → Permisos.
⚠️ Úsalo con cuidado: activar Saldo Negativo es útil si necesitas facturar antes de registrar la compra que respalda esas unidades, pero un stock negativo sostenido normalmente indica que falta registrar una entrada (COMP, INGM o AJUSTE+) o que hay un error de conteo.

Cómo afectan las facturas al stock

Cada producto en la factura genera un movimiento tipo FAC que descuenta unidades del inventario. Al guardar (o al guardar automáticamente), el sistema:

  1. Elimina los movimientos FAC anteriores de esa factura.
  2. Crea nuevos movimientos FAC con las cantidades actuales.
  3. Recalcula el stock de todos los productos afectados (nuevos y anteriores).

Editar una factura existente

  • Se puede editar en cualquier momento, excepto cuando los términos de pago han vencido — en ese caso los campos de precio, cantidad, descuentos e IVA son de solo lectura.
  • Si la factura está marcada como Cancelada (Pagada), el editor se abre en modo de solo lectura completo (no se puede agregar ni modificar ítems, ni guardar).
  • Cuando los términos vencieron, sí puedes editar el estado y las notas, pero no los campos financieros.
⚠️ Modo solo lectura por términos vencidos: aplica únicamente a facturas ya guardadas (con ID). Las facturas nuevas (en creación) nunca están en modo solo lectura, sin importar la fecha.

Eliminar una factura

Restricción práctica: si la factura está en Cancelada (Pagada), el editor queda en solo lectura y no se ofrece eliminar desde ahí.
Condiciones para borrar la remisión (FAC): además del permiso Eliminar Facturas (FAC) en Ajustes → Centro de gestión → Permisos, el registro debe estar en estado Anulada y no tener ningún pago registrado (ni parcial). Si hay abonos, primero elimínalos en el modal de pagos (botón Pago Factura en Cartera); el botón Eliminar en el editor solo se muestra cuando corresponde.

Qué hace la app al pulsar Eliminar factura: busca movimientos aún vinculados a esa remisión (mismo facturaId), los borra en la base de datos y en la memoria local, borra el documento de la factura y ejecuta un recálculo de stock por reproducción del historial para los productos que esas líneas tocaran. En la práctica solo puedes eliminar en Anulada sin pagos: al anular, los FAC ya se eliminaron, así que casi siempre no queda ningún movimiento por quitar y el stock no cambia al eliminar (solo desaparece el registro en Ventas). Si quedara alguna línea FAC huérfana, el recálculo sí devolvería unidades al inventario.

Estado Anulada en Facturas — efecto en stock

Pasar una factura a Anulada es lo que quita del inventario el descuento de esa venta: el sistema elimina los movimientos FAC de esa remisión y recalcula el stock (equivalente a restaurar unidades). Si luego se reactiva (Anulada → Pendiente), recrea los movimientos FAC y vuelve a descontar.

Pestañas principales

Pestaña Historial

Tipos de movimiento y su efecto en stock

📦 COMP — Compra
Suma unidades. Asociada a un proveedor.
🧾 FAC — Factura
Descuenta unidades. Asociada a una factura de venta.
↩️ DEV — Devolución de venta
Suma unidades. El cliente devuelve mercancía que habías vendido (vuelve al inventario).
📝 INGM — Ingreso Manual
Suma unidades. Entrada directa sin documento en Cartera. Cada alta queda en estado operativo Activo (cuenta en inventario de inmediato); al anular el ingreso deja de sumar al stock hasta reactivar o eliminar la línea.
⬆️ AJUSTE+
Suma unidades. Ajuste positivo manual.
⬇️ AJUSTE−
Descuenta unidades. Ajuste negativo manual.
🆕 NUEVO
Suma unidades. Movimiento inicial al crear un producto.

¿Qué puedo editar en el Historial?

Tipo¿Editable?¿Eliminable?
COMP✓ Sí✓ Sí la línea de movimiento desde el Historial (recalcula stock). El documento de compra completo se borra solo desde Compras, con permiso + Anulada + sin pagos.
INGM✓ SíNo se borra “a pelo”: en el modal de edición, Anular ingreso (permiso Anular INGM) marca el movimiento Anulada y deja de contar para el stock; Eliminar (permiso Eliminar INGM) solo aparece si ya está anulado. Los permisos no sustituyen esa regla.
DEV✓ Sí✓ Sí el movimiento desde el Historial (recalcula stock). El registro DEV completo: detalle/modal, permiso + Anulada + sin pagos.
FAC🔒 NoNo se borra la línea suelta: solo al eliminar la factura desde Ventas (permiso + Anulada + sin pagos).
AJUSTE+ / AJUSTE−🔒 No✓ Sí (recalcula stock)
NUEVO🔒 No✓ Sí (recalcula stock)

Archivado automático del historial

FactuNubix archiva automáticamente los movimientos más antiguos que Meses de historial activo (Ajustes → Centro de gestión → Permisos: 3, 6, 12 o 24 meses; predeterminado 6). No requiere acción manual. Una vez archivado, un movimiento deja de aparecer en el Historial en vivo (para mantener la app rápida), pero no se pierde: queda en un archivo histórico separado, consultable desde el Panel de Administración y se incluye al abrir Estadísticas (la app carga el archivo bajo demanda). Ver 4.3 · Historial de Movimientos — Archivado automático.

Vistas del Historial

  • Todos Movimientos: lista de movimientos individuales con filtros por tipo, período, empresa, proveedor y nombre; exportación a PDF.
  • Por producto: movimientos agrupados por producto, mostrando entradas, salidas y saldo.
Los análisis gráficos (ventas, Pareto, rotación, cartera, etc.) están en la pestaña Estadísticas de la barra superior — ya no forman parte del Historial.
Pestañas principales

Pestaña Cartera

Qué muestra la Cartera

La Cartera agrupa documentos con saldo de cobro o pago pendiente (y también los ya cancelados o anulados mientras sigan visibles):

  • Por Cobrar: Facturas (FAC) con saldo pendiente o abono parcial.
  • Por Pagar: Compras (COMP) con saldo pendiente. Las Devoluciones (DEV) — devolución de venta del cliente — también aparecen aquí para gestionar su estado y pagos, aunque contablemente representan crédito al cliente, no deuda a proveedor.

Registrar pagos

  • Desde la columna Estado ▾ de Cartera, o con el botón Pago Factura / Pago Compra / Pago Devolución en la misma fila, puedes registrar uno o más pagos parciales (abre el modal de pagos).
  • En el modal de pagos, el campo Monto muestra placeholder 0 e inicia sin valor para evitar pagos accidentales; debes escribir el monto manualmente.
  • Cada pago tiene fecha, monto, método y notas.
  • Al completar el valor del registro (100% o diferencia mínima por redondeo), el estado pasa automáticamente a Cancelada (Pagada).
  • El sistema no deja registrar un pago que supere el saldo total del registro (con una tolerancia de $5 por redondeo); si el monto ingresado excede lo que falta por pagar, muestra una advertencia y no guarda el pago.
  • El modal de pagos tiene un botón para exportar el comprobante de pago a PDF: genera un documento con los datos de la empresa, el detalle de cada abono registrado (fecha, monto, método y notas) y el resumen de total, pagado y saldo pendiente del registro.

Eliminar pagos

  • Se pueden eliminar pagos individuales desde el modal de pagos en la Cartera.
  • Si los pagos eliminados hacen que el total caiga por debajo del 100%, el estado regresa automáticamente a Pendiente.

Filtros disponibles en Cartera

  • Por tipo: Todos / Por Cobrar / Por Pagar.
  • Por período: Todo / Hoy / 0–30 días / 31–60 días / Más de 60 días / Fecha personalizada.
  • Por estado de pago: Todos / Cancelados / 50–99% / 1–49% / Sin pagar.
  • Por búsqueda de texto: cliente o proveedor.

Balance clientes / proveedores y Libro Mayor

En la pestaña Cartera, arriba de la lista, cambia entre la vista Facturas (documentos por cobrar/pagar), Balance clientes y Balance proveedores.

  • Balance clientes — resumen por cliente; al abrir uno accedes al 📒 Libro Mayor con facturas y devoluciones de ese tercero.
  • Balance proveedores — igual para proveedores, con compras (COMP) en el Libro Mayor.
  • Desde el Libro Mayor puedes registrar abonos, abrir documentos y expandir 🗃️ Archivados (documentos archivados de ese cliente o proveedor, con búsqueda propia).

Archivado automático de documentos

Además del archivado del Historial de movimientos (líneas de stock), FactuNubix archiva por separado los documentos de Cartera — facturas (FAC), compras (COMP) y devoluciones (DEV) — cuando ya no necesitas verlos en el día a día. Ver también 4.4 · Cartera archivada en Ajustes.

Distinto del Historial. El Historial archiva movimientos de inventario; Cartera archiva documentos completos (con sus pagos y totales). Un mismo negocio puede tener movimientos archivados en el Historial y documentos archivados en Cartera de forma independiente.

Qué se archiva y cuándo

  • Estado: solo documentos en Cancelada (Pagada al 100%) o Anulada. Los Pendientes nunca se archivan automáticamente.
  • Pendientes bloqueados: si la fecha ya superó el corte de historial activo, el documento sigue visible en Cartera pero no se puede editar ni anular (los pagos/abonos sí).
  • Antigüedad: misma ventana que el Historial — Meses de historial activo en Ajustes (3, 6, 12 o 24), con unos días de margen respecto al candado de edición.
  • Frecuencia: como máximo una vez por mes calendario, en el primer inicio de la app tras cambiar de mes (misma lógica que la compactación del Historial).
  • Aviso: si archiva documentos, aparece un mensaje como «🗃️ Cartera compactada · N documentos archivados».

Qué cambia después de archivar

  • El documento deja de aparecer en Cartera, en las listas activas de Ventas/Compras/Dev/INGM y en las búsquedas del día a día.
  • No se pierde: pasa a colecciones de archivo (facturas_archive / compras_archive) y sigue contando en Estadísticas.
  • Consulta archivados de dos formas:
    • Documentos → subpestaña correspondiente → expande 🗃️ Archivados al final de la lista (ver Archivados en Documentos).
    • Cartera → Balance clientes o Balance proveedores → abre un tercero → 📒 Libro Mayor🗃️ Archivados (solo documentos de ese tercero; las Anuladas no se listan aquí).
  • Al abrir un archivado (desde Documentos o Libro Mayor), el detalle es solo lectura salvo que uses Desarchivar con el permiso activo en Ajustes.

Desarchivar y re-archivado

En Ajustes → Centro de gestión → Permisos, el interruptor Permitir Desarchivar (sección Cartera archivada) controla si puedes devolver un documento al listado activo. Si lo desarchivas y sigue cumpliendo las condiciones (Cancelada/Anulada + antigüedad), no hay periodo de gracia: volverá a archivarse en la próxima corrida mensual automática.

Pestañas principales

Pestaña Ajustes

1 · Cuenta

  • Inicia o cierra sesión con Google. La sesión sincroniza todos los datos (productos, facturas, compras, movimientos) con Firestore en la nube.
  • Sin sesión iniciada la app funciona solo con la caché local del navegador — los datos no se sincronizan entre dispositivos.

2 · Apariencia

  • Toggle de Modo Oscuro / Claro. El tema se guarda localmente en el navegador.

3 · Acceso de colaboradores

Permite que otras cuentas de Google trabajen sobre los mismos datos que la tuya, sin compartir la contraseña ni crear una cuenta nueva. Se agrega desde Ajustes → Acceso de colaboradores → + Agregar colaborador, indicando el correo de Google del colaborador y su nivel: ✏️ Escritura o 👁 Solo lectura.

Cómo entra el colaborador

  • No hay invitación por correo ni enlace: en cuanto el propietario agrega el correo, si esa persona inicia sesión en la app con esa misma cuenta de Google, ve automáticamente un botón para acceder a la cuenta del propietario (esto funciona por un listener en tiempo real, no por refrescar la página).
  • Al entrar, la app cambia a modo colaborador: aparece una barra superior con el correo del propietario y una insignia del nivel de acceso (✏️ Escritura / 👁 Solo lectura), y todos los datos que se ven y editan pasan a ser los del propietario, no los del colaborador.
  • El colaborador puede volver a su propia cuenta en cualquier momento, y también salir de la colaboración por su cuenta (botón "Salir" en Ajustes) sin que el propietario tenga que revocarlo.

Qué bloquea el nivel Solo lectura

En modo colaborador con nivel 👁 Solo lectura, la interfaz aplica restricciones visuales e impide la interacción en:

  • Botones principales de crear/editar/eliminar (Nueva factura, Nueva compra, editar o eliminar producto).
  • El acceso a Pagos en Cartera queda oculto por completo.
  • Las acciones de Centro de gestión (exportar/restaurar backups, borrar datos) quedan deshabilitadas.
  • Los campos de texto, número y selector quedan en solo lectura en toda la app (los filtros de búsqueda y período siguen funcionando).
  • El cambio de estado de un documento (Pendiente/Cancelada/Anulada) queda bloqueado.
Si el propietario cambia el nivel de un colaborador (de Escritura a Solo lectura o viceversa) mientras esa persona está conectada en modo colaborador, el cambio se aplica al instante con un aviso en pantalla — no hace falta que el colaborador cierre y vuelva a entrar.

Avisos en tiempo real y revocar acceso

  • Si el propietario elimina a un colaborador de la lista mientras esa persona está conectada en modo colaborador, se le saca de la cuenta del propietario de inmediato y ve un aviso 🚫 Acceso revocado.
  • Si el colaborador sale por su cuenta (botón Salir), el propietario recibe un aviso 👋 Colaborador salió en su pantalla la próxima vez que la app esté abierta.
  • Estos avisos aparecen como una tarjeta flotante dispensable (✕ para cerrarla), no como notificación push del sistema operativo — solo se ven si la app está abierta.

Registro de accesos

El propietario ve, debajo de Cuenta, la sección 🕓 Registro de accesos (solo aparece si ya hubo colaboradores): una lista de las últimas veces que cada colaborador entró en modo colaborador, con correo, nivel de acceso y fecha/hora. Guarda hasta 50 entradas (las más antiguas se descartan) y se puede limpiar manualmente con el botón 🗑 del panel.

4 · Centro de gestión (Datos, limpieza y permisos)

Aquí se centralizan backups, restauración, limpieza y permisos operativos de eliminación/anulación.

Zona de Peligro — PIN de seguridad

Entrar a Centro de gestión exige un PIN de 4 dígitos (independiente de la contraseña de Google). La primera vez que alguien abre esta sección, la app pide crear el PIN y elegir una pregunta de seguridad (de una lista fija: primera mascota, ciudad de nacimiento, colegio, película favorita o apodo de infancia) con su respuesta, antes de dejar entrar. Después, cada vez que se quiera abrir Centro de gestión hay que ingresar ese mismo PIN.

  • El PIN y la pregunta de seguridad se guardan en la nube (Firestore, en el documento del usuario) — son los mismos para todos los dispositivos de esa cuenta.
  • 3 intentos fallidos seguidos bloquean el ingreso de PIN temporalmente. El bloqueo empieza en 5 minutos y se duplica en cada nuevo bloqueo (10, 20, 40 minutos) hasta un máximo de 1 hora.
  • El contador de intentos y el tiempo de bloqueo se guardan solo en el navegador/dispositivo actual (no en la nube): un bloqueo en un dispositivo no afecta el acceso desde otro dispositivo con la misma cuenta.
  • La opción "¿Olvidaste tu PIN?" (responder la pregunta de seguridad para crear un PIN nuevo) solo se habilita después de que se haya cumplido un bloqueo de 10 minutos o más — es decir, no está disponible tras el primer bloqueo de 5 minutos, sino a partir del segundo.
  • Responder correctamente la pregunta de seguridad borra el PIN anterior de inmediato y pide crear uno nuevo (con nueva pregunta de seguridad incluida).
⚠️ El botón ⚙️ "Cambiar PIN", visible en la misma pantalla donde se pide el PIN, abre directamente el flujo para crear un PIN nuevo sin pedir el PIN actual. En la práctica, cualquiera con acceso a la pantalla de Ajustes de esa cuenta (por ejemplo un colaborador con permiso de Escritura) puede tocar ese botón y reemplazar el PIN existente por uno propio, sin necesidad de conocer el PIN original.

4.1 · Productos (backup)

Esta sección permite exportar e importar el catálogo completo de productos. Solo afecta productos — no exporta ni importa facturas, compras, movimientos ni clientes.

AcciónQué haceFormato
Exportar backup Descarga todos los productos actuales como archivo Excel: referencia, descripción, marca, categoría, estado, precios, costo, colores y unidades por color (filas agrupables por referencia). Con Precio Venta 1 y 2 activo, la columna de precio pasa a llamarse Precio Venta 1 y se añade la columna Precio Venta 2; con la función desactivada, la columna se llama simplemente Precio Venta. Si abres o editas el archivo en otra aplicación, los códigos que parecen solo números pueden reinterpretarse (p. ej. perder ceros a la izquierda); conviene revisar antes de reimportar. .xlsx — compatible con Excel, Numbers, Google Sheets
Restaurar backup Importa productos desde un archivo. El sistema agrupa filas por referencia (para manejar colores). Compara por código: si el producto ya existe → lo actualiza. Si no existe → lo crea. En ambos casos crea un movimiento tipo NUEVO si el producto no tenía movimientos previos de entrada. La importación reconoce la columna Precio Venta 2 (también pv2, precio2) para actualizar el segundo precio. .xlsx, .xls, .csv (Numbers no soportado directamente — exportar desde Numbers a Excel primero)
⚠️ Restaurar NO borra productos existentes. Es una operación de upsert (actualiza si existe, crea si no). Los productos que no estén en el archivo no se tocan. Si quieres actualizar precios masivamente, exporta, edita el Excel y restaura.
Tip del sistema: exporta el .xlsx, ábrelo en Numbers, Excel o Google Sheets, edítalo y guárdalo como .xlsx o .csv. Al restaurar no necesitas pasos adicionales de conversión.

4.2 · Terceros (Empresa/Tienda y Proveedor/Taller)

Desde Centro de gestión → Terceros puedes exportar y restaurar por separado los clientes (Empresa/Tienda) y los proveedores (Proveedor/Taller), con la misma lógica de formatos que en productos: .xlsx, .xls, .csv y archivos .numbers (vía CSV embebido, igual que en el backup de inventario).

  • La exportación incluye código, empresa, Nombre y Apellido en columnas separadas, documento (NIT o equivalente), teléfono, correo, dirección, ciudad y departamento, términos y descuento global. La importación reconoce distintas variantes de nombre de columna que equivalen a esos campos, y también sigue aceptando una sola columna de nombre completo (o contacto) si el archivo no trae Nombre/Apellido separados.
  • Ciudad y departamento se emparejan automáticamente contra el listado oficial de municipios de Colombia (sin distinguir tildes ni mayúsculas); si no hay coincidencia exacta, se guarda el texto tal como venía en el archivo.
  • Con 🏷️ Usar Precio Venta 1 y 2 activo, la exportación de clientes incluye la columna Lista Precio (valor 1 o 2). Al restaurar, el sistema lee esa columna (también acepta lista_precio, listaprecio, pv, price_list) y la guarda como la lista de precios predeterminada del cliente.
  • Al restaurar, el sistema empareja cada fila por código y luego por NIT con el directorio actual; si no hay coincidencia, crea un tercero nuevo.
  • Apple Numbers a veces trata como número columnas como código, NIT o teléfono y elimina ceros a la izquierda al abrir o guardar un .xlsx exportado desde FactuNubix. Para editar el archivo con menos riesgo de que cambien esos valores, conviene usar otra hoja de cálculo o volver a exportar tras los cambios.
⚠️ Cambio importante: Restaurar Terceros ahora SÍ borra los que no estén en el archivo. A diferencia del backup de Productos (que siempre es upsert puro y nunca elimina), restaurar un archivo de Terceros deja el directorio de clientes o proveedores igual al archivo: cada fila válida crea o actualiza una ficha, y cualquier cliente/proveedor que no aparezca en ninguna fila del archivo se elimina del directorio (esto solo ocurre si al menos una fila del archivo se importó correctamente). El diálogo de confirmación antes de importar avisa de esto, y el mensaje final indica cuántos registros antiguos se quitaron por esta razón. Si solo quieres actualizar algunos terceros sin arriesgarte a borrar el resto, exporta primero el directorio completo, edítalo, y restaura ese mismo archivo completo (no una lista parcial).

4.3 · Historial de Movimientos — Archivado automático

FactuNubix mantiene el Historial liviano archivando automáticamente los movimientos antiguos. El horizonte lo defines en Ajustes → Centro de gestión → Permisos → Meses de historial activo (3, 6, 12 o 24 meses; predeterminado 6). Esa misma opción gobierna el candado de edición, el archivado del Historial y el archivado de documentos de Cartera. El sistema revisa como máximo una vez por mes (la primera vez que se abre la app tras iniciar un mes nuevo).

Los datos no se pierden. Archivar mueve el movimiento de la colección activa a un archivo histórico separado — deja de cargarse en la app día a día (por eso se mantiene rápida y liviana), pero el registro completo sigue existiendo y es consultable en cualquier momento desde el Panel de Administración, incluyendo exportación a PDF.

Cómo funciona

  • Frecuencia: como máximo una vez por mes calendario, disparado por el primer inicio de sesión de cualquier usuario del negocio tras cambiar de mes.
  • Qué se archiva: todos los movimientos (FAC, COMP, DEV, INGM, AJUSTE+/−, NUEVO) con fecha anterior al corte de archivado (ventana de Meses de historial activo, más unos días de margen respecto al candado).
  • Candado vs archivo: el bloqueo de edición aplica en cuanto la fecha supera el corte de historial activo; el archivado físico corre después (mensual y con unos días de margen), así que un documento puede estar bloqueado unos días antes de compactarse.
  • Antes de archivar: el sistema calcula y guarda el saldo de stock resultante de esos movimientos como nuevo saldo inicial de cada producto afectado — el inventario actual nunca cambia por archivar, solo se "congela" el punto de partida.
  • Aviso: al completarse, aparece un mensaje como "🗃️ Historial compactado automáticamente · Se archivó: 1 factura (7 productos)", agrupando los movimientos archivados por factura/compra en vez de listarlos uno por uno.

Candado de edición (historial activo)

Como parte del mismo sistema, cualquier factura, compra, devolución o ingreso manual cuya fecha ya superó Meses de historial activo queda bloqueada: ya no se puede editar, anular ni reactivar. Esto evita que una edición tardía intente modificar un movimiento que ya fue archivado (o está a punto de serlo), lo cual rompería el cálculo de saldo. El bloqueo aplica por fecha (y por periodos ya compactados), esté o no ya archivado ese movimiento en particular. Los pagos/abonos en documentos bloqueados siguen permitidos.

⚠️ A tener en cuenta:
  • El horizonte (3, 6, 12 o 24 meses) se elige en Ajustes; el archivado en sí es automático y no se puede posponer manualmente.
  • Si ampliás los meses después de que un periodo ya se archivó, ese periodo sigue cerrado — no se reabre para edición.
  • Un movimiento archivado ya no aparece en el Historial de la app del día a día, pero sigue siendo consultable en el Panel de Administración.
  • El candado de edición es independiente de si un movimiento específico ya fue archivado o no — aplica por fecha y por la marca de periodos ya compactados.
  • El archivado de documentos de Cartera (FAC/COMP/DEV Cancelados o Anulados) es un proceso separado — ver Pestaña Cartera → Archivado automático de documentos y 4.4 · Cartera archivada abajo.

4.4 · Cartera archivada

En Centro de gestión → Permisos, la sección Cartera archivada controla si los documentos archivados pueden volver a la cartera activa.

Permitir Desarchivar

  • Activado (predeterminado): en Documentos → 🗃️ Archivados o en Cartera → Balance → Libro Mayor → 🗃️ Archivados aparece la acción Desarchivar; el documento vuelve a las colecciones activas y reaparece en Cartera y listas si corresponde.
  • Desactivado: los archivados son solo consulta — puedes abrirlos desde Documentos o Libro Mayor, pero no devolverlos a la operación diaria.
Re-archivado automático. Desarchivar no «congela» el documento: si sigue Cancelado/Anulado y su fecha ya superó el corte de Meses de historial activo, la próxima compactación mensual de Cartera lo volverá a archivar. Para mantenerlo activo a largo plazo tendría que dejar de cumplir esas condiciones (p. ej. no aplicable a Cancelada, que es terminal).

El archivado en sí (qué documentos entran al archivo y cuándo) es siempre automático — este interruptor solo gobierna la desarchivación manual. Detalle operativo en Pestaña Cartera → Archivado automático de documentos.

4.5 · Permisos (eliminación y anulación)

El modal Permisos permite activar o desactivar acciones críticas. Cuando una acción se desactiva, el botón suele ocultarse en la interfaz y además queda bloqueada por validación lógica.

🏷️ Precio Venta 1 y 2 (Dual Precio)

El toggle Usar Precio Venta 1 y 2 activa o desactiva el modo de doble precio en toda la app. Cuando está activo:

  • Inventario: aparece la columna PV2 en la lista de productos; la columna de precio se renombra a PV1. El modal de edición muestra el campo Precio Venta 2.
  • Factura y Devolución: aparece el control Lista de precios: PV1 · PV2 en el editor de ítems. Al agregar productos, el precio se toma del precio activo (PV1 o PV2). El tooltip del buscador muestra ambos precios.
  • Empresa / Tienda (Terceros): aparece el campo Lista de Precios Predeterminada en el modal de edición del cliente. Al seleccionar ese cliente en una factura o devolución, la lista de precios cambia automáticamente.
  • Excel Productos: la columna de precio se llama Precio Venta 1 y se añade la columna Precio Venta 2 al exportar e importar el catálogo.
  • Excel Empresa/Tienda: se añade la columna Lista Precio (1 o 2) al exportar e importar clientes.
  • Filtro de precio en Inventario: aparece la opción PV2 en el selector de precio del filtro avanzado.

Cuando está desactivado, todos los elementos PV2 quedan ocultos y la app opera con un único precio (Precio Venta). Los datos de PV2 ya guardados se conservan y vuelven a mostrarse si se reactiva el toggle.

FAC, COMP y DEV — eliminación del registro: los interruptores de Eliminar Facturas / Compras / Devoluciones solo definen si la acción está autorizada. Aunque estén activos, no se puede eliminar la remisión, la compra ni la devolución mientras el documento no esté en estado Anulada y, si hubo dinero registrado, tampoco mientras existan pagos que deban quitarse antes en Cartera. El botón Eliminar en detalle de compra/devolución solo se muestra cuando ya cumplen esas condiciones (no basta el permiso solo).
INGM — anular y eliminar: son permisos distintos a los de COMP. Anular ingresos manuales (INGM) habilita Anular ingreso en el modal del movimiento. Eliminar ingresos manuales (INGM) habilita Eliminar solo cuando el movimiento ya está Anulada; primero hay que anular, luego (si aplica) eliminar.
PermisoQué controla
Eliminar Facturas (FAC)Muestra el botón Eliminar en el editor de facturas guardadas y permite el borrado solo si la remisión está Anulada y sin pagos.
Eliminar Compras (COMP)Muestra Eliminar en detalle y en el modal de productos de la compra solo con registro Anulada y sin pagos; el clic solo procede si se cumple.
Eliminar Devoluciones (DEV)Igual que COMP, para devoluciones guardadas: detalle y modal; solo con Anulada y sin pagos.
Eliminar ingresos manuales (INGM)Muestra Eliminar en el modal de edición del INGM solo si el movimiento está Anulada; el permiso no sustituye anular antes.
Eliminar productos del inventarioBotón Eliminar en Editar Producto y validación de borrado del producto + sus movimientos.
Anular Compras (COMP)Debe estar activo para poder marcar compras como Anulada donde aplique (p. ej. Cartera / flujos de documento).
Anular devoluciones (DEV)Igual, para DEV.
Anular ingresos manuales (INGM)Habilita Anular ingreso en el modal del movimiento INGM (por defecto permitido; si se desactiva, no podrás anular desde la app).
Anular Facturas (FAC)Controla poder anular remisiones FAC desde Cartera (Estado ▾) o listas (por defecto permitido; si se desactiva, queda bloqueado).
🏷️ Usar Precio Venta 1 y 2Activa el modo de doble precio en toda la app: columna PV2 en inventario, campo Precio Venta 2 en productos, control Lista de precios en Factura/Devolución, campo Lista de Precios en Empresa/Tienda, y columnas adicionales en los Excel de productos y clientes. Cuando está desactivado, la app opera con un único precio en todo el sistema.
📦 Permitir Saldo NegativoActivo: se puede agregar o guardar cualquier cantidad en Facturas/Compras/Devoluciones aunque el stock del producto o color quede en negativo (se muestra en rojo). Desactivado (por defecto): se bloquea agregar o editar una cantidad que supere el stock disponible, como en el resto de reglas de esta sección.

5 · Datos de Empresa

  • Configura nombre comercial, razón social, NIT/RUT, ciudad, teléfono, dirección, código postal, correo electrónico y sitio web.
  • Estos datos aparecen en el encabezado de las facturas al imprimir o exportar a PDF.
  • El campo IVA de empresa (oculto en el formulario pero editable por código) define el IVA por defecto que se aplica a las nuevas facturas. Puede sobreescribirse por factura individual.
  • Los datos de empresa se guardan en Firestore y se sincronizan en todos los dispositivos de la misma cuenta.
Estado

Estado: Pendiente / Cancelada (Pagada) / Anulada

El campo Estado del documento (FAC, COMP, DEV) se gestiona principalmente desde la columna Estado ▾ en Cartera. Los movimientos INGM llevan estado en el propio movimiento (Anular / Eliminar en el modal).

Los tres estados posibles

🟡 Pendiente
Registro activo en seguimiento de pago. Los movimientos impactan el stock. Aparece en Cartera con saldo pendiente (por cobrar o por pagar).
🟢 Cancelada (Pagada)
Registro marcado como pagado. Sin cambio de stock. El saldo en Cartera pasa a cero; si faltaba parte del pago, Cartera lo registra automáticamente. No se puede volver a otro estado.
🔴 Anulada
El registro se invalida operativamente. FAC: elimina los movimientos FAC y recalcula stock (las unidades regresan al inventario). COMP/DEV: elimina los movimientos ligados y revierte el efecto en stock. INGM: el movimiento queda con estado Anulada; el replay ya no lo suma. El documento FAC/COMP/DEV sigue visible en Cartera y en su lista con saldo cero; no desaparece hasta que se elimine (paso separado, ver restricciones abajo).

Anulada — dónde sigue y dónde no aparece el registro

Aplica a FAC, COMP y DEV. Los INGM no tienen documento en Cartera: solo afectan la lista de Ingreso manual y el inventario.

Sección¿Aparece el registro Anulada?
Cartera✓ Sí — el registro queda con saldo y total en cero, pero visible en el listado.
Ventas / Compras (lista y detalle)✓ Sí — el documento sigue en la lista con estado Anulada; anular no borra el documento.
Historial de movimientos✗ No — los movimientos ligados (FAC/COMP/DEV) se eliminan al anular y dejan de aparecer; el stock se recalcula sin ellos. Los INGM anulados sí aparecen en Documentos → Ingreso manual con indicador de anulado, pero ya no cuentan en stock.
Historial / exportación por Tercero✗ No — los registros anulados no se listan en esos historiales ni exportaciones. Para verlos o revertirlos, usa Cartera, Ventas o Compras.
Reactivar (Anulada → Pendiente o Cancelada)✓ El sistema recrea los movimientos, reaparecen en el Historial y el saldo vuelve a Cartera.

Todas las transiciones de estado posibles

DesdeHacia¿Permitido?Efecto en stock
PendienteCancelada✓ Sí (solo vía modal de pagos)Ninguno.
PendienteAnulada✓ Sí (si no hay pagos y el permiso lo permite)FAC, COMP y DEV: elimina los movimientos ligados y recalcula stock (reversión del impacto en inventario).
CanceladaPendiente🔒 NoNo se puede pasar de Cancelada (Pagada) a otro estado.
CanceladaAnulada🔒 NoNo se puede pasar de Cancelada (Pagada) a otro estado.
AnuladaPendiente✓ SíFAC: recrea movimientos FAC y vuelve a descontar stock. COMP/DEV: recrea movimientos y vuelve a sumar/restar según tipo.
AnuladaCancelada✓ Sí (solo vía modal de pagos)Igual que Anulada → Pendiente en stock, más registro automático de pago al completar el pago.
Importante: en la implementación actual, Cancelada (Pagada) no aparece en el menú Estado ▾ hasta que el registro esté pagado al 100% desde el modal de pagos (Pago Factura / abonos en Cartera). Mientras tanto solo verás Pendiente y Anulada. Además, Cancelada (Pagada) → otros estados permanece bloqueado.

Restricciones — cuándo NO se puede cambiar el estado

RestricciónDetalle
No puedes anular con pagosSi un registro FAC/COMP/DEV tiene pagos registrados, la opción Anulada no aparece en el menú. Primero elimina los pagos desde Cartera.
Cancelada (Pagada) es terminalNo se puede pasar de Cancelada a ningún otro estado. Además, Cancelada no aparece en el menú Estado ▾ — llega automáticamente al completar el pago en el modal de pagos.
Eliminar requiere Anulada + sin pagos + permisoEl flujo es: anular → quitar pagos si los hubo → entonces eliminar. El permiso en Ajustes habilita el botón, pero no sustituye las otras condiciones.
Términos vencidos — campos financieros bloqueadosCon términos vencidos (15/30/60 días), cantidades, precios, descuentos e IVA quedan en solo lectura. El estado sí se puede seguir cambiando.
El cambio entre Pendiente y Anulada se hace desde la columna Estado ▾ en Cartera (menú desplegable). El editor de factura/compra muestra el estado en solo lectura. Cancelada (Pagada) no se elige en ese menú: llega al completar el pago en el modal de pagos.
Términos y Vencimiento

Términos de Pago y Vencimiento

Cómo funcionan los términos

Los términos de pago (15 días, 30 días, 60 días, Contado, etc.) se asignan a las Facturas y a las Compras. Determinan la fecha de vencimiento del registro.

Términos¿Expira?Efecto al vencer
Contado No Nunca queda en modo solo lectura por términos.
15 días, 30 días, 60 días Cuando la fecha actual supera la fecha de vencimiento, los campos financieros quedan en solo lectura.

¿Qué queda de solo lectura al vencer los términos?

  • Cantidades de productos (en FAC y COMP).
  • Precios e IVA.
  • Descuentos.
  • Agregar o eliminar ítems, en FAC y en COMP.

¿Qué sí se puede hacer con términos vencidos?

  • Cambiar el estado entre Pendiente y Anulada desde Cartera (Estado ▾); registrar pagos con Pago Factura o abonos desde Cartera o desde el Libro Mayor (Cartera → Balance clientes/proveedores). Cancelada (Pagada) llega sola al completar el pago.
  • Editar notas (en Facturas; las Compras no tienen campo de notas propio, ver Compras).
  • Editar fecha, hora y términos de pago (en Compras).
  • Registrar pagos en Cartera.
  • Imprimir / exportar PDF.
La fecha de vencimiento se calcula automáticamente sumando los días del término a la fecha del registro. Se muestra en la Cartera como indicador visual.
Compras

Compras (COMP)

Dónde registrarlas: el flujo principal es Documentos → Compras → Nueva compra. Ahí verás solo registros COMP; la lista admite búsqueda y período. También puedes abrir una entrada genérica desde un producto en Inventario (tipo editable, por defecto COMP).

Capacidades

  • Registrar una compra a un proveedor con número correlativo, fecha, hora, proveedor, bodega, términos de pago e IVA global.
  • Agregar múltiples productos a la compra desde el modal de detalle.
  • Cambiar el estado entre Pendiente y Anulada desde la columna Estado ▾ en Cartera; Cancelada (Pagada) se alcanza al completar el pago en el modal de pagos (Pago Factura / abonos).
  • Registrar pagos parciales o totales desde la Cartera.
  • Ver los productos de la compra con su impacto de stock (saldo antes y después).
  • Exportar la compra a PDF.

Efecto en inventario

Cada producto en una compra genera un movimiento tipo COMP que suma unidades al inventario.

Editar una compra

  • Se abre el modal de detalle haciendo clic sobre la compra.
  • Campos editables siempre: fecha, hora y términos de pago. (A diferencia de Facturas, una Compra no tiene un campo de notas propio.)
  • Solo lectura si: la compra está marcada como Cancelada (Pagada), o si los términos de pago han vencido. En ese caso los campos de cantidad, precio, IVA, descuento global y agregar/eliminar productos son de solo lectura.
  • Cuando los términos vencieron pero la compra no es Cancelada, solo puedes editar fecha, hora y términos de pago — no los campos financieros. El botón ✏️ Editar sigue disponible para esto; solo desaparece por completo cuando la compra está Cancelada (Pagada).

Protección al reducir cantidades ya vendidas

Al editar los productos de una compra (o devolución) que ya tiene movimiento de salida posterior, el sistema calcula cuántas unidades de esa línea ya se vendieron (comparando la cantidad original contra el stock actual del producto/color) y evita que la reduzcas por debajo de eso:

  • Cada línea con unidades ya vendidas muestra una etiqueta roja 📦 vendidas: N junto al producto.
  • El campo de cantidad no deja escribir un valor menor al mínimo permitido — si lo intentas, el campo vuelve automáticamente al mínimo y aparece el aviso ⚠️ mín: N. Puedes subir la cantidad o cambiar el precio sin restricción.
  • El botón para eliminar esa línea del detalle de la compra se reemplaza por un candado 🔒 mientras tenga unidades vendidas — no se puede quitar del todo esa línea sin antes anular las ventas que consumieron ese stock.
  • Si no hay unidades vendidas de esa línea (todo el stock que entró sigue disponible), no aparece ninguna restricción y se puede editar o eliminar libremente.
Esta protección evita que, al corregir una compra o devolución antigua, termines con stock negativo por accidente en un producto que ya se despachó en otra factura. Si necesitas reducir igualmente por debajo de lo vendido, primero tendrías que revertir esas ventas (por ejemplo, anulando la factura correspondiente) para liberar stock.
🔒 No se puede editar cantidades, precios ni IVA si:
  • El estado es Cancelada.
  • Los términos de pago han vencido.

Eliminar una compra

Borrar el registro COMP se hace desde el detalle de la compra o desde el modal Productos de la compra, solo cuando se cumplen todas estas condiciones:
  • En Ajustes → Centro de gestión → Permisos, Eliminar Compras (COMP) está activado (si está desactivado, no aparece el botón y la acción queda bloqueada).
  • El registro está en estado Anulada (primero debes anularlo desde Cartera si aplica).
  • No hay pagos registrados en ese registro; si hubo abonos, hay que eliminarlos antes en Cartera.
  • El botón Eliminar en el detalle y en productos solo se muestra cuando ya se cumplen Anulada y sin pagos; no aparece deshabilitado como atajo.

Esto es independiente de anular una compra: anular conserva el documento y revierte el stock vía movimientos; eliminar borra el documento y los movimientos vinculados que aún existan tras confirmación. Si ya estaba anulada, al borrar el stock no debería variar.

Estado Anulada en Compras — efecto en stock

Marcar una COMP como Anulada elimina los movimientos COMP ligados a esa compra, recalcula el stock (revirtiendo la entrada de mercancía) y mantiene el documento en compras con estado Anulada (sigue consultándose desde Compras y Cartera). Si luego se reactiva (de Anulada a Pendiente), el sistema vuelve a crear los movimientos desde las líneas de la compra y el stock suma de nuevo.

Devoluciones

Devoluciones (DEV)

Dónde registrarlas: Documentos → Devoluciones → Nueva devolución. La lista muestra solo DEV, con búsqueda y filtro por período.

Qué son las devoluciones (DEV)

Definición en FactuNubix: DEV es la devolución de venta: el cliente (empresa / tienda del directorio de clientes) devuelve mercancía que habías vendido. Esas unidades vuelven al inventario (entrada, igual que COMP o INGM). La factura (FAC) relacionada es opcional: si la seleccionas, el desplegable se filtra por cliente (y, si no hay coincidencias exactas, ofrece facturas recientes). Si la venta ya no tiene FAC en el sistema, deja el campo sin vincular y registra los productos desde el catálogo. Cuando hay FAC, el vínculo queda en el movimiento y en el documento.

Orden en el modal: empresa/tienda, nombre completo y, a continuación, Factura (FAC) relacionada (opcional). Con una FAC elegida, al buscar productos o usar Líneas FAC solo aparecen los artículos que constan en esa factura (coincidencia por productoId en la línea de la FAC o por referencia igual al código del producto en catálogo). Sin FAC, el buscador usa el catálogo completo.

Efecto en inventario

Cada unidad en un DEV suma al saldo del producto. En el historial aparece como entrada (+).

Editar una devolución

  • Solo se pueden editar movimientos de tipo COMP, INGM y DEV. Los movimientos FAC, AJUSTE±, NUEVO, etc. no son editables directamente en el historial.
  • El acceso a edición es desde el Historial de Movimientos haciendo clic en el registro correspondiente.
  • Al editar las cantidades del detalle, aplica la misma protección contra reducir unidades ya vendidas que en Compras: una línea con unidades ya despachadas en otra factura muestra 📦 vendidas: N y no se puede bajar de ese mínimo ni eliminar sin más.

Eliminar una devolución

Dos contextos distintos:

  • Registro DEV guardado (documento listado en Documentos → Devoluciones): para borrarlo por completo aplican las mismas reglas que en COMP: permiso Eliminar Devoluciones (DEV) en Ajustes → Permisos, estado Anulada y sin pagos. El botón Eliminar en detalle y en el modal de productos solo se muestra cuando ya cumple esas condiciones. Si ya estaba anulada, al borrar el stock no debería variar.
  • Línea suelta en el Historial de movimientos: puedes eliminar un movimiento DEV individual desde el Historial (recalcula stock); eso no borra el documento DEV en Documentos → Devoluciones ni equivale a eliminar la devolución desde su detalle o modal.
🔒 No se puede marcar como Anulada una DEV si tiene pagos registrados asociados. Hay que eliminar primero los pagos desde Cartera.

Estado Anulada en DEV

Igual que en COMP: marcar Anulada elimina los movimientos DEV ligados, recalcula stock y conserva el registro (colección de compras / devoluciones según el flujo) con estado Anulada; al reactivar, se recrean los movimientos.

Ingresos Manuales

Ingreso Manual (INGM)

Qué es

El Ingreso Manual es una entrada directa al inventario, útil para registrar stock inicial o entradas que no provienen de una compra formal con número COMP. El tipo de movimiento es INGM.

Dónde registrarlo: Documentos → Ingreso manual → Nuevo ingreso manual. En esa subpestaña verás el listado de movimientos INGM (búsqueda y filtro por período); al tocar una fila puedes editar el movimiento. También puedes elegir INGM en el modal de entrada si abres la entrada desde Inventario con el tipo visible.

Qué puedes hacer

  • Registrar la entrada de unidades de un producto con fecha, proveedor/taller, precio, cantidad y datos de contacto (sin número de compra ni documento COMP en cartera). Los nuevos INGM quedan en estado Activo (cuentan en inventario); no usan el sentido de «Pendiente de pago» de compras o facturas.
  • Editar el movimiento desde la lista de Ingreso manual, desde el Historial de Movimientos, o abriendo el modal de entrada.
  • Anular ingreso: en el modal de edición, con permiso Anular ingresos manuales (INGM) en Ajustes → Permisos, marca el movimiento como Anulada y deja de sumar al inventario (recalcula stock). El modal se cierra al confirmar.
  • Reactivar ingreso: si el INGM está Anulada, el mismo permiso de anulación muestra Reactivar ingreso: vuelve a contar en stock. El estado detallado se ve en Documentos → Ingreso manual y en el modal; en el Historial de movimientos la columna Estado muestra para INGM (igual que ajustes y otros movimientos sin estado de cartera).
  • Eliminar: con permiso Eliminar ingresos manuales (INGM), el botón solo se muestra si el movimiento ya está Anulada; borra la línea y vuelve a recalcular stock. Sin anular antes, no se elimina.

Restricciones

Los movimientos INGM son uno de los tres tipos editables directamente en el Historial (junto con COMP y DEV). Los movimientos FAC, NUEVO, AJUSTE+ y AJUSTE- no son editables desde el historial.
INGM ya anulado: al confirmar Anular ingreso el estado queda guardado y el modal se cierra. Si abres de nuevo un INGM en Anulada, usa Reactivar ingreso para volver a Activo o Guardar cambios solo cierra el formulario sin cambiar datos; para quitarla del historial usa Eliminar si el permiso lo permite.
Ajustes de Inventario

Ajustes de Inventario (AJUSTE+ / AJUSTE−)

Cuándo se crean automáticamente

Cuando editas un producto en Inventario y cambias su campo de unidades directamente, el sistema crea un movimiento de ajuste:

  • AJUSTE+ si el nuevo valor es mayor al anterior (diferencia positiva).
  • AJUSTE− si el nuevo valor es menor al anterior (diferencia negativa).

Limitaciones

  • Los movimientos AJUSTE+ y AJUSTE− no son editables desde el Historial.
  • Sí se pueden eliminar desde el Historial, y al hacerlo el stock se recalcula.
  • El saldo mostrado en la lista de inventario se calcula siempre en tiempo real desde el historial de movimientos; no se guarda como valor fijo en el producto.
Estadísticas

Estadísticas (pestaña propia en la barra superior)

Cómo acceder

Abre la pestaña Estadísticas desde el icono 📊 en la barra superior (no está dentro del Historial). Usa movimientos del periodo elegido y, cuando hace falta, también movimientos archivados del Historial (carga bajo demanda).

Controles globales

  • Período: 7 Días / 1 Mes / 3 Meses / 6 Meses / 1 Año / Todo.
  • Vista: desplegable agrupado en cuatro secciones: Dinero y periodo, Productos e inventario, Clientes y cartera, Proveedores.
  • Agrupar (Por marca / Por producto): en vistas de productos donde aplique.

KPIs superiores

Siempre ves cuatro indicadores: Ventas ($), Compras ($), Neto y Movimientos. El conteo de movimientos cambia según la vista (ej. solo FAC, solo FAC del periodo, FAC vencidas, etc.) para que coincida con el gráfico.

Vistas por categoría

Grupo / VistaQué muestra
Dinero y periodo
Ventas vs Compras$ de ventas y compras por día o mes en el periodo.
Resumen MovimientosTabla FAC / COMP / DEV / INGM: cantidad de documentos y total $ (sin listado línea a línea).
Comparación de PeríodosPeriodo actual vs el anterior (ventas, compras, neto). Requiere periodo ≠ Todo.
Tendencia / Caída (%)Ventas por tramo; barras verdes/rojas vs día anterior; media móvil y proyección.
Facturas Cobradas vs VencidasFacturas emitidas en el periodo: cuántas cobradas, vencidas o pendientes al día (conteo + $).
Ticket Promedio y VolumenNº de facturas y ticket promedio ($/factura) por tramo.
Productos e inventario
Top Productos ($) / (stock uds)Más vendidos en $, o mayor stock actual (uds).
Rentabilidad ($)Utilidad en pesos (ventas − costo × uds).
Margen Bruto (%)Mismo dato expresado como porcentaje de margen.
Pareto 80/20, Tendencia Top 5, Rotación, Stock por Marca, Sin Ventas ni Compras, Ciclo de ReposiciónConcentración de ventas, evolución de top productos, uds vendidas ÷ stock, stock por marca, referencias inactivas, días entre compras COMP.
Clientes y cartera
Top Clientes (ventas)Mayor facturación FAC en el periodo.
Saldo Pendiente por ClienteCartera abierta hoy (no usa el filtro de periodo).
Cartera Vencida (antigüedad)Facturas con saldo clasificadas por días vencidos (7 d, 1 mes, 3 meses, 1 año…).
Clientes en RiesgoSin compras en el periodo (o +30 días si periodo = Todo).
Ventas por Día de SemanaDistribución Lun–Dom.
Proveedores
Top ProveedoresMayor valor de movimientos COMP y DEV asociados a proveedor en el periodo.

Limitaciones y reglas

⚠️ Periodo: Comparación de Períodos y Tendencia / Caída (%) requieren un periodo concreto (no «Todo»). Saldo Pendiente y Cartera Vencida muestran la cartera actual e ignoran el filtro de periodo.
Se excluyen documentos y movimientos Anulada. Las ventas/compras cuentan por total del documento (FAC/COMP/DEV), no por cobros parciales — para cobros usa las vistas de cartera.
Vistas con botones Por marca / Por producto: Top ($ y uds), Rentabilidad, Margen %, Tendencia Top 5, Rotación, Pareto, Reposición, Sin movimiento.

Guía generada automáticamente desde el análisis del código fuente de FactuNubix