🔐
Selección de Base de Datos
Ingresa tu PIN de seguridad para ver las conexiones disponibles
🔌 Selecciona la Base de Datos
Elige a cuál BD conectarte antes de ingresar al sistema
🔐
Autorización de acceso
Verificando acceso…
Expira en: 15:00
El administrador debe autorizar este dispositivo para continuar.
Política de Privacidad y Uso de Datos
Ver Política de Privacidad y Uso de Datos

# Kognit

Ingrese sus credenciales para continuar

⏳
Verificando conexión... Conectando con el servidor de base de datos
Seleccionar Usuario
Código de Usuario
Contraseña
Usuario o contraseña incorrectos
Leer Política de Privacidad y Datos
🔐
Esperando aprobación
El administrador debe autorizar tu acceso.
Por favor espera…
Expira en: 10:00
🔐
Solicitudes de Acceso
Cargando…
Kognit 0
●
U
Usuario
Administración de Usuarios

Código | Nombre | Email | Rol | Permisos | Vendedor | Correo | Estado | Creado | Acciones
--- | --- | --- | --- | --- | --- | --- | --- | --- | ---
Cargando...

➕ Nuevo Usuario
Código *
Rol *
Nombre completo *
Email
Contraseña *
Usuario activo
Permisos adicionales de acceso
Los roles Admin y SuperAdmin tienen acceso completo automáticamente.
📦 Inventario 📈 Ventas por período 📊 Informes 🚚 Pantalla de despachos 🧾 Planilla de caja ⚙️ Parámetros 🏢 Mi Empresa ✏️ Cambiar Vendedor en Cotización 🧾 Facturas Emitidas 📴 Nota de venta (local / sin conexión)
Restricciones de datos sensibles (marcar = ocultar / limitar)
🙈 Ocultar utilidad en cotizaciones 🙈 Ocultar costo en inventario 🙈 Ocultar costo en reposición 🙈 Ocultar pestaña reposición 🙈 Ocultar Est. Anuales y Proyección 🔒 Solo sus comisiones 🔒 Solo sus ventas (totales) 🙈 Ocultar Libro de Ventas 🙈 Ocultar Libro de Compras 🙈 Ocultar Dashboard Compras 🙈 Ocultar Ventas SII

Marcar = restringir. 🙈 ocultan el dato al vendedor. 🔒 limitan las cifras a su vendedor asignado. Sin marcar nada, el vendedor ve todo.

Vendedor(es) asociado(s) — filtra historial y cotizaciones
Vendedor 1
Vendedor 2 (opcional)

Si se asigna un vendedor, el usuario solo verá cotizaciones y facturas de ese código al ingresar.

Correo para envío de cotizaciones
Cuenta global
Usa el SMTP configurado en Conexiones
Cuenta personal
El email sale desde su propio correo
Correo del usuario *
Contraseña de aplicación *
Dejar vacío para no cambiar al editar
Servidor SMTP
Puerto
TLS / STARTTLS 587 SSL directo 465
Preset:
Bienvenido 👋
Kognit
Cotizaciones del mes
—
Ventas netas del mes
—
Pendientes facturar
—
Clientes del mes
—
Proyección de ventas —
Proyección del mes
—
Venta a la fecha vs
—
Proyección vs completo
—
Nueva Cotización
Crear una cotización para un cliente
Más opciones
📋 Mis cotizaciones activas

| N° | Fecha | Cliente | Total | Vence
--- | --- | --- | --- | --- | ---
Cargando…

🔒 Solicitudes de cierre pendientes
⏳ Cotizaciones por Aprobar
Datos del Cliente
RUT Cliente
Razón Social
🏢 Sucursal Este cliente tiene sucursales
Giro
Dirección
Ciudad
Comuna
Región
Contacto
Email
Teléfono
Celular
Puede editar contacto, email, teléfono y celular
Condiciones de la Cotización
N° Cotización
COT-2026-
Vacío = automático. Solo editar el sufijo numérico.
Fecha
Validez (días)
Fecha de despacho
Tipo Cotización
Condición de Pago
Lista Precios
Vendedor
Orden de Compra
Modo de Entrega
Transportista
Observaciones
Productos
Buscar producto (código o descripción)
📋
Borrador sin guardar encontrado
—

# | Código | Descripción | U.M. | Cantidad | Stock | P. Unitario | Dto.1% | Dto.2% | Subtotal | 📍 | ✕
--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
Busque y agregue productos a la cotización
Subtotal Neto: | $0 |

Dto. Global (%)
Recargo Total
Subtotal Neto $0
Descuento (0%) -$0
Neto Final $0
IVA (19%) $0
Recargo (0%) +$0
TOTAL $0
💾 Guardar Cotización: se guarda en el sistema web (módulo de cotizaciones).
🗄️ Guardar en ERP: se graba directamente en el ERP / sistema antiguo, con su numeración correlativa, modo de entrega y transportista.
📴 Nota de venta (local): se guarda en este equipo si no hay internet; queda en la bandeja "Pendientes de sincronizar" y se envía al ERP al recuperar conexión.
Historial de Cotizaciones
Desde
Hasta
Buscar
Estado
Origen
Vendedor
Filtro activo
Cada
en 60s

N° Cotización ▼ | Fecha | Hora | RUT | Cliente | Ciudad | Vendedor | Total | Estado | Despacho | Origen | Admin-V | Acciones
--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
Cargando...

Desde Hasta
Activas
—
$0
Facturadas
—
$0
Rechazadas
—
$0
Vencidas
—
$0
Productos más cotizados nuevo + legado

Descripción | Veces | Unidades | Monto
--- | --- | --- | ---
Cargando...

Clientes con más cotizaciones nuevo + legado

Cliente | Total | Fact. | Monto
--- | --- | --- | ---
Cargando...

Cotizan y no compran nuevo + legado

Cliente | Cot. | Monto | Última
--- | --- | --- | ---
Cargando...

Por vendedor nuevo + legado

Vendedor | Cot. | Fact. | % Fact. | Monto facturado | Monto pendiente x facturar
--- | --- | --- | --- | --- | ---
Cargando...

Fuentes: N = sistema nuevo L = sistema legado nuevo + legado = datos combinados
Desde Hasta
Con descuentos Heredar % COM de raíz cuando directa = 0%
Neto Bruto: Suma de subtotales de línea (`FADSUBTOT` facturas + `BOLDSUBT` boletas) sin aplicar ningún descuento.
Descuento: Se aplican los descuentos por línea (`FADDESC`, `FADDESC2`) y luego un ajuste proporcional por el descuento de cabecera: cada línea se escala por `FANETO / suma_netos` para que el total cuadre con el neto real del documento.
Neto Final: Resultado tras aplicar todos los descuentos anteriores. Equivale al `FANETO`/`BOLNETO` del documento distribuido proporcionalmente por línea.
Neto s/Comisión: Neto Final menos la Comisión Total calculada para el período.

💰 ¿Cómo se calcula la Comisión $ de cada vendedor? Se resuelve en este orden:
1. Si el vendedor tiene una comisión especial ⭐ para esa familia (configurada en Parámetros → Familias), se usa esa.
2. Si no, se usa la comisión por defecto de la familia (el % o $/unidad que tiene la familia).
3. Si la familia tiene 0% y el toggle "Heredar % de raíz" está activo, se usa la comisión de la familia raíz.
Luego, según el tipo: si es % → `Neto Final × %`; si es $ fijo por unidad → `Cantidad vendida × $/u`.
La comisión de cada subfamilia es la suma de las comisiones de sus vendedores. El ⭐ marca dónde aplica una comisión especial.
Desde
Hasta
Vendedor
Buscar
Descontar Notas de Crédito
Facturas
—
Neto Total
—
IVA
—
Total c/IVA
—

N° Factura | Fecha | RUT | Nombre | Vendedor | Neto | IVA | Total |
--- | --- | --- | --- | --- | --- | --- | --- | ---
Seleccione un período y haga clic en Actualizar

Desde
Hasta
Vendedor
Desde
Hasta
Vendedor
Desde
Hasta
Buscar (nombre / RUT / N°)
Pago
Período
Buscar (proveedor / RUT / folio / análisis / cuenta)
Autoguardar
Mes de referencia
Vista del año
Período
Buscar (cliente / RUT / folio)
Documentos de venta tal como están en el SII (no es el módulo Facturas del ERP)
📦 Inventario de Productos
Buscar
Familia
Estado
Bodega
Vend. hasta
al Solo c/ventas

Código | Descripción ▲ | U.M. | Precio 1 | Precio 2 | Costo | Stock | Bod.1 | Bod.2 | Bod.3 | Estado | Vend.hasta hoy
--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
Cargando...

🛒 Sugerencia de Reposición Basado en ventas históricas vs stock actual
Historial
Meta stock
Tipos de venta
Cargando...
Mostrar
Proveedor
Mostrar solo compras de este proveedor
🌍 Con importaciones Mostrar proveedores
Tipo
Calidad
Espesor (mm)
–
Largo (mt)
–
Buscar producto
Familia
⚙ Filtros avanzados
Texto (varias palabras) Busca todas las palabras en código, descripción, categoría y proveedor.
Proveedor contiene
Stock
–
Cobertura (meses)
–
Urgencia
🔴 Urgente 🟡 Pronto 🟢 OK ⚪ Sin mov.
Solo con "A comprar" > 0
Filtros activos: Familia:
Producto: ""
Urgentes
—
stock < 1 mes
Pronto
—
entre 1 y 3 meses
Stock OK
—
más de 3 meses
Sin movimiento
—
sin ventas en período
0 producto(s) seleccionado(s)
📌 Fijar encabezado al desplazar

| Código | Descripción ▲ | Stock | Vta/mes | Cobertura | A comprar | Estado | Último mov.
--- | --- | --- | --- | --- | --- | --- | --- | ---
Presiona "Calcular" para generar el informe de reposición

Cálculo: 🔴 Urgente = <1 mes de stock 🟡 Pronto = 1 a 3 meses 🟢 OK = +3 meses "A comprar" = (vta/mes × meta) − stock actual
📈 Kardex de Producto
Buscar producto
Desde
Hasta
Tipo mov.
📦 ×
Stock total
—
Costo producto
—
geitems_mae.ITCOSTO
Bod. 1
—
unidades
Bod. 2
—
unidades
Vendido período
—

Fecha | Tipo | N° Doc. | Cliente | Cantidad | Costo | Stock tras mov. | Bod.1 | Bod.2
--- | --- | --- | --- | --- | --- | --- | --- | ---
Busca un producto para ver su kardex

Sin movimientos en el período

Lista de Productos

Cargando productos...

Total vendido
—
Clientes
—

Cargando...

🔁 Cambiar estado de cotización (superadmin)

Busca por número, revisa el estado actual y cámbialo. Todo cambio queda registrado (usuario, fecha/hora, IP y equipo).

N° de documento
·
Vendedor: · Estado actual:
Nuevo estado
Motivo (obligatorio)
📜 Historial de cambios
🏷 Cambiar tipo de documento (administrador)

Busca por número y cambia el tipo de documento (Nota de Venta, Ticket, Cotización, etc.). El detalle se ajusta automáticamente para no romper el ERP. Todo cambio queda registrado (usuario, fecha/hora, IP y equipo).

N° de documento
·
Vendedor: · Tipo actual:
Nuevo tipo
Motivo (obligatorio)
📜 Historial de cambios
🏷 Categorías de productos

Clasifica los productos para filtrar la reposición por Tipo (según la familia) y por Calidad / Espesor / Largo (detectados en la descripción). No modifica el ERP.

Activar clasificación por categorías en Reposición (si se desactiva, no aparecen los filtros Tipo/Calidad/Espesor/Largo)
Tipos (separados por coma)
Calidades (de mayor a menor, separadas por coma) El orden importa: 316L antes que 316 para que detecte bien.
Patrón Espesor (regex, grupo 1 = número)
Patrón Largo (regex, grupo 1 = número)
🗂 Tipo por familia
📦 Inventario de Productos
Buscar
Familia
Estado
Bodega
Ventas período
al Solo c/ventas

Código | Descripción ▲ | U.M. | Precio 1 | Precio 2 | Costo | Stock | Vendidos | Bod.1 | Bod.2 | Bod.3 | Familia | Estado
--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
Cargando...

⚙ Días de validez de cotización
Días de validez por defecto

Si una cotización supera este plazo sin cambio de estado, recibirás un aviso para cerrarla.

🔐 Política de Privacidad y Conexión

Configura el texto de la política de privacidad y uso de datos de conexión que los usuarios deberán aceptar.

📝 Nombre del documento comercial

Cambia cómo se denomina el documento en el menú, historial, PDF y correos.

Singular (ej. Cotización)
Plural (ej. Cotizaciones)
Vista previa
Menú: Nueva Cotización Historial: Historial de Cotizaciones PDF: COTIZACIÓN N° 12345 Email: Asunto: Cotización #12345 — Empresa
📅 Base de fecha de los informes

Define qué fecha se usa para clasificar facturas, boletas y notas de crédito en todos los informes (Ventas, Comisiones, Estadísticas, Facturas, Despachos).

Calcular informes por
📅 Fecha de emisión: usa la fecha legal del documento (FAFEC/BOLFEC/NCFEC). Es lo contablemente correcto: si una factura se crea hoy con fecha del mes pasado, cuenta en el mes pasado.
🕒 Fecha de creación: usa la fecha y hora en que se digitó el documento en el sistema (comportamiento anterior).
Nota: el mapa de calor por hora del día siempre usa la hora de creación, porque la fecha de emisión no tiene hora.
👥 Clientes
Buscar
Vendedor

RUT | Nombre | Ciudad | Email | Lista P. | Vendedor | Acciones
--- | --- | --- | --- | --- | --- | ---
Cargando...

🤝 Vendedores

Código | Nombre | Celular | Teléfono | Estado | Acciones
--- | --- | --- | --- | --- | ---
Cargando...

🗂 Familias de Productos

Árbol jerárquico — 5 niveles según código. La columna Comisión se usa para calcular el sueldo de vendedores.

Asignación masiva de comisión
Tipo
% Comisión $ Fijo por unidad
Porcentaje %
$ por unidad
🎨 Paleta de colores del sistema
Datos de la Empresa
Razón Social / Nombre
RUT Empresa
Teléfono
Dirección
Email
Logo de la empresa
Selecciona el archivo desde tu equipo; se sube al servidor automáticamente (máx. 5 MB). Ya no necesitas escribir la ruta.
Vista previa logo
Sin logo cargado

Los datos de la empresa se leen del ERP (tabla `geparam`) según la base activa. Aquí solo se administra el logo.

📤 Subir PDF de cotizaciones al hosting

Al guardar una cotización en el ERP, su PDF se sube automáticamente al hosting (por base de datos). El nombre del archivo es el N° de la cotización.

Servidor FTP (host)
Puerto
FTPS (TLS)
Usuario FTP
Clave FTP
Carpeta destino
Modo pasivo
URL de la carpeta en el hosting La misma URL pública donde quedarán los PDFs. cPanel soporta WebDAV en esta misma dirección (no necesita puerto especial).
Usuario cPanel
Clave cPanel
Clave Usa tu contraseña de cPanel o una cuenta FTP/WebDAV creada en cPanel.
Cómo funciona:
1. Configura la URL y el token de seguridad.
2. Haz clic en "Guardar".
3. Haz clic en "⬇ Descargar upload.php" — descarga el script con tu token ya incluido.
4. Sube ese archivo a la carpeta `cotclientes` de tu hosting (vía cPanel → Administrador de archivos).
5. Haz clic en "🔌 Probar conexión" para confirmar que funciona.
URL del script en el hosting URL completa del archivo upload.php que subirás al hosting.
Token de seguridad (clave secreta) Define cualquier clave. Solo tu servidor y el script la conocen. Se guarda cifrada.
Subida automática activa
🔒 Proteger PDF con clave (últimos 4 dígitos RUT)
URL pública del PDF (para el enlace de WhatsApp)
Administración de Usuarios

Código | Nombre | Email | Rol | Permisos | Vendedor | Estado | Creado | Acciones
--- | --- | --- | --- | --- | --- | --- | --- | ---
Cargando...

Estado de versión del sistema
Versión instalada
—
Última versión
—
Novedades
Historial de actualizaciones
v1.0.542 14 junio 2026

- Fix: 403 al guardar la URL de actualizaciones en Conexiones → ⬆ Actualizaciones. El middleware marcaba `/api/version/*` como ruta pública (sin autenticación), impidiendo que el token llegara al endpoint de guardado. Corregido a solo `/api/version` (exacto).

v1.0.541 14 junio 2026

- Registro de Compras y Ventas del SII (RCV): descarga del RCV con login automático (clave del SII cifrada) o cookie manual. Botón 📑 RCV SII baja compras y ventas del año a Excel.
- Libro de Compras (nueva pestaña 📒): grilla mensual estilo planilla contable con columnas editables Cuenta / Análisis / Fecha pago / Pago (con colores), centralización por cuenta, IVA CF y total proveedores. Exporta a Excel y PDF, y se envía por Email y WhatsApp.
- Cuenta por proveedor: la cuenta queda fija por proveedor (predeterminada, editable); 📌 para actualizar el predeterminado. Autoguardado opcional + aviso de cambios sin guardar.
- Buscar por proveedor: facturas de un proveedor en un mes o rango de meses, con asignación de cuenta a una o varias filas.
- Dashboard Compras (📊): KPIs, comparativos (mes/año anterior), distribución por cuenta, top proveedores, formas de pago, evolución mensual/trimestral/semestral/anual y comparación de años.
- Ventas SII (📗): documentos de venta del RCV en pestaña aparte, sin mezclar con el módulo Facturas del ERP.
- Permisos por usuario: opción de ocultar a usuarios específicos las pestañas Libro de Ventas, Libro de Compras, Dashboard Compras y Ventas SII.
- Despachos: se excluyen los "retira cliente" del análisis de despachos (son retiros, no despachos).
- Rendimiento: compresión GZip en el servidor (respuestas >1KB), acelera el acceso directo por localhost/127.0.0.1.
- Libro de Ventas: interruptor "Descontar NC" para ver Neto/IVA/Total netos de notas de crédito (o en bruto, facturas+boletas) en pantalla.
- Libro de Compras: tarjetas de KPIs arriba de la grilla (Total Compras con comparativos, IVA Crédito Fiscal, Documentos, Proveedores).
- Conexiones → Multi-empresa (guía): nueva pestaña con el paso a paso para atender varias empresas en el mismo equipo (varias BD en una instancia, o un servicio por empresa con GW_DATA_DIR + Caddy).
- Instaladores (Windows): INSTALAR.bat / ACTUALIZAR.bat / DESINSTALAR.bat (servicios `Kognit_*`, clave de BD cifrada al vuelo, accesos directos por empresa).
- Auto-actualización (Conexiones → ⬆ Actualizaciones): revisa un manifiesto en internet, avisa si hay versión nueva y la instala con un clic (descarga + verificación SHA256 + reinicio de servicios). Solo superadmin.
- Menú: renombrar módulos. En Parámetros → Conexiones → menú, además de ordenar/ocultar, ahora puedes ponerle el nombre que quieras a cada módulo del menú (superadmin).

v1.0.520 11 junio 2026

- Emisión DTE: kardex del ERP correcto (ITMID correlativo + número de documento en ITMDES) y CA_ID=0 en la factura.

v1.0.519 11 junio 2026

- Emisión DTE: la cabecera de la factura llena más campos del ERP (condición de pago, tipo de cotización, transportista, prioridad, notas en blanco).

v1.0.517 11 junio 2026

- Emisión DTE: estados de factura ("Generada"/"GEN./IMP.") y cotización (→COMPLETA); además ícono 🧾 Emitir factura en el historial, junto a la columna Origen.

v1.0.516 11 junio 2026

- Emisión DTE: estado de la factura "Generada" → "GEN./IMP." al enviarse a facturacion; la cotización facturada pasa de ACTIVA a COMPLETA.

v1.0.515 11 junio 2026

- Emisión DTE: la factura graba el vencimiento según la condición de pago (30/45/60/90/120 días → emisión + días; otras → fecha de emisión).

v1.0.513 11 junio 2026

- Facturación DTE: botón 🧾 Emitir factura en la vista de la cotización + corrección del error "Out of range" (la cotización se marca facturada con `CODFACT=1`).

v1.0.510 11 junio 2026

- Cotización (ERP): ahora guarda la fecha de despacho (por defecto el día siguiente, editable) en `gecot_enc.COFECDESP`.

v1.0.508 11 junio 2026

- Facturación DTE: emisión en vivo desde cotización (folio, gefac_enc/det, stock con recalcular_stock, marca facturada y deja el TXT para facturacion.cl). Botón "Emitir" tras previsualizar.

v1.0.507 11 junio 2026

- Facturación DTE: observaciones fijas de la factura (descriptores 100011/100012) en el TXT, con editor en Conexiones para cargarlas.

v1.0.504 11 junio 2026

- Facturación DTE: el generador del TXT se ajustó a la especificación oficial de facturacion.cl (descuento global, descuentos de línea, giro/email del cliente, forma de pago).

v1.0.503 11 junio 2026

- Facturación DTE: previsualización de factura desde una cotización (genera el TXT dte_plano + el plan de inserts del ERP) sin escribir nada, para validar contra gestion2006.

v1.0.501 11 junio 2026

- Facturación DTE: nueva pestaña Conexiones → 🧾 Facturación DTE para elegir el motor de emisión por empresa (facturacion.cl/dte_plano o LibreDTE). Base del botón "Emitir factura".

v1.0.499 11 junio 2026

- Conciliación banco: ahora sí lee la cartola en PDF (lector línea por línea fecha+monto). Si el PDF no trae movimientos legibles, avisa con un mensaje claro.

v1.0.496 11 junio 2026

- Pantalla de Despachos: ya no muestra los "retira cliente"; solo lo que hay que despachar/enviar.

v1.0.494 11 junio 2026

- Conexiones → Acceso HTTPS (guía): nueva pestaña con los pasos para publicar el sistema con HTTPS (Caddy) y que funcione la cámara/foto desde celulares, sin tocar el correo ni el hosting.

v1.0.492 11 junio 2026

- Foto al solicitar acceso (corrección): ahora sí aparece el consentimiento y se captura la foto. Antes la configuración se leía después de mostrar el login y el sistema la creía desactivada.

v1.0.491 11 junio 2026

- Logo Kognit: se reemplazó por la versión con fondo transparente, que se ve mejor sobre el fondo del login.

v1.0.488 11 junio 2026

- Accesos al sitio: interruptor para pedir foto al solicitar acceso + texto legal editable; la foto se ve en el historial.

v1.0.485 11 junio 2026

- Login: si el logo carga se muestra solo el logo; si no, aparece el texto "Kognit".

v1.0.483 11 junio 2026

- Fix logo del login: se agregó la ruta /logo.png en el servidor; ahora el logo Kognit aparece.

v1.0.481 11 junio 2026

- Login: el logo Kognit se ajusta responsive a la resolución de la pantalla.

v1.0.479 11 junio 2026

- Nuevo nombre: Kognit (logo en login, título, barra, PWA y backend).
- Fix menú: el dropdown de grupos se cierra al elegir una opción o al clicar fuera.

v1.0.475 11 junio 2026

- Informe Por vendedor: nueva columna "% Fact." con el porcentaje de cotizaciones facturadas por vendedor.

v1.0.473 11 junio 2026

- Pantalla despachos: fecha/hora del ticket y fecha de factura; "Entregado" sale al día siguiente (no al instante).
- Permiso "Planilla de caja" por usuario; Conciliación acepta PDF de la cartola.

v1.0.471 11 junio 2026

- Pantalla de Despachos: "Hoy + pendientes" ya no trae despachos de meses anteriores (ventana de 7 días); para ver antiguos, usa el modo Semana o el tab Despachos.

v1.0.468 11 junio 2026

- Pantalla de Despachos: marca FACTURADO/SIN FACTURAR (remarcado) y muestra también los pendientes, igual que en el tab Despachos.

v1.0.466 11 junio 2026

- Permisos: nuevo permiso "🚚 Pantalla de despachos" para que vendedores vean la pantalla de picking sin requerir Informes.

v1.0.465 11 junio 2026

- Fix Pantalla de Despachos: arrastrar y soltar ahora sí cambia el estado.

v1.0.463 11 junio 2026

- Pantalla de Despachos: cotizaciones con despacho no facturadas; modo "Hoy + pendientes" (arrastra lo no entregado) y modo "Semana".

v1.0.459 11 junio 2026

- Pantalla de Despachos: arrastrar y soltar tarjetas entre columnas para cambiar el estado.

v1.0.457 11 junio 2026

- Pantalla de Despachos: tablero Kanban por estado (tipo picking) con auto-refresco, filtro por vendedor, edición de estados y pantalla completa.

v1.0.456 11 junio 2026

- Asistente: la preferencia de silencio y voz se guarda por usuario en el servidor.

v1.0.454 11 junio 2026

- Fix "ver boucher": ya no da "Autenticación requerida"; se abre con la sesión autenticada.

v1.0.453 11 junio 2026

- Asistente de voz: arreglado; inicia en silencio, con botón 🔇/🔊 para activar/silenciar, selector de voz (⚙) y más comandos.

v1.0.451 11 junio 2026

- Conexiones — Saldos / anticipos: nuevo tab para cambiar el estado de gepagos_ant (CO cobrado / PE pendiente) por cliente, con autorización y auditoría.

v1.0.449 11 junio 2026

- Planilla Caja: incluye boletas; las ventas a crédito van a la columna Crédito con su vencimiento y no salen como pendientes (pendientes = solo contado sin pago).
- Pago: el enlace "marcar" ahora dice "Asignar".

v1.0.446 11 junio 2026

- Pago a crédito: pide los días (ej. 60) y calcula la fecha de pago desde la fecha de la factura; la planilla la muestra en la columna "Vence".

v1.0.436 11 junio 2026

- Planilla Caja: desglose cuando una factura tiene más de un pago (ej. dos Transbank): muestra "T.Créd 15.112 + T.Créd 21.945" bajo el F.Pago y columna "Detalle pagos" en Excel.

v1.0.434 10 junio 2026

- Planilla Caja: ahora lee los pagos del ERP (gepagos); las facturas pagadas allí muestran su medio y no salen como pendientes.
- Inicio: KPI "Clientes del mes" (con nuevos y recurrentes) en vez de "Clientes registrados".

v1.0.432 10 junio 2026

- Planilla Caja: columna "Monto factura" (para cuadrar el saldo mayor pago) y las pendientes excluyen las pagadas en el ERP (gepagos).

v1.0.430 10 junio 2026

- Asignar abono: oculta las facturas que ya tienen un pago asociado, para no duplicar pagos por error.

v1.0.428 10 junio 2026

- Un abono → varias facturas: "Asignar →" multi-factura con auto-reparto editable, y detección de combos (2-3 facturas que suman el abono) para asignar de un clic.

v1.0.427 10 junio 2026

- Planilla Caja: cheque con vencimiento de otro día = "cheque a fecha" (CHF), muestra su fecha y suma en Cheques a fecha; los del día en Pagos al día.

v1.0.424 10 junio 2026

- Columna Pago: con más de un medio muestra el combo (ej. Transf + Cheque, Transf + NC).

v1.0.422 10 junio 2026

- Registrar pago: campos del cheque (N°/banco/vencimiento) más grandes y con etiquetas.

v1.0.421 10 junio 2026

- Conciliación: asignar manualmente un abono que no calza a una factura pendiente; si es menor al total queda como abono parcial (◑) y se complementa después.

v1.0.418 10 junio 2026

- Pago con varios medios: una factura se puede pagar con más de un medio (transferencia + cheque, etc.); la Planilla reparte cada uno en su columna.

v1.0.416 10 junio 2026

- Planilla de Caja: informe del día (facturas + medio en columnas, totales, resumen y pendientes) con imprimir, Excel y email.

v1.0.414 10 junio 2026

- Pagos (Registrar pago): medios ampliados, monto pagado/diferencia (monedero), saldos a favor del cliente (gepagos_ant) y datos de cheque (N°/banco/vencimiento/monto).

v1.0.413 10 junio 2026

- Transbank: se quitó la conexión en vivo (el portal usa reCAPTCHA); queda solo "Subir archivo".

v1.0.411 10 junio 2026

- Transbank conexión: login con selectores exactos del Portal 3.0. El portal usa reCAPTCHA; si bloquea, avisa y se usa "Subir archivo".

v1.0.409 10 junio 2026

- Transbank: la conexión en vivo descarga el archivo de "Descargar información" y lo lee localmente; lectura de Excel reforzada (todas las hojas + reintento).

v1.0.407 10 junio 2026

- Fix Transbank: conexión en vivo (Playwright en hilo aparte) y lectura del Excel más robusta con diagnóstico de columnas.

v1.0.405 10 junio 2026

- Transbank: parser ajustado al xlsx real (toma "Monto movimiento", Medio de pago, Cód. autorización de la venta y N° de boleta); si suben el PDF, avisa usar Excel/CSV.

v1.0.404 10 junio 2026

- Transbank: dos modos — Subir archivo o Conectarme en vivo (usuario/clave por consulta, sin guardar; la conexión requiere Playwright en el servidor).

v1.0.402 10 junio 2026

- Libro de Ventas: importar la cartola de movimientos de Transbank (Mis Ventas): cruza por monto+fecha y marca el medio (crédito/débito/prepago) con el código de autorización.

v1.0.401 10 junio 2026

- Despachos: "Por facturar" muestra el nombre del vendedor (no el código); el tablero semanal ahora es colapsable.

v1.0.398 10 junio 2026

- Despachos como módulo de menú: botón propio que abre Ventas→Despachos y se puede poner en un grupo del menú.
- Fix grupos del menú: un grupo sin módulos no se guarda; ahora avisa al guardar (antes era silencioso).

v1.0.396 10 junio 2026

- Fix Despachos: el % de los LIKE causaba "Error interno"; corregido (escape %%). El tablero y por facturar vuelven a cargar.

v1.0.394 10 junio 2026

- Despachos (fix): COESTADO es texto ("MODIFICADA"/"ANULADA"); ahora sí se excluyen las modificadas y anuladas del tablero y de por facturar.

v1.0.392 10 junio 2026

- Despachos: el tablero semanal muestra solo cotizaciones activas/pendientes (excluye modificadas y anuladas).

v1.0.389 10 junio 2026

- Despachos: "Cotizaciones por facturar" excluye las modificadas/anuladas; solo estado activo/pendiente.

v1.0.388 10 junio 2026

- Despachos: "Cotizaciones por facturar" ahora muestra solo las que tienen transporte asignado, no todas las activas.

v1.0.385 10 junio 2026

- Despachos: tablero semanal (Lun–Vie) con estado por despacho (Activo / Preparado / En reparto / Entregado a transporte + boucher), navegación por semana y sub-sección de Cotizaciones por facturar.

v1.0.383 10 junio 2026

- Pagos WebPay por correo: botón 💳 WebPay (correo) lee los avisos de Transbank por IMAP, saca monto/empresa/Orden de pago y los cruza con el libro para conciliarlos. Cuenta configurable, clave cifrada, solo lectura.

v1.0.382 10 junio 2026

- Medio de pago: campo Orden de pago / Referencia (obligatorio al marcar WebPay), guardado y visible en el detalle del pago.

v1.0.380 10 junio 2026

- Libro de Ventas: marcar pago manual por otro medio (WebPay, efectivo, tarjeta crédito/débito, cheque, transferencia) desde la columna Pago; muestra el medio y permite quitarlo.

v1.0.377 10 junio 2026

- Libro de Ventas: filtro por estado de pago (Todos / ✔ Transferidos / ⏳ Pendientes) en la vista Pro.

v1.0.375 10 junio 2026

- Conciliación: reconoce el RUT del cliente cuando viene dentro de la descripción del abono (ej. "Pago: Proveedores 0805702001"), mejorando el calce y el desempate por RUT.

v1.0.373 10 junio 2026

- Conciliación: el lector de la cartola HTML ahora junta todas las tablas (soporta tablas anidadas y movimientos en varias páginas). Antes leía solo la tabla más grande y se perdían abonos.

v1.0.370 10 junio 2026

- Conciliación: como la factura se emite al confirmar el pago, el abono puede ser del mismo día o anterior a la emisión. Se amplió la ventana de fechas para no descartar esos calces.

v1.0.368 10 junio 2026

- Conciliación: si no hay coincidencias, muestra un panel con los abonos leídos vs los documentos pendientes, para ver si falla la lectura de la cartola o el período cargado.
- Libro de Ventas: la vista Pro ahora ordena las fechas de mayor a menor.

v1.0.365 10 junio 2026

- Conciliación bancaria: cuando varios documentos tienen el mismo monto, desempata por el nombre del depositante de la descripción. Muestra confianza alta/revisar y premarcar solo las seguras (las dudosas en amarillo ⚠).

v1.0.363 10 junio 2026

- Conciliación bancaria: la cartola ahora se lee en más formatos (xlsx, CSV y cartolas .xls que en realidad son HTML), detectando el tipo por el contenido del archivo.

v1.0.362 10 junio 2026

- Libro de Ventas — Conciliación bancaria: botón 🏦 Conciliar banco: sube la cartola (Excel/CSV), cruza los abonos por monto con las facturas/boletas, confirmas y quedan marcados como Transferido ✔ (con KPIs Transferido/Pendiente). No se guardan claves del banco.

v1.0.359 10 junio 2026

- Libro de Ventas — Excel: ahora la exportación incluye las tablas finales de Totales y Correlativos (con encabezados y bordes), tal como en el libro impreso del SII.

v1.0.357 10 junio 2026

- Libro de Ventas: totales centrados en la hoja y arreglo de la descarga a Excel (daba error de autenticación).

v1.0.354 09 junio 2026

- Libro de Ventas (SII) en Documentos emitidos: vista Clásica idéntica al SII + vista Pro (KPIs/filtros), imprimir y exportar Excel. Validado contra el libro real de mayo.

v1.0.351 09 junio 2026

- Barra superior: la base de datos conectada, su estado y la versión bajaron a una segunda línea bajo el nombre de la empresa (nombre limpio).

v1.0.347 09 junio 2026

- Geografía de Ventas: vendedores ahora en lista desplegable con multi-selección.

v1.0.345 09 junio 2026

- Reposición: al elegir un proveedor, pregunta si mostrar en la descripción solo las compras de ese proveedor o todas (con checkbox para cambiarlo).

v1.0.343 09 junio 2026

- Documentos emitidos: Facturas/Boletas/Notas de Crédito en su propio módulo (fuera de Informes).
- Nombres de pestañas configurables y selector de iconos para los grupos del menú.

v1.0.339 09 junio 2026

- Menú submenús: dropdown flotante (ya no se recorta) y paleta del submenú corregida (texto legible).

v1.0.334 09 junio 2026

- Menú colapsable con submenús: grupos desplegables (acordeón en sidebar, dropdown en barra superior), configurables en Parámetros → Conexiones → 📂 Grupos del menú.

v1.0.332 09 junio 2026

- Kardex: muestra el nombre del cliente del documento relacionado (factura/boleta/NC por folio) y el nombre del tipo de documento.

v1.0.330 09 junio 2026

- Reposición: interruptor para fijar/liberar el encabezado de la tabla al desplazar.
- Conexión BD: reintentos automáticos antes de caer a "modo sin BD" (cortes transitorios).

v1.0.327 09 junio 2026

- Reposición: categorías con interruptor por empresa (activar/desactivar), buscador de proveedores con autocompletado y campo "Buscar producto" más ancho.

v1.0.324 09 junio 2026

- Kardex: ahora muestra el costo del producto (ITCOSTO) y el costo de cada movimiento/factura (ITMCOSTO).

v1.0.320 09 junio 2026

- Reposición: "Tipos de venta" ahora es una lista desplegable con selección múltiple.

v1.0.318 09 junio 2026

- Reposición — Búsqueda avanzada: se quita "Lista de Productos" y se agrega ⚙ Más filtros (texto multi-palabra, proveedor, rango de stock/cobertura, urgencia).

v1.0.316 09 junio 2026

- Reposición — Generar pedido: selecciona productos con casillas y genera el pedido por proveedor (cantidad editable, Imprimir/PDF y Excel).

v1.0.314 09 junio 2026

- Categorías de productos: clasifica por Tipo (familia) y Calidad/Espesor/Largo (descripción); filtros en Reposición y configurador en Parámetros → 🏷 Categorías (superadmin).

v1.0.311 09 junio 2026

- Reposición: la "Lista de Productos" abre en modo consulta (sin botón Agregar).

v1.0.309 09 junio 2026

- Reposición: casilla "Con importaciones" (compras locales + importación) y botones Lista de Productos / Imprimir / Email en línea.

v1.0.304 09 junio 2026

- Reposición — buscador con autocompletar: sugiere productos del informe (código, descripción, stock) y filtra la tabla al elegir uno.

v1.0.302 09 junio 2026

- Reposición: casilla "Solo importaciones" (e import. en el filtro), cantidad antes del costo, interruptor "Mostrar proveedores" y botón "Lista de Productos".

v1.0.300 09 junio 2026

- Reposición — proveedor de importaciones correcto: el nombre sale de gecli (proveedores CLITIPO='P', MAPRO=CLIRUT). Antes mostraba proveedores equivocados por un cruce errado.

v1.0.298 09 junio 2026

- Reposición — importaciones: además de órdenes de compra, muestra las compras por importación (geitems_man IM + geitems_mand) con proveedor, costo, fecha y la referencia MAREF (marcadas con 🌍).

v1.0.295 09 junio 2026

- Reposición — proveedores en el PDF: el reporte imprimible incluye la columna "Proveedores (últ. costo)".

v1.0.293 07 junio 2026

- Reposición con proveedores: bajo cada producto se ven sus proveedores con el costo de la última compra y el mes (desde las órdenes de compra). Nuevo filtro "Proveedor".

v1.0.292 07 junio 2026

- Caché de inventario parametrizable: en Parámetros → Conexiones (superadmin) puedes activar/ desactivar la caché y fijar su duración. Si el servidor es rápido, desactívala para datos siempre en vivo.

v1.0.291 07 junio 2026

- Inventario más rápido: ahora usa un snapshot en memoria por base de datos (≈3 min); buscar, ordenar y cambiar de página responde casi al instante. Botón ↻ Actualizar para datos frescos; se refresca solo al activar/desactivar un producto.

v1.0.290 07 junio 2026

- Boletas — cliente correcto: el nombre se toma de la boleta (BOLNOM); antes, con el RUT genérico 1-9, mostraba otro cliente al buscarlo en la ficha por RUT.

v1.0.289 07 junio 2026

- Menú parametrizable: en Parámetros → Conexiones (superadmin) eliges qué módulos aparecen y su orden (↑ ↓). Aplica a todos; cada módulo respeta además los permisos por rol.

v1.0.288 07 junio 2026

- Móvil en Inicio y Nueva cotización: formularios y KPIs en una sola columna en celulares; la tabla de ítems se desplaza horizontalmente sin romper el diseño.

v1.0.287 07 junio 2026

- Responsive en celulares: la barra muestra la marca a la izquierda y el botón ☰ siempre a la derecha; al tocarlo se despliega el menú en columna (con avatar y Salir al final).

v1.0.286 07 junio 2026

- Menú lateral configurable: en Parámetros → Conexiones (superadmin) eliges la disposición del menú: Arriba (horizontal) o Lateral (columna a la izquierda). Aplica a todos.

v1.0.285 07 junio 2026

- Menú superior a la derecha + móvil: el menú se agrupa a la derecha; en pantallas chicas se colapsa en un botón ☰ que lo despliega en columna.
- Conexiones activas (superadmin): sección "🟢 En línea ahora" con quién está conectado en tiempo real, hora de conexión, última actividad, hora de desconexión y estado En línea/Desconectado.
- Desconectar con aviso: el superadmin puede enviar un mensaje y cerrar la sesión de un usuario; se le muestra el mensaje y se cierra automáticamente.

v1.0.283 06 junio 2026

- Multi-empresa: armado rápido: `crear_empresas.bat` crea de una vez las carpetas de datos de varias empresas y copia en cada una `.secret.key` y `conexiones.json`. Luego solo se instala el servicio de cada empresa.

v1.0.282 06 junio 2026

- Base multi-empresa (Opción A): Una sola copia de código puede atender varias empresas como servicios independientes. Cada instancia usa su propia carpeta de datos vía `GW_DATA_DIR` (conexiones, claves, configs y logos separados). Incluye `servicio_instalar_empresa.bat` y ejemplo de Caddy para una URL por empresa. Sin cambios si se usa una sola empresa.

v1.0.281 06 junio 2026

- Fecha de documentos en hora de Chile (servidor): El backend usa la zona horaria America/Santiago para la fecha de cotizaciones/notas, así no se corre aunque el servidor esté en UTC. Requiere reinstalar dependencias (incluye `tzdata`) y reiniciar el servidor.

v1.0.280 06 junio 2026

- Corrección del desfase de fecha: "Hoy" se calculaba en UTC y por la tarde saltaba al día siguiente (Chile es UTC-4/-3). Ahora usa la fecha local del dispositivo en la nueva cotización, filtros de informes/historial, semana en curso, últimas compras y exportaciones.

v1.0.279 06 junio 2026

- Catálogo de productos offline: La "Lista de Productos" se llena desde la copia local sin conexión (familias, stock y precios). Antes quedaba vacío.
- Últimas compras offline: Al cargar un cliente sin red se muestran sus últimas compras guardadas; ahora se cachea toda consulta del cliente.
- Barra superior en Safari/iPad: El menú se desliza y el botón Salir queda fijo a la derecha en cualquier resolución (también iPad landscape), respetando los bordes seguros de la pantalla.

v1.0.278 06 junio 2026

- Botón flotante offline siempre visible: Aparece (con permiso de nota local) aunque no haya notas guardadas, para poder abrir la bandeja y pulsar "⬇️ Actualizar datos" en la tablet antes de ir a terreno. Antes solo se mostraba si ya existían notas en la cola.

v1.0.277 06 junio 2026

- Barra superior adaptada a tablet (iPad/Safari): En pantallas ≤1024px la barra pasa a dos filas: el menú se desliza horizontalmente y los botones Conexiones y Salir quedan siempre accesibles (antes se salían de pantalla). En pantallas muy angostas se oculta el nombre de usuario para no tapar "Salir".

v1.0.276 06 junio 2026

- PDF offline casi idéntico al oficial: El PDF de las notas locales replica el diseño del servidor (encabezado de empresa, bloque de cliente, tabla Concepto/Cant./U.M./P.Unit/Dto.1%/Dto.2%/P.Neto/Total, observación, condición de pago, firma del vendedor y totales con IVA), con sello "📴 Generada offline".
- Aviso de modo offline: Al perder la conexión se muestra un cuadro con las instrucciones para trabajar sin internet, que se cierra al leerlo y reaparece si la red se cae otra vez.

v1.0.275 06 junio 2026

- Modo offline en tablet (PWA): Abre la app con wifi una vez y luego cotiza sin internet; al volver la conexión se sube todo al ERP solo.
- Datos offline + auto-sync: Productos, precios, stock, clientes, vendedores, familias, condiciones de pago y transportistas se descargan a IndexedDB y se actualizan solos al haber red (botón "⬇️ Actualizar datos" e indicador de última actualización en la bandeja offline).
- Búsqueda e historial sin conexión: Búsqueda de productos y clientes (RUT/nombre) y las últimas compras del cliente funcionan desde la copia local.
- PDF offline: Las notas locales aún no sincronizadas tienen botón PDF que genera una vista imprimible en el dispositivo (Guardar como PDF), sin servidor.

v1.0.273 06 junio 2026

- Informes → Por vendedor: La columna "Monto" se separó en Monto facturado y Monto pendiente x facturar (lo no facturado, excluyendo anuladas/rechazadas/vencidas), con fila TOTAL.
- Comisiones → % del descuento: Junto al monto de descuento ahora se muestra el % que representa sobre el neto bruto, en la familia raíz, subfamilias, vendedores, fila TOTAL y la tarjeta "Descuento Total".
- Comisiones → nuevo tab 📊 Comparador: Compara ventas, descuento $ y descuento % con gráfico de barras, en tres modos: entre vendedores, entre familias y entre periodos (período actual vs. el anterior de igual duración).

v1.0.271 04 junio 2026

- Inventario respeta `geparam.cf_tipo_bodega`: Si vale 0, el stock mostrado es `geitems_mae.ITSTOCK`; si vale 1, es la suma de las bodegas (como antes). Si la columna no existe, se mantiene la detección automática. Se aplica por base de datos.
- Admin: cambiar tipo de documento: Nueva pestaña 🏷 Tipo Doc en Parámetros (admin y superadmin). Permite cambiar el tipo (NV, TI, CO, etc.) de una cotización; el detalle (`gecot_det.CODTIPO`) se ajusta junto a la cabecera para no romper el ERP. Cada cambio queda auditado (usuario, fecha/hora, IP y equipo).
- Botón "🛒 Últimas compras" reubicado: Ahora aparece entre Lista de Productos y el buscador de productos de la cotización, más a mano al cargar líneas.

v1.0.251 04 junio 2026

- WhatsApp: elegir App o Web: el modal de envío ahora tiene dos botones — 📱 Abrir App (usa la aplicación instalada en el equipo) y 🌐 WhatsApp Web (navegador). Eliges el destino en cada envío.

v1.0.250 04 junio 2026

- Logo por base de datos: el logo subido en Parámetros → Mi Empresa queda asociado a la base activa. Al cambiar de conexión (ej. allen→gamspa) el logo cambia automáticamente. Los PDFs y correos usan el logo de cada empresa.

v1.0.249 04 junio 2026

- Script PHP — tercer método de subida: en Parámetros → Mi Empresa, opción ⚡ Script PHP. Sube los PDFs por HTTPS normal (sin FTP ni WebDAV). Se descarga un `upload.php` con el token secreto ya incluido, se sube al hosting una vez y listo. Token guardado cifrado.

v1.0.248 04 junio 2026

- WebDAV como alternativa al FTP: en Parámetros → Mi Empresa, nuevo selector FTP/FTPS o WebDAV/HTTPS. WebDAV sube los PDFs por HTTPS (sin puertos pasivos ni firewalls) — resuelve el timeout de FTP con cPanel. Solo necesita la URL de la carpeta y las credenciales de cPanel.

v1.0.247 04 junio 2026

- PDF de comisiones imprimible: botón "PDF comisiones" en el informe. El PDF tiene dos secciones: primero "Por persona" (con ambos vendedores agrupados y desglose por código) y luego "Por código". Respeta el filtro de vendedor y período.
- Comisiones: % correcto del vendedor 2: las facturas firmadas con el código del vendedor 2 (ej. código 34 de Patricio) aplican su % especial (3%), no el % general de la familia (6%). Al filtrar por vendedor 1 se incluyen automáticamente las ventas del vendedor 2 asociado.
- Toggle "Por código / Por persona" en comisiones → Por vendedor: "Por persona" agrupa los códigos del mismo usuario con comisión correcta por factura y desglose al expandir (útil para el admin que paga las comisiones).

v1.0.246 04 junio 2026

- FTP "Probar subida": nuevo botón que sube un PDF de prueba (PRUEBA-FTP.pdf) a la carpeta del hosting para verificar conexión, permisos de escritura y carpeta. Si hay URL pública, muestra el enlace para abrirlo en el navegador.

v1.0.245 04 junio 2026

- Logo de la empresa: subir archivo: en Parámetros → Mi Empresa el logo se sube desde el equipo con un botón (PNG/JPG, máx. 5 MB); ya no hay que escribir la ruta. La vista previa ahora muestra el logo correctamente (se sirve desde el servidor con la sesión).

v1.0.244 04 junio 2026

- Proyección de ventas del mes (Inicio): tarjeta que estima la venta del mes = (venta neta acumulada ÷ días transcurridos) × días del mes; el primer día del mes usa el promedio del mismo mes de los 2 años anteriores. Compara con el año anterior a igual fecha y con el mes completo. Botón "¿Cómo se calcula?".
- Modo sin conexión (PWA) activable: interruptor en Parámetros → Conexiones (solo superadmin) para activar que la app se instale y abra sin internet.

v1.0.243 04 junio 2026

- Enviar cotizaciones legadas por Email y WhatsApp: en el historial, las cotizaciones del sistema antiguo ahora tienen botones Email y WhatsApp (antes solo Ver/PDF); también en la ventana "Ver". Email con PDF adjunto; WhatsApp usa el enlace público/FTP y clave si están configurados.

v1.0.242 04 junio 2026

- WhatsApp no obliga a instalar la app: en escritorio abre WhatsApp Web directamente (ya no aparece el cuadro para descargar la app); en móvil usa la app si está instalada y si no, la web.
- Enlace del PDF también en el sistema nuevo: el enlace público (hosting/FTP) en el mensaje ahora funciona para cotizaciones del sistema nuevo y legado; al enviar se sube el PDF al FTP (con clave si aplica). Antes mostraba una dirección interna (localhost).

v1.0.241 04 junio 2026

- WhatsApp enlaza al PDF del hosting: el mensaje usa la URL pública del PDF (subido por FTP), ej. `https://www.gamspa.cl/cotclientes/C-2026-00001.pdf`, en vez de una dirección interna. Se configura en Parámetros → Mi Empresa → FTP (campo "URL pública del PDF", por base).
- PDF con clave (opcional): interruptor para proteger el PDF subido con los últimos 4 dígitos del RUT del cliente; el mensaje de WhatsApp avisa la clave. Requiere reiniciar el servidor.

v1.0.240 04 junio 2026

- PDF de la cotización renovado: datos de empresa desde el ERP (geparam) por base; columna separada Dto.1% / Dto.2%; la validez usa la real del documento (o la configurada en Parámetros) en vez de 30 fijo; y se cambiaron los grises por los colores de la paleta (azul en encabezados y total, rojo/naranja en descuentos y recargos). Aplica a descarga, email y FTP.

v1.0.239 04 junio 2026

- Nota de venta offline (sin conexión): nuevo botón "Nota de venta (local)" (permiso por usuario). Emite sin internet, guarda en este equipo y la bandeja "Notas locales" (botón flotante) la sincroniza al ERP al volver la conexión. Identificador único = no se duplica al reintentar.
- App instalable (PWA): el sistema se puede instalar desde el navegador y abre sin conexión (Service Worker). Requiere reiniciar el servidor.

v1.0.238 04 junio 2026

- FTP: subida automática del PDF: Al guardar la cotización en el ERP, su PDF se sube por FTP/FTPS al hosting (carpeta `cotclientes` por defecto). Se configura en Parámetros → Mi Empresa → FTP (solo superadmin), por base de datos, con botones Probar conexión y Crear carpeta. Si el FTP falla, la cotización igual se graba. Requiere reiniciar el servidor.

v1.0.237 04 junio 2026

- WhatsApp usa la app instalada: Al enviar por WhatsApp se intenta abrir primero la aplicación de escritorio; si no está instalada, cae automáticamente a WhatsApp Web.

v1.0.236 04 junio 2026

- Fix PDF historial: El PDF de cotizaciones desde el historial ya no da "Autenticación requerida" (se abre autenticado vía descarga con token).

v1.0.235 03 junio 2026

- Mi Empresa desde el ERP: Los datos de empresa se cargan de `geparam` de la BD activa (solo lectura); el logo sigue de carga manual. Los PDF y correos usan la empresa de cada BD.
- Catálogo: cantidad al agregar: Campo de cantidad junto al botón Agregar (vacío = 1).

v1.0.234 03 junio 2026

- Últimas compras: botón "6 meses": Filtro rápido de 6 meses (además del de 12 meses) en el listado de compras del cliente.

v1.0.233 03 junio 2026

- Últimas compras: 12 meses por defecto: Ahora carga el último año (no solo 10 documentos), así aparecen todos los productos del período. Carga por lotes (rápida). Requiere reiniciar el servidor.

v1.0.232 03 junio 2026

- Transportista con búsqueda: El campo Transportista de la cotización ahora permite escribir para filtrar (más rápido que el desplegable largo).

v1.0.231 03 junio 2026

- Últimas compras — filtro Desde/Hasta: Por defecto muestra los últimos 10 documentos; con rango de fechas muestra todos los del período (hasta 300). Botón "Últimos 10" para volver.

v1.0.230 03 junio 2026

- Últimas compras por pestañas: El listado se separa en Todas · Facturas · Boletas · Cotizaciones (con conteo); se muestran solo las que tienen documentos.

v1.0.229 03 junio 2026

- gamspa: cotizaciones nacen PENDIENTE: Las cotizaciones/notas guardadas en el ERP desde gamspa quedan en estado PENDIENTE para aprobación (configurable en `app_config.json`).
- Últimas compras — P.Unit c/Dto: Nueva columna con el precio unitario ya con descuentos aplicados.

v1.0.228 03 junio 2026

- 🛒 Últimas compras del cliente: Al cotizar, botón que muestra los últimos 10 documentos del cliente (facturas, boletas y cotizaciones) con producto, cantidad, precio y descuentos 1/2, y un botón "+ agregar" para recargar el producto en la cotización.

v1.0.227 03 junio 2026

- Superadmin — Cambiar estado con auditoría: Nueva pestaña 🔁 Estados en Parámetros (solo superadmin): busca por número, cambia el estado (ej. ACTIVA→PENDIENTE) con motivo obligatorio, y registra quién, cuándo, IP y equipo (navegador/SO) en `cot_estado_log`. Se auditan también autorizar/rechazar y los cambios del sistema nuevo.

v1.0.226 03 junio 2026

- Inventario — Códigos alternativos: Nuevo botón "🔀 Códigos alternativos" con listado de productos y sus códigos alternativos (de `geitems_cod`), con buscador y exportación a PDF y Excel (hojas "Por producto" y "Por código").
- Más textos con nombre configurable: Se conectaron a Parámetros → Documentos varios textos que quedaban fijos como "cotización" (permisos, modales de autorizar/buscar/email, etc.).

v1.0.225 03 junio 2026

- Inicio — columna "Tipo": El listado de la pantalla de inicio (cotizaciones por aprobar) ahora muestra el tipo de documento (Cotización, Nota de Venta, Ticket, etc.) según `COTIPO`.

v1.0.224 03 junio 2026

- Solicitudes de acceso al sitio: Se corrigió que no se registraran en la base gamspa (MySQL 5.5, incompatibilidad del `CREATE TABLE`) y ahora todos los dispositivos nuevos piden autorización (se desactivó la auto-aprobación de la red local; `localhost` sigue como salida de seguridad). Configurable en `app_config.json` (`sitio_auto_aprobar_lan`).

v1.0.223 02 junio 2026

- Nombre del sistema → GESTION WEB: Se renombró el branding del sistema (login, título de pestaña, subtítulo del dashboard y topbar por defecto). No cambia el nombre del documento ni el de la empresa.

v1.0.222 02 junio 2026

- Comisiones — botón "Actualizar" con progreso: Muestra spinner, cronómetro y estimación del tiempo restante (según la última carga) mientras procesa, y se deshabilita hasta terminar.

v1.0.221 02 junio 2026

- Permisos — autorizar cotizaciones: Autorizar (PENDIENTE → ACTIVA, "🔐 Autorizar") quedó solo para admin/superadmin: el botón se oculta y la acción se bloquea para vendedores. (Recargar con Ctrl+F5 si quedó una pestaña abierta.)

v1.0.220 02 junio 2026

- Comisiones — fecha en el detalle: El detalle de movimientos por vendedor (vista Por familia) ahora incluye la columna Fecha del documento. El detalle respeta el período Desde/Hasta.

v1.0.219 02 junio 2026

- Más textos con nombre configurable: El botón del inicio, el KPI "Cotizaciones del mes" y el subtítulo respetan ahora el nombre definido en Parámetros → Documentos.
- Fix Comisiones: Familias con una sola subfamilia igual a la raíz (ej. 04 FOSSE CAR CARE) ahora se pueden expandir para ver el vendedor.

v1.0.218 02 junio 2026

- Comisiones — filtro "Con vendedor": Nuevo botón en la vista Por familia que muestra solo las familias con al menos un vendedor (con código) que tuvo ventas en el período. Las ventas sin vendedor asignado no cuentan.

v1.0.217 02 junio 2026

- Base de fecha de informes configurable: Nuevo parámetro en Parámetros → Documentos para calcular los informes por fecha de emisión del documento (legal, por defecto) o por fecha de creación. Corrige el desfase cuando una factura se digita en un mes con fecha de documento de otro mes. Aplica a Ventas, Comisiones, Boletas, Notas de Crédito, Estadísticas, Facturas y dashboard (el mapa de calor por hora sigue usando la hora de creación).

v1.0.216 01 junio 2026

- Guardar en ERP (gecot): Nuevo botón "Guardar en ERP" en el formulario de cotización que graba directamente en las tablas del ERP (`gecot_enc` / `gecot_det`). La numeración usa el último `CONRO` real con bloqueo y reintento anti-duplicado, para no chocar con el ERP en marcha. El botón "Guardar Cotización" original sigue funcionando igual.
- Modo de entrega y transportista: Nuevos campos en la cotización — Modo de Entrega (Despacho / Retira / Transporte) y Transportista (desde `getipos`), que llenan `CODESPACHO`/`CORETIRA`/`COTRANSPORTE` y `COENVIO`. El tipo de documento (`COTIPO`) toma el valor del select "Tipo Cotización".
- PDF, Email y WhatsApp para cotizaciones del ERP: Tras guardar en ERP, las acciones usan los endpoints legados (incluye nuevo envío de email con PDF adjunto para cotizaciones `gecot`).
- Botones con nombre configurable y explicación: Los botones de guardado respetan el nombre del documento de Parámetros → Documentos y muestran una breve explicación de cada uno (sistema web vs. ERP/sistema antiguo).

v1.0.202 01 junio 2026

- Dashboard - Cotizaciones por Aprobar: Nuevo panel en inicio con listado de cotizaciones en estado `PENDIENTE`. Los administradores ven todas; los vendedores solo las suyas.
- Cierre de cotizaciones: Nuevo flujo donde el vendedor solicita cierre y el administrador lo aprueba desde un panel de inicio. Cierre automático por vencimiento de validez.
- Restricciones de datos sensibles: Opciones granulares en usuarios para ocultar completamente la pestaña "Reposición" y el panel de Estadísticas Anuales/Proyección.

v1.0.185 30 mayo 2026

- Ventas — Notas de Crédito solo en vista combinada: Al filtrar solo Facturas o solo Boletas ya no se descuentan las NC; solo se restan cuando se ven FAC+BOL juntas.
- Nuevo tab 📑 Notas de Crédito: Dashboard de NC con KPIs y desglose por origen (De Facturas / De Boletas / Otro), clasificando por el documento referenciado. Tabla detallada incluida.

v1.0.178 30 mayo 2026

- Facturas dentro de Informes: El módulo de Facturas ahora es un tab dentro de Informes (🧾 Facturas), ya no un ítem del menú superior. Respeta el permiso de facturas.
- Nuevo tab Boletas (dashboard): KPIs (boletas emitidas, IVA, clientes con boleta, neto, total, ticket promedio), gráfico de boletas por día y top vendedores. Datos desde `gebol_enc`.

v1.0.165 29 mayo 2026

- 📈 Dashboard de evolución de comisiones: Nuevo tab en el informe que muestra la comisión en el tiempo: KPIs, gráfico de barras mensual y tabla familia × mes. Respeta las comisiones especiales por vendedor.
- Fix comisiones especiales: Ahora se guardan y aparecen correctamente al reabrir la familia.
- Fix cambio de BD: Ya no da error al usar una conexión sin la tabla de solicitudes.

v1.0.163 29 mayo 2026

- Comisiones especiales por vendedor ⭐: Una familia puede pagar distinto según el vendedor. Se configuran en el modal de la familia (sección "Comisiones especiales por vendedor"). Los no listados usan el valor por defecto.
- Informe en cascada: Cada vendedor cobra su excepción si existe ⭐, si no el valor de la familia, si no el de la raíz. La comisión de cada subfamilia es la suma de sus vendedores.
- Panel "¿Cómo se calculan?": Explica de dónde viene la comisión de cada vendedor.

v1.0.159 29 mayo 2026

- Pantalla de inicio: Al ingresar se muestra una bienvenida con saludo personalizado, 4 KPIs del mes (cotizaciones, ventas netas, pendientes de facturar, clientes) y accesos rápidos a los módulos según permisos.
- Botón "Inicio" agregado a la barra de navegación.

v1.0.156 29 mayo 2026

- Sistema de aprobación de acceso: Los usuarios vendedor/supervisor quedan en espera hasta que un admin apruebe su ingreso. El admin ve un badge rojo en el topbar con IP, geolocalización, dispositivo, navegador y zona horaria de quien intenta conectarse.
- Corrección al cambiar contraseña: Hash compacto (43 caracteres) que cabe en la columna existente; se resolvió el error "Data too long".
- Fallback automático de BD: Si la conexión activa falla, el sistema prueba las demás conexiones guardadas automáticamente.

v1.0.152 28 mayo 2026

- Autenticación JWT: Login retorna token HMAC-SHA256 (7 días). Middleware exige `Bearer token` en todas las APIs. Frontend inyecta token automáticamente en cada `fetch`. Logout en 401.
- Contraseñas PBKDF2-SHA256: Nuevas claves hasheadas con 200k iteraciones. Migración silenciosa en primer login con clave en texto plano.
- Rate limiting login: Máx. 10 intentos por IP en 5 minutos → HTTP 429.
- CORS restringido: Solo `localhost` por defecto; configurable con `ALLOWED_ORIGINS` en `.env`.
- Headers de seguridad, errores genéricos y detección de PIN por defecto.

v1.0.146 28 mayo 2026

- Despachos — Filtro facturadas corregido: Ahora usa `gecot_det.CODFACT` como fuente autoritativa (vacío/0 = pendiente; con valor = facturado). Fallback a `COESTADO` si no existe la columna.
- Despachos — Explicación "Pedidos con envío": Panel informativo al inicio del tab indicando qué son los pedidos con envío, el modo activo y el mecanismo de filtro.

v1.0.144 28 mayo 2026

- Despachos — Filtro estado documento: Toggle "Solo facturadas / Act.+Fact. / Solo activas / Todas" en el panel. El endpoint filtra por `COESTADO`. Default = solo facturadas.
- Ventas — Heatmap y barras con neto real s/NC: Tooltip del mapa de calor usa neto (s/IVA). Las barras por día muestran neto bruto − NC proporcional. El backend retorna `nc_por_dia[]`.
- Ventas — Semana actual sobre heatmap: Columna derecha con ventas de la semana en curso (cant · neto real) superpuesta al heatmap histórico.
- KPIs con fórmula explícita: Neto Real (FAC+BOL−NC) y Total Real (c/IVA−NC) visibles en el encabezado.

v1.0.141 28 mayo 2026

- Familias — Tipo de comisión "$ fijo por unidad": El modal de edición ahora permite elegir % sobre venta o $ fijo por unidad. Se guardan en nuevas columnas `ITFA_COM_TIPO` e `ITFA_COM_FIJO`.
- Familias — Asignación masiva: Panel "☑ Selección masiva" con checkboxes por familia. Aplica comisión a todas o seleccionadas vía `POST /api/mantenedor/familias/comision-masiva`.
- Informe Comisiones — Cálculo por tipo: Comisión calculada como `neto × %` (tipo pct) o `cant × $fijo` (tipo fijo). Afecta KPIs, totales, subfamilias, vendedores y detalle de líneas. Badges muestran X.X% (verde) o $Y/u (azul).

v1.0.139 28 mayo 2026

- Comisiones — Movimientos por documento: El detalle expandible del vendedor muestra una fila por línea de factura/boleta (FAC-N° / BOL-N°), no por ítem. La suma del Subtotal cuadra exactamente con el neto del vendedor. Incluye fila de totales al pie.

v1.0.137 28 mayo 2026

- Topbar — Indicador de BD conectada: Después de la versión aparece el nombre de la conexión activa con punto verde (ok) o rojo (error). Tooltip con host, base de datos y usuario DB. Se refresca al cambiar de BD.

v1.0.135 28 mayo 2026

- Comisiones — Detalle de productos por vendedor: Cada fila de vendedor dentro de una subfamilia es expandible (▶). Al hacer click carga bajo demanda los productos del período para ese vendedor y familia: código, nombre, cantidad, precio unit., neto y comisión. Los datos se cachean en el DOM.

v1.0.132 28 mayo 2026

- Comisiones — KPI "Neto s/Comisión": 5° tarjeta que muestra Neto Final − Comisión Total.
- Comisiones — Info origen de datos: Botón colapsable "ℹ ¿Cómo se calculan estos valores?" que explica FADSUBTOT, descuentos y ajuste proporcional por FANETO.
- Comisiones — Badge COM% en vendedores: Filas de vendedor dentro de subfamilias muestran el % de comisión efectivo. Solo aparecen en subfamilias con comisión configurada.

v1.0.130 28 mayo 2026

- Informes Comisiones — Desglose de vendedores por subfamilia: En la vista "Por familia", al expandir un grupo, cada subfamilia muestra qué vendedor aportó cuánto (neto bruto, descuento, neto final y comisión $).

v1.0.128 28 mayo 2026

- Informes Comisiones — Filtro "Todas / Solo con comisión": Botones toggle para mostrar todas las familias o solo las que tienen comisión configurada. La fila TOTAL refleja el filtro activo.
- Parámetros Familias — Filtro "Todas / Solo con comisión": Árbol de familias con toggle para mostrar solo familias con comisión (incluyendo padres cuya descendencia la tenga).

v1.0.122 28 mayo 2026
INFORMES
✓💰 Comisiones por familia: nuevo tab en Informes. Combina facturas y boletas del período. Toggles: con/sin descuentos, y heredar % comisión de raíz cuando subfamilia tiene 0%. Tabla agrupada por familia raíz con expansión, KPIs de neto bruto, neto final, descuento y comisión total.
v1.0.118 28 mayo 2026
VENTAS
✓Despachos — gráfico horario: distribución horaria cambiada a gráfico de líneas con marcadores SVG; colores por zona horaria. Sección horaria reubicada sobre "Transportes utilizados".
✗Despachos — error 500: GROUP BY alias inválido en MySQL, columnas opcionales no detectadas, duplicados en JOIN gecli. Reescrito endpoint de forma defensiva.
✗Despachos — ID duplicado: Diagnóstico y Despachos compartían IDs `vgd-spin`/`vgd-contenido`. Renombrados a `vgds-spin`/`vgds-contenido` para Despachos.
✗Despachos — caché: cambiar filtros principales ahora invalida `_vgDespachoData` para forzar recarga.
COTIZACIONES
✗Condiciones — label no actualizaba: "Condiciones de la Cotización" no cambiaba al modificar el título en Parámetros → Documentos. Corregido con `id="lbl-condiciones-doc"`.
FACTURAS
✓Ajustes UI: N° Factura en una sola línea (nowrap); filtro de vendedor muestra solo activos; paginación duplicada en la parte superior de la tabla.
v1.0.113 28 mayo 2026
PARÁMETROS
✓Documentos — títulos configurables: nuevo tab en Parámetros para renombrar el documento comercial (ej. Cotización → Nota de Venta). Vista previa en tiempo real; al guardar actualiza menú, historial, PDF, asunto y cuerpo de email.
FACTURAS
✗Duplicados por RUT duplicado en gecli: el listado mostraba la misma factura dos veces si el cliente tenía dos registros con el mismo RUT. Corregido consolidando gecli con MIN(CLINOM) GROUP BY CLIRUT.
VENTAS
✗Despachos — filtro vendedor: corregido ID de elemento incorrecto en cargarDespachoVG(); ahora respeta el filtro de vendedor y el override de usuarios no-admin.
v1.0.111 28 mayo 2026
VENTAS
✓Nuevo tab "Despachos": análisis logístico de pedidos con envío asignado (COENVIO). KPIs de ventana óptima/fuera, ranking de transportistas con barras y acordeón de clientes por transportista, distribución por región y gráfico de barras horario 00–23h coloreado por zona (verde = óptima 00–10h y 15–23h, amarillo = marginal 10h, rojo = fuera 11–14h).
v1.0.109 28 mayo 2026
VENTAS
✓Utilidad en Análisis de Clientes y Detalle: columna Utilidad (Neto − Costo) en el ranking de clientes con color verde/amarillo/naranja/rojo según margen, y KPI global de utilidad total. También en la tabla de ventas por factura/boleta con monto y % por fila. Costo desde `geitems_mae.ITCOSTO × cant.`; ítems sin maestro se valorizan con costo 0.
v1.0.107 28 mayo 2026
VENTAS
✓Tab Detalle — Panel Análisis de Clientes: dashboard colapsable encima de la tabla de ventas. Muestra KPIs (clientes únicos, documentos, neto total, ticket por cliente) y ranking top 10/20 con barras proporcionales, docs, ticket y % sobre total. Carga en paralelo con la tabla al aplicar filtros. Disponible por vendedor asignado para no-admin.
v1.0.105 28 mayo 2026
VENTAS
✓Geografía — filtro multi-vendedor: selector de checkboxes con todos los vendedores activos. Modo Combinado agrega todos los seleccionados en una consulta; modo Por vendedor realiza consultas paralelas y muestra una tarjeta por vendedor con sus propios KPIs, top regiones, top 10 comunas y acordeón. No-admin con vendedor asignado usa el override existente.
v1.0.103 28 mayo 2026
VENTAS
✓Nuevo tab Geografía de Ventas: análisis por región y comuna usando `gecli.CLIREG → gereg` y `gecli.CLICOM → gecom`. Incluye KPIs (regiones/comunas activas, % sin georeferencia), ranking top regiones y top 15 comunas, y acordeón expandible región → comunas con barra proporcional, neto, docs, ticket promedio y % sobre región y total. Neto bruto (sin NC). Fallback automático a `geciu` si `gereg`/`gecom` no existen.
✓Corrección Diagnóstico — descripciones en top precios: productos que no aparecían en el top-100 de mayor baja mostraban el código en lugar del nombre. Se corrigió construyendo el mapa de descripciones desde el universo completo de productos (no desde la lista recortada).
v1.0.101 27 mayo 2026
VENTAS
✓Nuevo tab Diagnóstico de Ventas: análisis comparativo entre dos años con 5 secciones — ① variación mensual, ② clientes perdidos/nuevos, ③ productos que dejaron de venderse, ④ ventas por vendedor, ⑤ análisis de precios (PPP, índice Laspeyres, descomposición Precio-Volumen-Descuento). Todos los netos reales descuentan las Notas de Crédito por período.
v1.0.99 27 mayo 2026
INFORMES / VENTAS
✓Informes — Productos más cotizados incluye sistema legado: el ranking combina `cot_detalle` con `gecot_det` + `gecot_enc` via UNION ALL, con nombres desde `geitems_mae`. El filtro de período aplica a ambos sistemas.
✓Ventas — Carga de vendedores robusta: endpoint `/api/ventas-gefac/vendedores` reescrito con dos consultas separadas (códigos primero, nombres después), eliminando el JOIN problemático. El frontend solo carga el dropdown cuando está vacío.
v1.0.95 27 mayo 2026
INVENTARIO
✓Vendedor en compradores del producto: la tabla de documentos en el panel lateral muestra la columna Vendedor, resuelta desde `gefac_enc.FAVEN` / `gebol_enc.BOLVEN` → `gevend`. Aparece solo cuando hay datos de vendedor.
v1.0.93 27 mayo 2026
VENTAS
✓Filtro unificado por vendedor: el dropdown de vendedor controla todo — KPIs, mapa de calor, ventas por día, franjas horarias, detalle y estadísticas anuales. Recarga automática al cambiar vendedor o tipo. Badge de filtro activo en el panel de estadísticas.
v1.0.92 27 mayo 2026
VENTAS / ESTADÍSTICAS
✓Filtro por vendedor en estadísticas: no-admin con vendedor asignado ve sus stats filtradas automáticamente. Badge 🔒 en panel de estadísticas. Valores siempre neto menos notas de crédito.
v1.0.90 27 mayo 2026
VENTAS
✓Multi-código de vendedor: usuarios con más de un código asignado (ej: "V001,V002") ven todas sus ventas filtradas por todos sus códigos en resumen, detalle, PDF, email y estadísticas anuales. El badge muestra "V001 / V002".
v1.0.79 27 mayo 2026
HISTORIAL
✓Filtro por vendedor (admin): el dropdown usa código de vendedor como valor; el backend resuelve los usuarios asociados en `cot_usuarios.cod_vendedor` para filtrar el sistema nuevo, y filtra `gecot_enc.COVEN` para el sistema legado.
v1.0.74 27 mayo 2026
COTIZACIÓN
✓Selector de sucursal: al buscar un cliente con sucursales (`CLISUC=1`), aparece un selector 🏢 con todas sus sucursales. Al elegir una, se rellenan automáticamente Dirección, Ciudad, Contacto, Email y Teléfonos con los datos de esa sucursal.
v1.0.73 27 mayo 2026
HISTORIAL
✓Filtro de vendedor no-admin corregido: `cot_cabecera.vendedor` guarda el nombre del usuario, no el código gefac. Ahora se envían dos parámetros separados: `usuario` (nombre del usuario → sistema nuevo) y `vendedor` (código gefac → sistema legado). El badge muestra "Nombre (cód: XXX)".
v1.0.72 27 mayo 2026
CLIENTES
✓Sucursales de clientes: los clientes con sucursales muestran botón 🏢; al hacer clic se expande la lista de sucursales inline (nombre, dirección, ciudad, contacto, email). Datos cargados en demanda.
v1.0.71 27 mayo 2026
FACTURAS
✓Corrección HTTP 500: el JOIN con tabla inexistente `geven` fue reemplazado por consulta separada y segura contra `gevend` (tabla correcta de vendedores).
v1.0.70 27 mayo 2026
USUARIOS
✓Vendedor(es) asociado(s): al crear/editar usuario se pueden asignar 1 o 2 códigos de vendedor. El historial de cotizaciones se filtra automáticamente para usuarios no-admin, mostrando solo sus documentos con badge indicador.
v1.0.69 27 mayo 2026
USUARIOS / PERMISOS
✓Permisos corregidos: los permisos (Ventas, Facturas, Inventario, Informes, Mi Empresa, etc.) no aparecían al iniciar sesión. Corregido en login y listado de usuarios.
✓Eliminar usuario: botón 🗑 en la tabla de usuarios para borrado permanente con confirmación.
v1.0.68 27 mayo 2026
FACTURAS EMITIDAS
✓Nueva página Facturas: listado paginado de facturas emitidas con filtros (período, vendedor, búsqueda libre), 4 KPIs (N° facturas, Neto, IVA, Total) y detalle de productos expandible por fila.
✓Acceso parametrizable: nuevo permiso "🧾 Facturas Emitidas" en administración de usuarios; cada usuario puede tener acceso habilitado individualmente.
✓Estadísticas Anuales — valores neto reales: el neto histórico, mensual y YTD ahora descuenta Notas de Crédito del período (`genc_enc`), igual que el "Neto Real" del informe de ventas.
v1.0.67 27 mayo 2026
HISTORIAL
✓Parciales corregido: Solo los ítems con `codfact = 0` se marcan PENDIENTE; los ya facturados se muestran atenuados.
✓Orden por N° cotización: Listado ordenado por número descendente por defecto (mayor = más reciente primero). Sort numérico correcto entre sistema nuevo y legado.
v1.0.66 27 mayo 2026
ESTADÍSTICAS
✓Valores netos: tabla, proyección y gráfico usan Neto (sin IVA). Se eliminaron columnas IVA y Total.
✓% vs mismo período: el año en curso compara contra Ene–[mes actual] del año anterior, con nota explicativa (*).
✓Imprimir / PDF: botón en el encabezado del panel imprime solo las estadísticas.
v1.0.65 27 mayo 2026
VENTAS
✓Tabs Análisis / Detalle: Dos pestañas bajo los KPIs. "Análisis" agrupa Heatmap, Barras y Estadísticas Anuales. "Detalle" muestra la tabla paginada de documentos. Vista más limpia y organizada.
v1.0.64 27 mayo 2026
VENTAS
✓Toggle formato numérico: Botón "# Real / MM" en Estadísticas Anuales. Por defecto muestra en millones (MM), al hacer clic muestra números reales completos.
v1.0.63 27 mayo 2026
VENTAS
✓Proyección base 1 año: Opción "1 año" agregada al selector de base de proyección en el panel de Estadísticas Anuales (ahora: 1, 2, 3, 4, 5 años).
v1.0.62 27 mayo 2026
VENTAS / CORRECCIÓN
✓Estadísticas Anuales y Proyección: Nuevo panel en Ventas con historial de 6 años, proyección del año en curso (base 2/3/4/5 años), 3 escenarios y gráfico mensual comparado. Caché de 24h.
✓Fix endpoint productos: Restaurado decorador de `GET /api/producto/{itcod}` que estaba ausente.
v1.0.60 27 mayo 2026
CORRECCIÓN / INFORMES
✓Login desbloqueado: Se eliminó una llave extra en `cargarInformes()` que causaba SyntaxError y dejaba el login atascado en "Verificando conexión…".
✓Botón Actualizar — feedback visual: Muestra spinner + "Procesando…" mientras carga, se deshabilita para evitar envíos duplicados y se restaura al terminar.
v1.0.57 27 mayo 2026
Módulo: Informes / WhatsApp
✓Corrección Informes — Actualizar y PDF Clientes: Las funciones estaban en scope local (dentro de `showPage()`) y los botones no las encontraban. Movidas al scope global.
✓WhatsApp con PDF adjunto: Al enviar cotización por WhatsApp, el PDF se descarga automáticamente. En móvil, se usa la Web Share API para adjuntarlo directamente. En escritorio, se descarga y se muestra aviso para adjuntarlo en la conversación.
v1.0.56 27 mayo 2026
Módulo: Inventario / Kardex
✓Lista de productos en Kardex: Nuevo botón "Lista" junto al buscador que abre un panel deslizante con todos los productos (paginado, buscable). Muestra código, descripción, familia y stock. Clic en un producto lo selecciona directamente. Se cierra con ×, clic fuera o Escape.
v1.0.55 27 mayo 2026
Módulo: Sistema / Email
✓Corrección SSL/TLS email (WRONG_VERSION_NUMBER): Se refactorizaron los 3 bloques SMTP del sistema con contexto SSL permisivo y fallback automático de STARTTLS a SSL implícito. Resuelve el error en servidores como `mail.allen.cl:587` que usan SSL implícito en lugar de STARTTLS.
v1.0.54 27 mayo 2026
Módulo: Informes / Ventas
✓Corrección SMTP email Reporte de Ventas (error 422): Se reescribió la resolución SMTP para usar el mismo patrón que el resto del sistema: `SMTP_CONFIG` global (desde `smtp_config.json`) con fallback a configuración personal del usuario en `cot_usuarios`. El código anterior buscaba en tablas de base de datos que no existen.
v1.0.53 27 mayo 2026
Módulo: Informes / Ventas
✓Corrección definitiva envío de email: Se eliminaron imports innecesarios (`httpx`, `Request`) dentro del endpoint de email que causaban "Internal Server Error". Se agregó `usuario_codigo` al fetch del modal para usar SMTP personal del usuario si está configurado.
v1.0.52 27 mayo 2026
Módulo: Informes / Ventas
✓Corrección envío de email (PDF adjunto): Se refactorizó la generación del PDF en `_generar_pdf_ventas_bytes()` retornando bytes directamente, eliminando el uso frágil de `body_iterator` async. El JS del modal ahora muestra el mensaje específico del error (SMTP, autenticación, etc.) en lugar del texto crudo.
v1.0.51 27 mayo 2026
Módulo: Informes / Ventas
✓PDF Reporte de Ventas — Resumen analítico: El PDF ahora incluye los 5 KPI cards, tabla de ventas por día de la semana, tabla de ventas por franja horaria y mapa de calor 6×17 con colores pastel, replicando la información analítica visible en pantalla antes del detalle de documentos.
v1.0.50 27 mayo 2026
Módulo: Informes / Ventas (nuevo)
✓Nuevo módulo Reporte de Ventas: KPIs (Documentos, Neto Real, IVA, Total Real, Ticket Promedio), mapa de calor día×hora, Analizador de Horario (Lun–Sáb 40h / Lun–Vie 40h), ventas por día y franja horaria, tabla paginada con detalle de ítems, filtros, exportación PDF y envío por email.
v1.0.49 26 mayo 2026
Módulo: Inventario
✓Corrección tabla Inventario (pestaña 1): El enlace de unidades vendidas ahora almacena las fechas del período en `data-desde`/`data-hasta` y escapa correctamente comillas en el código del producto.
✓Corrección Kardex — detección de campos cliente: `ITMCLI` ahora se reconoce como campo de RUT (no nombre), permitiendo que el Kardex resuelva el nombre del cliente desde `gecli`.
v1.0.48 26 mayo 2026
Módulo: Inventario
✓Corrección fechas en Panel de Compradores: Los enlaces de unidades vendidas guardan las fechas del período como atributos HTML, evitando que cambios posteriores en los filtros afecten la consulta.
✓Corrección códigos con comillas: Productos con comillas dobles en el código (ej. `ACL-1 1/2"304`) ya no generan atributos HTML rotos.
v1.0.47 26 mayo 2026
Módulo: Inventario
✓Corrección detección campo cliente (ITMCLI = RUT): `ITMCLI` almacena el RUT como entero, no el nombre. Corregida la clasificación para permitir el JOIN con `gecli` y obtener nombre, email, teléfono y contacto del cliente.
v1.0.46 26 mayo 2026
Módulo: Inventario
✓Corrección fuente de datos Panel de Compradores: Reescrito para usar `geitems_mov` (misma fuente que el contador de vendidos), garantizando consistencia con el número mostrado en la tabla.
✓TRIM en código de producto: Se aplica `TRIM()` en todas las consultas a `geitems_mov` para tolerar espacios en el código almacenado.
v1.0.45 26 mayo 2026
Módulo: Inventario
✓Panel Detalle de Clientes que Compraron: Panel deslizante lateral al hacer clic en unidades vendidas. Muestra KPIs (compradores únicos, unidades, documentos, precio promedio) y tabla de compradores con nombre, RUT, contacto, email, teléfono, unidades y última compra.
v1.0.44 25 mayo 2026
Módulo: Cotizaciones
✓Corrección Selector de Vendedor: Se solucionó un problema de sesión que ocultaba el botón ✏️ para usuarios autorizados, y se garantizó la recarga en tiempo real de la lista de vendedores activos para prevenir listas vacías.
v1.0.43 25 mayo 2026
Módulo: Cotizaciones / Usuarios
✓Cambio de Vendedor en Cotización: Se añadió un botón ✏️ en la pantalla de Nueva Cotización que permite reasignar libremente al vendedor exclusivo de esa venta.
✓Permisos Avanzados: Agregada casilla de "Cambiar Vendedor" en Parámetros -> Usuarios. Nota: Administradores y Superadmins tienen este permiso concedido por defecto.
v1.0.42 25 mayo 2026
Mejoras de UI y PDF
✓Filtro de Vendedores: Añadido un filtro por vendedor activo en el mantenedor de clientes (Parámetros / Clientes).
✓Exportación PDF: La tabla de productos exportada a PDF ahora tiene una nueva columna explícita `Desc.%` y muestra el P. Neto real.
✓Visualización P.Unit: Ajustado el motor UI para mostrar P.Unit bruto en los modales de previsualización de cotizaciones.
v1.0.41 25 mayo 2026
Módulo: Utilidad y Análisis
✓Recálculo de Totales: Se reestructuró la lógica matemática en el backend para calcular la Venta Neta, Costo Total y Utilidad sumando de forma rigurosa los subtotales reales (con descuentos aplicados) de cada producto.
v1.0.40 25 mayo 2026
Módulo: Cotizaciones - Visualización
✓Descuentos y Precio Neto: Al expandir una cotización o buscarla por número, ahora se muestran las columnas de descuentos (1 y 2) y el Precio Neto calculado para brindar mayor claridad.
v1.0.39 25 mayo 2026
Módulo: Cotizaciones - Utilidad
✓Utilidad con Descuentos y Recargos: El cálculo de utilidad contempla los descuentos. Si hay recargo, se agregó una casilla interactiva para sumar el recargo neto a la ganancia.
v1.0.38 25 mayo 2026
Módulo: Cotizaciones - Cotizaciones Parciales Legado
✓Cotizaciones Parciales Legado: Se integró el soporte para visualizar cotizaciones parciales del sistema antiguo.
✓Identificación Automática de Pendientes: El sistema lee CODFACT del ERP y marca automáticamente como pendientes.
✓Tooltip Pendientes Rápido: Flecha indicadora en el historial con ventana flotante al pasar el mouse mostrando productos pendientes.
v1.0.34 25 mayo 2026
Módulo: Cotizaciones
✓Decimales en descuentos: al tipear un descuento como `1.5`, el `oninput` llamaba `renderItemRow` que destruía y recreaba el input con `parseFloat("1.") = 1`, borrando el punto. Corregido: `renderItemRow` ya no destruye los inputs dto1/dto2 si tienen el foco — solo actualiza el monto.
v1.0.33 25 mayo 2026
Módulo: Parámetros — Árbol familias
✓Productos incluye subfamilias: al clickear 📦 en una familia padre, ahora se buscan los productos de esa familia y todos sus descendientes. El API filtra con `ITFAM IN (cod, subcod1, subcod2...)`. La tabla muestra la columna Familia para identificar a qué subfamilia pertenece cada producto. El pie indica cuántas subfamilias se incluyeron.
v1.0.32 25 mayo 2026
Diagnóstico desde app.py — correcciones definitivas
✓app.py — campo itfam agregado: el endpoint `/api/mantenedor/inventario` ahora incluye `"itfam"` en cada producto (código de familia de `geitems_mae.ITFAM`). Antes solo existía "familia" con el nombre descriptivo.
✓Árbol familias — filter eliminado: el frontend hacía `filter(p => p.itfam === famCod)` sobre el resultado, pero `p.itfam` no existía en el response → siempre devolvía 0 productos. El API ya filtra con `ITFAM IN (...)`, se usa directamente `data.productos`.
✓Toggle vendedor — código limpio: confirmado con app.py que el backend devuelve `activo: int(VENEST)` y el PUT espera `activo`. Eliminado el campo `venest` del frontend que era incorrecto y confundía el flujo.
v1.0.31 25 mayo 2026
Módulo: Parámetros
✓Estado vendedor desde VENEST: el frontend ahora lee `v.venest` (campo real de `gevend.VENEST`) con fallback a `v.activo`. El PUT envía ambos campos para compatibilidad.
✓Árbol familias — carga bajo demanda: el árbol carga solo las familias (rápido). Cada familia tiene botón 📦 Productos que hace el fetch al momento de hacer clic, filtrando por `geitems_mae.ITFAM`. El botón muestra el conteo al cargar y actúa como toggle para ocultar/mostrar.
v1.0.30 25 mayo 2026
Módulo: Parámetros
✓Toggle estado vendedor: robustecida la función. Se normaliza `activo` como `parseInt` para evitar que llegue como string. La comparación de `cod` ahora usa `String()` en ambos lados. Se usa `encodeURIComponent` en la URL del PUT.
✓Árbol familias — campos corregidos: se usaban `p.precio1` y `p.estado` que no existen en el API. Corregido a `p.precios['1']` y `p.activo`, que son los nombres reales que devuelve `/api/mantenedor/inventario`.
v1.0.29 25 mayo 2026
Módulo: Cotizaciones — Correcciones v1.0.27
✓limpiarFormulario(): función implementada completamente. Resetea cliente, ítems, campos, borrador localStorage, número y rehabilita botón Guardar.
✓Decimales por UM: implementado correctamente. UM enteras (UN, PZA, CAJA, etc.) bloquean decimales y muestran aviso. UM continuas (MT, KG, LT, etc.) aceptan decimales con step 0.01.
✓Índices de columnas en renderItemRow: corregido bug donde los índices estaban corridos — afectaba actualización de color stock, precio unitario, dto1, dto2 y subtotal al editar cantidad.
✓Autocompletado con event delegation: eliminado `JSON.stringify` en onclick. Ahora usa caché `_acCache` + `data-*`. Funciona con cualquier descripción sin importar comillas o caracteres especiales.
v1.0.28 25 mayo 2026
Módulo: Parámetros
✓Toggle estado vendedor: corregido bug donde al marcar inactivo el estado siempre quedaba activo. Ahora cambia correctamente.
✓Días de validez: valor por defecto cambiado de 30 a 7 días. Agregadas funciones `cargarValidez()` y `guardarValidez()` que faltaban.
✓Árbol de familias con productos: al expandir una familia hoja, se muestran los productos asociados con código, descripción, precio L1, stock y estado.
✓Tab Versión — Historial: agregado panel de historial de actualizaciones visible en Parámetros → Versión.
v1.0.27 24 mayo 2026
Módulo: Cotizaciones
✓Limpiar Formulario: creada función `limpiarFormulario()` que reinicia cliente, ítems y caché (localStorage).
✓Decimales por UM: validación de cantidad según si la UM es entera (UN, PZA) o acepta decimales (MT, KG, LT).
✓Precio Unitario y Descuentos: reparado desfase de columnas al cambiar cantidad de un ítem.
✓Decimales en Descuentos: corregido bloqueo al escribir valores como 1.5 en campos de descuento.
✓Clic en autocompletado: corregido error de sintaxis HTML por comillas en descripciones de productos.
Módulo: Inventario y Catálogo
✓Búsqueda multi-palabra: backend actualizado en `/api/productos` y `/api/mantenedor/inventario`. Búsqueda desordenada: "CABLE BLANCO" encuentra "CABLE 2MM BLANCO".
El historial refleja los cambios aplicados al frontend (`kognit.html`) y backend (`app.py`).
Nueva Familia
Código * El nivel se determina por la longitud del código
Descripción *
N° orden
Tipo de comisión
% sobre venta $ fijo por unidad
Comisión %
$ por unidad vendida
⭐ Comisiones especiales por vendedor

Solo para vendedores que cobran distinto al valor por defecto de la familia. Los no listados usan el valor de arriba.

☑ Seleccionar grupo de vendedores

Marca los vendedores y define la comisión a aplicarles. Luego podrás editar cada uno.

Tipo
Valor
Marcar todos
Nuevo Cliente
RUT *
Nombre *
Giro
Dirección
Ciudad
Email
Teléfono
Celular
Contacto
Lista precio (1-15)
Descuento %
Condición pago
Nuevo Vendedor
Código *
Nombre *
Celular
Teléfono
Estado
🔐 Autorizar cotización

Para activar la cotización se requiere clave de administrador.

Clave de administrador
🔍 Detalle de cotización

Ingresa un número de cotización

🔐
Acceso Restringido
Ingresa tu PIN de seguridad para continuar
Configuración del sistema
¿Qué es esto? El sistema revisa una URL en internet con la última versión publicada. Si hay una más nueva, te avisa y la instalas con un clic (descarga, verifica y reinicia los servicios). Las tablas nuevas de la base de datos se crean solas; tus datos y configuraciones no se tocan.
Versión instalada: —
URL del manifiesto (latest.json)
Formato del manifiesto (lo subes a tu hosting junto al ZIP del código):

    {
      "version": "1.0.540",
      "url": "https://tudominio.cl/updates/kognit_1.0.540.zip",
      "sha256": "<hash sha256 del zip>",
      "notas": "Que cambió",
      "obligatoria": false
    }

Por seguridad: la descarga se verifica con el SHA256 antes de aplicar. Solo el superadmin puede actualizar.
¿Para qué? Atender varias empresas en el mismo equipo, cada una con su URL, login, logo y datos por separado. Hay dos formas: cambiar la base de datos activa (1 empresa a la vez) o levantar un servicio por empresa (todas a la vez). Abajo el paso a paso de cada una.

### Opción 1 · Varias BD, una instancia (simple, 1 a la vez)

Tú administras y vas cambiando la empresa activa. Cada empresa trae sus datos desde su base (geparam) y su logo por base de datos.

1. En 🗄 Bases de datos (arriba), agrega una conexión por empresa (host, base, usuario, clave).
2. Marca como activa la empresa con la que quieres trabajar.
3. Ve a Parámetros → Mi Empresa y sube el logo de esa empresa (queda como `logo_<base>`).
4. Los datos (nombre, RUT, dirección) salen solos de geparam de esa base.
5. Para cambiar de empresa, vuelve a 🗄 Bases de datos y activa otra.

⚠ Es una empresa a la vez para todos los usuarios. Si necesitas que cada empresa entre a la vez con su propia URL, usa la Opción 2.

### Opción 2 · Un servicio por empresa (recomendada)

Mismo código, pero cada empresa corre en su propio puerto con su carpeta de datos (logo, conexiones, SMTP, todo separado) y su URL.

1. Crea una carpeta de datos por empresa, ej:
   C:\GW_datos\empresaA\
   C:\GW_datos\empresaB\
2. En cada carpeta copia `.secret.key` (el mismo, para descifrar) y un `conexiones.json` apuntando a la base de esa empresa.
3. Instala un servicio por empresa (carpeta `instalacion\`, como administrador). Puedes pasar los datos o dejar que te pregunte el puerto:
   REM te pregunta nombre, puerto y carpeta:
   servicio_instalar_empresa.bat
   REM o todo de una:
   servicio_instalar_empresa.bat EmpresaA 8001 C:\GW_datos\empresaA
   Crea `GestionWeb_EmpresaA` (puerto que elijas) con su `GW_DATA_DIR`. Avisa si el puerto ya está en uso.
4. Publica con Caddy (un subdominio por empresa → su puerto, HTTPS automático):
   empresaa.tudominio.cl {
   reverse_proxy localhost:8001
   }
   empresab.tudominio.cl {
   reverse_proxy localhost:8002
   }
5. Cada empresa entra a su URL, sube su logo (Parámetros → Mi Empresa) y configura sus datos sin ver la otra.
6. Para agregar otra empresa: repite con una carpeta nueva y un puerto nuevo (8003, 8004…).

Para quitar una: `servicio_desinstalar_empresa.bat EmpresaA`. Plantillas en `instalacion\Caddyfile.ejemplo` y guía completa en `instalacion\LEEME_MULTIEMPRESA.txt`.
¿Qué se separa por empresa (Opción 2)? Los datos (carpeta `GW_DATA_DIR`): `conexiones.json`, `.secret.key`, `smtp_config.json`, `logos_bd.json` / `logo_*.*`, `app_config.json`, `ftp_config.json`, `sii_config.json`, etc. Se comparte el código (`kognit.html`, íconos). Si no defines `GW_DATA_DIR`, funciona como siempre (mono-empresa).
¿Qué es esto? Define con qué motor esta empresa emite la factura electrónica. Cada empresa puede usar uno distinto: facturacion.cl (vía el programa `dte_plano` con archivos TXT) o LibreDTE (por API). Al emitir, Kognit usa el motor elegido y actualiza el ERP (`gefac_enc/gefac_det/geitems_mov` y el stock).
Proveedor de facturación (DTE)
Carpeta de intercambio de `dte_plano`
Kognit deja ahí el TXT de la factura y lee de vuelta el resultado que sube facturacion.cl.
URL de la API LibreDTE Token / hash RUT emisor
Al emitir, descontar el stock (`geitems_mae`) y registrar el movimiento (`geitems_mov`)
⚙️ Esto es la configuración del selector. La emisión real (escribir en el ERP) se activa una vez validada la previsualización de abajo contra una factura real de gestion2006.
📝 Observaciones fijas de la factura
Se imprimen en el documento como líneas 2 y 3 de las observaciones (códigos 100011 y 100012). Si quedan vacías, se usan las notas de la cotización.
Observación 2 (código 100011) Observación 3 (código 100012)
🔍 Previsualizar factura desde una cotización (no escribe nada)
N° cotización (CONRO)
¿Para qué sirve esto? Publicar el sistema en `https://app.graficanet.cl` con candado verde, para que funcione la cámara/foto de seguridad y la PWA desde celulares. El sistema sigue corriendo en este equipo (puerto 8000); Caddy solo le pone el HTTPS por delante. No se toca tu correo ni tu hosting actual.
📌 Datos de tu conexión (detectados)

IP pública | 190.22.158.228 (pública real, sí permite abrir puertos)
IP local del PC | 192.168.0.160 (Wi-Fi)
Router | 192.168.0.1
Puerto de Kognit | 8000 (interno, NO se abre a internet)
Subdominio objetivo | app.graficanet.cl

⚠️ Tu IP pública de casa puede cambiar sola (es dinámica). Por eso apunta el subdominio con un CNAME a tu DDNS (que se actualiza solo), no con una IP fija.
Paso 1 · Reservar la IP local del PC en el router
Entra al router (`192.168.0.1`) → sección DHCP → fija que este PC sea siempre 192.168.0.160 (DHCP reservation). Si no, el Wi-Fi puede darle otra IP mañana y se rompe el reenvío.
Paso 2 · Abrir puertos 80 y 443 en el router (Port Forwarding)
En el router, sección Port Forwarding / Virtual Server, crea dos reglas hacia `192.168.0.160`:

- Externo 80 → 192.168.0.160 : 80
- Externo 443 → 192.168.0.160 : 443

El puerto 8000 NO se abre. Caddy es el único que mira a internet.
Paso 3 · Apuntar el subdominio (en smarthost, NO se mueven nameservers)
El subdominio debe apuntar a tu DDNS (que mantiene tu IP pública al día). Hay dos caminos según dónde esté tu DDNS:
🅰️ Reutilizar un DDNS existente
Solo si ese DDNS está en un equipo de esta misma red (mismo router 192.168.0.1). Reflejará esta IP pública.

    CNAME   app.graficanet.cl   →   tu-ddns-actual.ddns.net

🅱️ Crear un DDNS nuevo dedicado a este PC · ✅ recomendado si no estás seguro

1. Cuenta gratis en DuckDNS o No-IP → eliges un hostname (ej. `kognit-casa.duckdns.org`).
2. Instalas su actualizador en este PC (mantiene tu IP al día aunque cambie).
3. En smarthost creas el CNAME al DDNS nuevo:

    CNAME   app.graficanet.cl   →   kognit-casa.duckdns.org

Queda independiente del otro equipo: si ese se apaga o se mueve, a ti no te afecta.
Si tu IP fuera fija, en vez de CNAME sería un registro A → 190.22.158.228. Lo demás (puertos, Caddy) es idéntico en ambas opciones.
Paso 4 · Instalar Caddy en este equipo (Windows)

    winget install --id CaddyServer.Caddy

Abre una terminal nueva y verifica con `caddy version`.
Paso 5 · Crear el Caddyfile (3 líneas)
Crea un archivo llamado `Caddyfile` (sin extensión) con esto:

    app.graficanet.cl {
        reverse_proxy http://localhost:8000
    }

Paso 6 · Levantar Caddy (saca el HTTPS solo)

    caddy run

Caddy va solo a Let's Encrypt y deja `app.graficanet.cl` con candado verde. Para dejarlo siempre activo (servicio):

    caddy start

✅ Cómo se usa una vez listo

- Desde afuera o con cámara/foto: `https://app.graficanet.cl`
- En la misma red (rápido, sin cámara): `http://192.168.0.160:8000`
- Servidor apagado: nadie entra (salvo lo cacheado en modo offline). Este equipo debe estar encendido.

⚠️ Cambiar el estado escribe en el ERP (gepagos_ant.PAESTADO): CO = cobrado, PE = pendiente. Cada cambio queda auditado (quién/cuándo).
Buscar (cliente / RUT)
Estado
⚠️ Cambiar la base de datos activa afecta a todos los usuarios conectados. Hazlo en horarios de baja actividad.

Cargando conexiones...

📴 Modo sin conexión (app instalable / PWA)
Cuando está activo, el sistema se puede instalar y abre sin internet (carga la última versión guardada). Las acciones que necesitan datos siguen requiriendo conexión. La nota de venta local se guarda con su botón propio.
Activo
🧭 Disposición del menú
Elige cómo se muestra el menú principal en pantallas grandes: Arriba (barra horizontal) o Lateral (columna a la izquierda). En pantallas chicas siempre se colapsa en el botón ☰. Aplica a todos los usuarios.
⚡ Caché del inventario
Acelera el listado guardando una copia en memoria por unos segundos. Si tu servidor es rápido puedes desactivarla y mostrar siempre datos en vivo. Con caché, el stock/precio puede tardar hasta la duración indicada en reflejar cambios hechos directo en el ERP.
Activa
Duración (segundos)
🧩 Módulos del menú
Activa/desactiva qué módulos aparecen y ordénalos con ↑ ↓. Aplica a todos los usuarios. (Un módulo igual no se mostrará a quien no tenga permiso según su rol.)
📂 Grupos del menú (submenús)
Agrupa módulos en menús colapsables. Cada grupo tiene un ícono y un título; marca los módulos que contiene. Los módulos no asignados a ningún grupo aparecen como botones directos. Un módulo solo puede estar en un grupo (gana el primero).
🏷 Nombres de pestañas
Personaliza el nombre de las pestañas de Informes y Documentos emitidos. Deja en blanco para usar el nombre por defecto.
Nueva Conexión
Nombre descriptivo *
Host / IP *
Puerto *
Base de datos *
Usuario *
Contraseña (cifrada AES-128)
Dejar vacío para no cambiar (al editar)
📮 Proveedor de correo
💡 Gmail: requiere una contraseña de aplicación (no tu clave normal). Actívala en: Cuenta Google → Seguridad → Verificación en 2 pasos → Contraseñas de aplicaciones
👤 Cuenta
Dirección de correo *
Nombre para mostrar
Contraseña de aplicación *
Para Gmail: usa la contraseña de aplicación de 16 caracteres, no tu clave de Google
🖥 Servidor SMTP saliente
Servidor SMTP *
Puerto *
Usar TLS / STARTTLS Puerto 587 · Recomendado Usar SSL directo Puerto 465
🟢 En línea ahora

Estado | Usuario | Equipo / IP | Conexión | Última actividad | Desconexión | Acción
--- | --- | --- | --- | --- | --- | ---
Cargando…

Historial de conexiones al sistema
Equipo origen → servidor destino · Ordenado por más reciente

Fecha / Hora | Usuario | 🖥️ Equipo origen | IP origen | 🗄️ Servidor BD | Base de datos
--- | --- | --- | --- | --- | ---
Cargando sesiones...

📷 Foto al solicitar acceso
Pedir una fotografía al equipo que solicita acceso (requiere cámara y consentimiento)
Texto legal / consentimiento
⚠ La captura de cámara solo funciona en HTTPS o localhost y requiere permiso del navegador. Si no hay cámara, la solicitud se envía sin foto.
🔐 Historial de accesos al sitio
Solicitudes de autorización de dispositivos: aprobadas, rechazadas, pendientes y expiradas.
🔑 Cambiar PIN de Seguridad
PIN actual
Nuevo PIN (mínimo 4 dígitos)
Confirmar nuevo PIN
Datos de la Empresa
Razón Social / Nombre
RUT Empresa
Teléfono
Dirección
Email
Ruta del Logo Ruta absoluta al archivo PNG o JPG en el servidor donde corre FastAPI
Vista previa logo
Catálogo de Productos
Buscar
Familia
Stock

Código ↕ | Descripción ↕ | U.M. | Stock ↕ | Precio ↕ | Agregar
--- | --- | --- | --- | --- | ---
Cargando productos...

Buscar Cliente

Ingrese al menos 2 caracteres para buscar

📍 Ubicación en Bodega

Cargando...

🔀 Productos con códigos alternativos
Incluir inactivos

Cargando…

🛒 Últimas compras de
Desde Hasta

Cargando…

Cotización

Cargando...

📧 Enviar Cotización por Email
Cotización
Remitente
?
—
—
Global
Destinatario *
Asunto
Mensaje adicional
Enviar por WhatsApp
Cotización
Número WhatsApp del cliente *
Ingresa solo dígitos, sin espacios ni guiones
Guardar en ficha del cliente
Mensaje El enlace al PDF se incluye automáticamente al final
Si configuraste la URL pública (FTP), se envía el enlace al PDF en el hosting (y la clave si está protegido). Si no, en móvil el PDF se adjunta al compartir y en escritorio se descarga para adjuntarlo.
↻

Nueva versión disponible

Verificando...

Imprimir reporte de reposición
Vista previa del reporte Cargando información...
Incluir resumen de tarjetas Incluir tabla detallada
Enviar reporte por email
Destinatario
Asunto
Mensaje
El PDF del reporte se adjunta automáticamente
Desde Hasta
Documentos
—
—
Neto Real (FAC+BOL−NC)
—
—
IVA
—
Total Real (c/IVA−NC)
—
—
Ticket Prom.
—
—
Mapa de calor — Ventas por día y hora
Cargando...
Sin ventas
Máximo
Analizador de Horario
Cargando análisis...
Ventas por día de la semana
Ventas por franja horaria
Estadísticas Anuales y Proyección —
Base de proyección:
Histórico anual

Año | Neto | Docs | vs Ant. *
--- | --- | --- | ---
Cargando...

Proyección año en curso
Cargando...
Ventas mensuales comparadas
Cargando...
Año a analizar Comparar vs
⏳ Calculando…
Vendedores
Vendedor asignado
Modo:
⏳ Calculando…
Cargando…
▾ 🚚 Despachos de la semana
🧾 Cotizaciones por facturar
Análisis de Clientes
⏳
Detalle de ventas

Fecha | Hora | Tipo | N° | Cliente | RUT | Vendedor | Neto | Total | Utilidad | Productos
--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
Cargando...

—
🚚 Pantalla de Despachos
Editar estados
Detalle de productos

Código | Descripción | Cant. | P. Unit. | Subtotal
--- | --- | --- | --- | ---

✉ Enviar Reporte de Ventas
Destinatario
Asunto
Mensaje
El PDF del reporte se adjunta automáticamente
📴 Estás trabajando sin conexión

Se perdió el acceso a internet, pero puedes seguir trabajando con los datos descargados en este equipo:

- Busca productos y clientes normalmente: se usan los datos guardados localmente.
- Crea documentos con el botón "Nota de venta (local)": quedan en la bandeja 📥.
- Genera el PDF desde la bandeja (botón PDF) para imprimir o guardar.
- Al volver internet, las notas se suben solas al ERP (sin duplicar) y el catálogo se actualiza.

Consejo: antes de salir a terreno, abre la app con wifi y pulsa "⬇️ Actualizar datos" en la bandeja para tener todo al día.

📴 Notas de venta locales

Notas guardadas en este equipo. Al haber conexión se envían al ERP; cada una lleva un identificador único para no duplicarse aunque se reintente.

📦 Datos offline (catálogo y clientes)
Sin descargar todavía.

## Política de Privacidad y Uso de Datos