v20260526-0314
id="login-screen" style="display:none;position:fixed;inset:0;background:var(--bg);z-index:1000;align-items:center;justify-content:center;flex-direction:column;gap:24px">
v20260526-0314
style="font-family:'Fraunces',serif;font-size:32px;font-weight:600;color:var(--accent)">taller.cr
v20260526-0314
id="login-step1" style="background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:32px;width:380px;display:flex;flex-direction:column;gap:16px">
v20260526-0314
style="font-family:'Fraunces',serif;font-size:18px;font-weight:300;color:var(--text);margin-bottom:4px">Iniciar sesión
v20260526-0314
class="form-group">
Correo electrónico
v20260526-0314
class="form-group">
Contraseña
v20260526-0314
id="login-error" style="color:var(--danger);font-size:12px;display:none">
Entrar
v20260526-0314
id="login-step2" style="background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:32px;width:380px;display:none;flex-direction:column;gap:16px">
v20260526-0314
style="font-family:'Fraunces',serif;font-size:18px;font-weight:300;color:var(--text);margin-bottom:4px">Doble autenticación
Ingresá el código de 6 dígitos de tu app Authenticator.
v20260526-0314
id="totp-error" style="color:var(--danger);font-size:12px;display:none">
Verificar
← Volver
v20260526-0314
id="login-step3" style="background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:32px;width:420px;display:none;flex-direction:column;gap:16px">
v20260526-0314
style="font-family:'Fraunces',serif;font-size:18px;font-weight:300;color:var(--text);margin-bottom:4px">Configurar Authenticator
Primera vez: escaneá este código QR con Microsoft Authenticator o Google Authenticator.
v20260526-0314
id="totp-qr" style="display:flex;justify-content:center;padding:16px;background:white;border-radius:8px">
Después de escanear, ingresá el código de 6 dígitos:
v20260526-0314
id="setup-totp-error" style="color:var(--danger);font-size:12px;display:none">
Confirmar y entrar
v20260526-0314
id="app-shell" style="display:none">
v20260526-0314
class="logo">taller.cr
v20260526-0314
class="header-actions">
v20260526-0314
id="save-indicator" style="display:none;align-items:center;gap:6px;padding:5px 10px;background:var(--surface);border:1px solid var(--border);border-radius:20px;font-size:11px;color:var(--muted);transition:all 0.3s">
Guardando...
v20260526-0314
id="presence-indicator" style="display:none;align-items:center;gap:6px;padding:5px 10px;background:var(--surface);border:1px solid var(--border);border-radius:20px;font-size:11px;color:var(--muted)">
Solo vos
☁ Sincronizar
⬇ Exportar Excel
⏏ Salir
v20260526-0314
class="tab-bar">
📄 Facturas recibidas
🔧 Órdenes de trabajo
👤 Clientes
📦 Inventario
🏭 Gastos generales
⚙ Configuración
🧾 Facturación
📊 Reportes
v20260526-0314
class="tab-content active" id="tab-facturas">
v20260526-0314
style="display:flex;gap:10px;align-items:stretch;margin:16px 32px 0">
v20260526-0314
id="drop-zone" style="margin:0;flex:1;padding:16px 24px">
📂
Arrastrá tus facturas XML aquí
Formato Hacienda CR · Múltiples archivos
v20260526-0314
style="display:flex;flex-direction:column;justify-content:center;gap:6px;min-width:140px">
✏️ Factura manual
Sin factura electrónica
v20260526-0314
style="margin:0 32px 0">
v20260526-0314
class="stats-bar" id="stats-facturas" style="margin-top:12px">
v20260526-0314
class="stat-card">v20260526-0314
class="stat-label">Facturasv20260526-0314
class="stat-value neutral" id="stat-count">0
v20260526-0314
class="stat-card">v20260526-0314
class="stat-label">Subtotalv20260526-0314
class="stat-value" id="stat-subtotal">₡0
v20260526-0314
class="stat-card">v20260526-0314
class="stat-label">IVA totalv20260526-0314
class="stat-value" id="stat-tax">₡0
v20260526-0314
class="stat-card">v20260526-0314
class="stat-label">Total generalv20260526-0314
class="stat-value" id="stat-total">₡0
v20260526-0314
class="toolbar" id="toolbar-facturas">
Todas
○ Pendientes
✓ Registradas
📦 Archivadas
Fecha ↕
Total ↕
v20260526-0314
class="table-wrap" id="table-facturas" style="display:none">
Número Fecha Proveedor
Subtotal IVA
Total Moneda Estado
v20260526-0314
class="empty-msg" id="empty-facturas">No hay facturas que coincidan.
v20260526-0314
class="tab-content" id="tab-ordenes">
v20260526-0314
style="display:flex;justify-content:space-between;align-items:center;margin:24px 32px 16px">
v20260526-0314
style="font-family:'Fraunces',serif;font-size:18px;font-weight:300;color:var(--text)">Órdenes de trabajo
+ Nueva orden
v20260526-0314
class="stats-bar" id="stats-ot">
v20260526-0314
class="stat-card">v20260526-0314
class="stat-label">Totalv20260526-0314
class="stat-value neutral" id="ot-stat-count">0
v20260526-0314
class="stat-card">v20260526-0314
class="stat-label">En procesov20260526-0314
class="stat-value" style="color:var(--orange)" id="ot-stat-abiertas">0
v20260526-0314
class="stat-card">v20260526-0314
class="stat-label">Cotizacionesv20260526-0314
class="stat-value" style="color:var(--blue)" id="ot-stat-cerradas">0
v20260526-0314
class="stat-card">v20260526-0314
class="stat-label">Costo comprasv20260526-0314
class="stat-value" id="ot-stat-costo">₡0
v20260526-0314
class="toolbar visible" id="toolbar-ordenes">
Todas
Cotizaciones
En proceso
Proforma pendiente
Completadas
✕ Canceladas
v20260526-0314
class="table-wrap" id="table-ordenes" style="display:none">
OT #
Fecha
Cliente
Placa / Activo
Modelo
Tipo Detalle
Proforma
Monto proforma
Costo compras
Estado
v20260526-0314
class="empty-msg" id="empty-ordenes">No hay órdenes. Creá la primera con el botón de arriba.
v20260526-0314
class="modal-overlay" id="modal-ot">
v20260526-0314
class="modal">
v20260526-0314
class="modal-header">
Nueva orden de trabajo
✕
v20260526-0314
class="modal-body">
v20260526-0314
class="form-grid">
v20260526-0314
class="form-group">
Fecha de ingreso
v20260526-0314
class="form-group full">
Tipo de servicio (seleccioná uno o varios)
v20260526-0314
id="ot-tipo-picker" style="display:flex;flex-wrap:wrap;gap:6px;margin-top:4px">
v20260526-0314
id="ot-tipo-error" style="display:none;color:var(--danger);font-size:11px;margin-top:4px">Seleccioná al menos un tipo
v20260526-0314
class="form-group" style="position:relative">
Cliente
v20260526-0314
id="ot-cliente-dropdown" style="display:none;position:absolute;top:100%;left:0;right:0;z-index:300;
background:var(--surface);border:1px solid var(--accent);border-top:none;border-radius:0 0 var(--radius) var(--radius);
max-height:200px;overflow-y:auto;box-shadow:0 8px 24px rgba(0,0,0,0.4)">
+ Crear nuevo cliente
v20260526-0314
class="form-group">
Placa / Activo
v20260526-0314
class="form-group full">
Marca y modelo
v20260526-0314
class="form-group full">
Detalle de la reparación
v20260526-0314
class="form-group">
N° de proforma
v20260526-0314
class="form-group">
Monto de proforma
v20260526-0314
class="lineas-section">
Líneas de factura a vincular
v20260526-0314
id="lineas-picker-wrap">
v20260526-0314
class="modal-footer">
Cancelar
Guardar orden
v20260526-0314
class="tab-content" id="tab-clientes">
v20260526-0314
style="display:flex;justify-content:space-between;align-items:center;margin:24px 32px 16px">
v20260526-0314
style="font-family:'Fraunces',serif;font-size:18px;font-weight:300;color:var(--text)">Clientes
+ Nuevo cliente
v20260526-0314
class="stats-bar" id="stats-clientes">
v20260526-0314
class="stat-card">v20260526-0314
class="stat-label">Totalv20260526-0314
class="stat-value neutral" id="cl-stat-total">0
v20260526-0314
class="stat-card">v20260526-0314
class="stat-label">Particularesv20260526-0314
class="stat-value" style="color:var(--blue)" id="cl-stat-part">0
v20260526-0314
class="stat-card">v20260526-0314
class="stat-label">Empresasv20260526-0314
class="stat-value" style="color:var(--warn)" id="cl-stat-emp">0
v20260526-0314
class="toolbar visible" id="toolbar-clientes">
Todos
Particulares
Empresas
v20260526-0314
class="table-wrap" id="table-clientes" style="display:none">
v20260526-0314
class="empty-msg" id="empty-clientes">No hay clientes. Creá el primero con el botón de arriba.
v20260526-0314
class="modal-overlay" id="modal-cliente">
v20260526-0314
class="modal" style="max-width:420px">
v20260526-0314
class="modal-header">
Nuevo cliente
✕
v20260526-0314
class="modal-body">
v20260526-0314
class="form-grid" style="grid-template-columns:1fr">
v20260526-0314
class="form-group">
Nombre
v20260526-0314
class="form-group">
Tipo
Particular
Empresa
v20260526-0314
class="modal-footer">
Cancelar
Guardar cliente
v20260526-0314
class="tab-content" id="tab-inventario">
v20260526-0314
style="display:flex;justify-content:space-between;align-items:center;margin:24px 32px 16px">
v20260526-0314
style="font-family:'Fraunces',serif;font-size:18px;font-weight:300;color:var(--text)">Inventario
v20260526-0314
class="stats-bar" id="stats-inv">
v20260526-0314
class="stat-card">v20260526-0314
class="stat-label">Ítemsv20260526-0314
class="stat-value neutral" id="inv-stat-items">0
v20260526-0314
class="stat-card">v20260526-0314
class="stat-label">En stockv20260526-0314
class="stat-value" id="inv-stat-stock">0
v20260526-0314
class="stat-card">v20260526-0314
class="stat-label">Sin stockv20260526-0314
class="stat-value" style="color:var(--danger)" id="inv-stat-zero">0
v20260526-0314
class="stat-card">v20260526-0314
class="stat-label">Valor totalv20260526-0314
class="stat-value" id="inv-stat-valor">₡0
v20260526-0314
style="display:flex;justify-content:space-between;align-items:center;margin:0 32px 12px">
+ Ítem manual
⬆ Importar JSON
v20260526-0314
class="toolbar visible" id="toolbar-inv">
Todos
Con stock
Sin stock
📦 Archivados
v20260526-0314
class="table-wrap" id="table-inv" style="display:none">
Código CABYS Descripción Proveedor
Stock
Último costo unit.
Valor stock
Última entrada
v20260526-0314
class="empty-msg" id="empty-inv">No hay ítems en inventario. Ingresá líneas de factura desde la pestaña Facturas.
v20260526-0314
class="tab-content" id="tab-gastos">
v20260526-0314
style="display:flex;justify-content:space-between;align-items:center;margin:24px 32px 16px">
v20260526-0314
style="font-family:'Fraunces',serif;font-size:18px;font-weight:300;color:var(--text)">Gastos generales del taller
v20260526-0314
class="stats-bar visible" id="gg-stats" style="margin:0 32px 20px">
v20260526-0314
class="stat-card">v20260526-0314
class="stat-label">Total registrosv20260526-0314
class="stat-value neutral" id="gg-stat-count">0
v20260526-0314
class="stat-card">v20260526-0314
class="stat-label">Subtotalv20260526-0314
class="stat-value" id="gg-stat-sub">₡0
v20260526-0314
class="stat-card">v20260526-0314
class="stat-label">IVAv20260526-0314
class="stat-value" style="color:var(--warn)" id="gg-stat-iva">₡0
v20260526-0314
class="stat-card">v20260526-0314
class="stat-label">Totalv20260526-0314
class="stat-value" id="gg-stat-total">₡0
v20260526-0314
class="toolbar visible" style="margin:0 32px 14px;gap:10px">
Todos los meses
Enero Febrero Marzo
Abril Mayo Junio
Julio Agosto Septiembre
Octubre Noviembre Diciembre
v20260526-0314
class="table-wrap" id="table-gg" style="margin:0 32px 32px;display:none">
Fecha Proveedor Descripción
Subtotal
IVA
Total
Moneda
v20260526-0314
class="empty-msg" id="empty-gg">No hay gastos generales registrados. Marcá líneas de factura como "🏭 Gasto" desde la pestaña de Facturas.
v20260526-0314
class="tab-content" id="tab-config">
v20260526-0314
style="display:flex;justify-content:space-between;align-items:center;margin:24px 32px 16px">
v20260526-0314
style="font-family:'Fraunces',serif;font-size:18px;font-weight:300;color:var(--text)">Configuración
v20260526-0314
style="margin:0 32px 32px;max-width:640px">
v20260526-0314
style="font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:0.08em;margin-bottom:16px">Tipos de servicio
v20260526-0314
style="display:flex;gap:8px;align-items:center;margin-bottom:20px;padding:16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)">
v20260526-0314
style="display:flex;flex-direction:column;gap:3px;align-items:center">
Color
+ Agregar
v20260526-0314
id="cfg-tipos-list">
v20260526-0314
id="cfg-tipos-empty" style="display:none;color:var(--muted);font-size:12px;padding:16px 0;text-align:center">No hay tipos de servicio configurados.
v20260526-0314
style="margin:0 32px 32px;max-width:640px">
v20260526-0314
style="font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:0.08em;margin-bottom:16px">Colores de estados de OT
v20260526-0314
id="cfg-estados-list">
v20260526-0314
class="tab-content" id="tab-proformas">
v20260526-0314
style="display:flex;gap:0;border-bottom:1px solid var(--border);margin:0 32px;margin-top:20px">
📋 Cuentas por cobrar
🧾 Facturas emitidas
↩ Notas de crédito
💰 Registro de pagos
v20260526-0314
id="fsub-proformas">
v20260526-0314
style="display:flex;justify-content:space-between;align-items:center;margin:20px 32px 16px">
v20260526-0314
style="font-family:'Fraunces',serif;font-size:18px;font-weight:300;color:var(--text)">Cuentas por cobrar
v20260526-0314
style="display:flex;gap:10px;align-items:center">
📥 Importar reporte Excel
⬆ Importar historial
v20260526-0314
id="proformas-alert" style="display:none;margin:0 32px 16px;padding:12px 16px;background:rgba(240,200,64,0.1);border:1px solid rgba(240,200,64,0.3);border-radius:var(--radius);font-size:12px;color:var(--warn)">
v20260526-0314
class="stats-bar visible" id="proformas-stats" style="margin:0 32px 20px">
v20260526-0314
class="stat-card">v20260526-0314
class="stat-label">Total proformasv20260526-0314
class="stat-value neutral" id="pf-stat-total">0
v20260526-0314
class="stat-card">v20260526-0314
class="stat-label">Pendientesv20260526-0314
class="stat-value" style="color:var(--warn)" id="pf-stat-pendientes">0
v20260526-0314
class="stat-card">v20260526-0314
class="stat-label">Completadasv20260526-0314
class="stat-value" id="pf-stat-facturadas">0
v20260526-0314
class="stat-card">v20260526-0314
class="stat-label">Total generalv20260526-0314
class="stat-value" id="pf-stat-monto">₡0
v20260526-0314
class="toolbar visible" style="margin:0 32px 14px;gap:10px">
Todos los estados
Pendientes
Completadas
En proceso
Proforma pendiente
Cotización
Canceladas
⚙ Columnas
📄 Estado de cuenta
v20260526-0314
class="table-wrap" id="table-proformas" style="margin:0 32px 32px">
v20260526-0314
class="empty-msg" id="empty-proformas">No hay proformas registradas. Importá un reporte Excel.
v20260526-0314
id="pf-sel-bar" style="display:none;position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:var(--surface);border:1px solid var(--accent);border-radius:var(--radius);padding:10px 20px;display:none;align-items:center;gap:16px;z-index:500;box-shadow:0 4px 24px rgba(0,0,0,0.4)">
0 seleccionadas
|
₡0
|
💳 Registrar pago
✕ Limpiar
v20260526-0314
id="fsub-emitidas" style="display:none">
v20260526-0314
style="display:flex;justify-content:space-between;align-items:center;margin:20px 32px 16px">
v20260526-0314
style="font-family:'Fraunces',serif;font-size:18px;font-weight:300;color:var(--text)">Facturas emitidas
v20260526-0314
style="display:flex;gap:10px;align-items:center">
☁ Sincronizar
v20260526-0314
class="stats-bar visible" style="margin:0 32px 20px">
v20260526-0314
class="stat-card">v20260526-0314
class="stat-label">Total facturasv20260526-0314
class="stat-value neutral" id="fe-stat-total">0
v20260526-0314
class="stat-card">v20260526-0314
class="stat-label">Vinculadasv20260526-0314
class="stat-value" id="fe-stat-vinculadas">0
v20260526-0314
class="stat-card">v20260526-0314
class="stat-label">Sin vincularv20260526-0314
class="stat-value" style="color:var(--warn)" id="fe-stat-sinvincular">0
v20260526-0314
class="stat-card">v20260526-0314
class="stat-label">Total facturadov20260526-0314
class="stat-value" id="fe-stat-monto">₡0
v20260526-0314
class="toolbar visible" style="margin:0 32px 14px;gap:10px">
Todas
Vinculadas
Sin vincular
Anuladas
v20260526-0314
class="table-wrap" id="table-emitidas" style="margin:0 32px 32px">
Número ↓
Fecha
Cliente
Subtotal
IVA
Total
Mon.
Plazo
Vencimiento
Proforma
OT
Activo
OC
v20260526-0314
class="empty-msg" id="empty-emitidas">No hay facturas emitidas. Sincronizá desde OneDrive.
v20260526-0314
id="fsub-notas" style="display:none">
v20260526-0314
style="display:flex;justify-content:space-between;align-items:center;margin:20px 32px 16px">
v20260526-0314
style="font-family:'Fraunces',serif;font-size:18px;font-weight:300;color:var(--text)">Notas de crédito emitidas
v20260526-0314
class="stats-bar visible" style="margin:0 32px 20px">
v20260526-0314
class="stat-card">v20260526-0314
class="stat-label">Total notasv20260526-0314
class="stat-value neutral" id="nc-stat-total">0
v20260526-0314
class="stat-card">v20260526-0314
class="stat-label">Facturas anuladasv20260526-0314
class="stat-value" style="color:var(--danger)" id="nc-stat-anuladas">0
v20260526-0314
class="stat-card">v20260526-0314
class="stat-label">Total acreditadov20260526-0314
class="stat-value" id="nc-stat-monto">₡0
v20260526-0314
class="toolbar visible" style="margin:0 32px 14px">
v20260526-0314
class="table-wrap" id="table-notas" style="margin:0 32px 32px">
Número
Fecha
Cliente
Total
Mon.
Razón
Factura anulada
v20260526-0314
class="empty-msg" id="empty-notas">No hay notas de crédito registradas.
v20260526-0314
id="fsub-pagos" style="display:none">
v20260526-0314
style="display:flex;justify-content:space-between;align-items:center;margin:20px 32px 16px">
v20260526-0314
style="font-family:'Fraunces',serif;font-size:18px;font-weight:300;color:var(--text)">Registro de pagos
v20260526-0314
class="stats-bar visible" style="margin:0 32px 16px">
v20260526-0314
class="stat-card">v20260526-0314
class="stat-label">Total pagosv20260526-0314
class="stat-value neutral" id="pg-stat-count">0
v20260526-0314
class="stat-card">v20260526-0314
class="stat-label">Total cobradov20260526-0314
class="stat-value" style="color:var(--accent)" id="pg-stat-total">₡0
v20260526-0314
class="toolbar visible" style="margin:0 32px 14px;gap:10px">
2026
Todos los años
Todos los bancos
BCR BAC Promerica
BN BPOP Scotiabank
Efectivo Otro
v20260526-0314
class="table-wrap" id="table-pagos" style="margin:0 32px 32px;display:none">
Fecha
Cliente
Factura
Banco
Monto
v20260526-0314
class="empty-msg" id="empty-pagos">No hay pagos registrados.
v20260526-0314
class="tab-content" id="tab-reportes">
v20260526-0314
style="display:flex;justify-content:space-between;align-items:center;margin:24px 32px 16px">
v20260526-0314
style="font-family:'Fraunces',serif;font-size:18px;font-weight:300;color:var(--text)">Reportes
v20260526-0314
class="toolbar visible" style="margin:0 32px 20px;gap:10px">
Todos los meses
Enero Febrero Marzo
Abril Mayo Junio
Julio Agosto Septiembre
Octubre Noviembre Diciembre
v20260526-0314
class="stats-bar visible" id="rep-stats" style="margin:0 32px 20px">
v20260526-0314
class="stat-card">v20260526-0314
class="stat-label">Proveedoresv20260526-0314
class="stat-value neutral" id="rep-stat-provs">0
v20260526-0314
class="stat-card">v20260526-0314
class="stat-label">Facturasv20260526-0314
class="stat-value neutral" id="rep-stat-facturas">0
v20260526-0314
class="stat-card">v20260526-0314
class="stat-label">Total gastadov20260526-0314
class="stat-value" id="rep-stat-total">₡0
v20260526-0314
style="margin:0 32px 32px">
v20260526-0314
style="font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:0.08em;margin-bottom:12px">Gasto por proveedor
v20260526-0314
class="table-wrap" id="table-rep-provs">
Proveedor
Facturas
Total (₡)
% del total
v20260526-0314
class="empty-msg" id="empty-rep-provs" style="display:none">No hay facturas en el período seleccionado.
v20260526-0314
class="modal-overlay" id="modal-factura-manual">
v20260526-0314
class="modal" style="width:780px">
v20260526-0314
class="modal-header">
Factura manual
✕
v20260526-0314
class="modal-body">
v20260526-0314
style="display:flex;gap:8px;margin-bottom:18px">
⚡ Rápido (monto global)
📋 Detallado (con líneas)
v20260526-0314
class="form-grid">
v20260526-0314
class="form-group">
Proveedor
v20260526-0314
class="form-group">
Número de factura
v20260526-0314
class="form-group">
Fecha
v20260526-0314
class="form-group">
Moneda
₡ Colones (CRC)
$ Dólares (USD)
v20260526-0314
id="mfm-panel-rapido">
v20260526-0314
class="form-grid">
v20260526-0314
class="form-group full">
Descripción
v20260526-0314
class="form-group">
Subtotal (sin IVA)
v20260526-0314
class="form-group">
IVA (0 si no aplica)
v20260526-0314
class="form-group">
Total
v20260526-0314
id="mfm-panel-detalle" style="display:none">
v20260526-0314
style="display:flex;justify-content:space-between;align-items:center;margin-bottom:10px">
v20260526-0314
style="font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:0.06em">Líneas de detalle
+ Línea
v20260526-0314
id="mfm-lineas-wrap">
v20260526-0314
id="mfm-totales" style="display:flex;justify-content:flex-end;gap:24px;margin-top:12px;padding-top:10px;border-top:1px solid var(--border);font-size:12px">
v20260526-0314
class="modal-footer">
Cancelar
Guardar factura
v20260526-0314
class="modal-overlay" id="modal-inv-manual">
v20260526-0314
class="modal" style="width:600px">
v20260526-0314
class="modal-header">
Agregar ítem al inventario
✕
v20260526-0314
class="modal-body">
v20260526-0314
class="form-grid">
v20260526-0314
class="form-group full">
Descripción *
v20260526-0314
class="form-group">
Código
v20260526-0314
class="form-group">
Cantidad inicial
v20260526-0314
class="form-group">
Costo unitario (₡)
v20260526-0314
class="form-group">
Aplicar IVA 13%
v20260526-0314
style="display:flex;align-items:center;gap:8px">
v20260526-0314
id="inv-manual-iva-preview" style="margin-top:5px;font-size:11px;color:var(--muted);min-height:16px">
v20260526-0314
class="form-group full">
Aplicaciones / Notas
v20260526-0314
class="form-group full" style="background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px;margin-top:4px">
Producto a granel / fraccionable (aceite, thinner, pintura…)
v20260526-0314
id="inv-manual-granel-fields" style="display:none;grid-template-columns:1fr 1fr 1fr;gap:10px">
Unidad de compra
Unidad de consumo
Factor de conversión
v20260526-0314
style="grid-column:1/-1">
v20260526-0314
id="inv-manual-granel-preview" style="font-size:11px;color:var(--accent);min-height:16px">
v20260526-0314
class="modal-footer">
Cancelar
Agregar al inventario
v20260526-0314
id="toast">
v20260526-0314
class="modal-overlay" id="modal-vincular-pf" style="display:none">
v20260526-0314
class="modal" style="width:640px">
v20260526-0314
class="modal-header">
Vincular a proforma
✕
v20260526-0314
class="modal-body" style="padding-bottom:4px">
v20260526-0314
id="vp-factura-info" style="background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);padding:11px 14px;margin-bottom:14px;font-size:12px">
v20260526-0314
style="display:flex;border-bottom:1px solid var(--border);margin-bottom:12px">
Sin factura asignada
Ya vinculadas
v20260526-0314
id="vp-results" style="max-height:340px;overflow-y:auto;padding-right:2px">
v20260526-0314
class="modal-footer">
Cancelar
v20260526-0314
id="sel-bar" style="display:none;position:fixed;bottom:0;left:0;right:0;z-index:300;background:var(--surface);border-top:1px solid var(--accent);padding:10px 32px;display:none;align-items:center;gap:24px;box-shadow:0 -4px 20px rgba(0,0,0,0.3)">
0 filas
v20260526-0314
style="flex:1">
IVA:
₡0
Total:
₡0
✕ Limpiar
v20260526-0314
style="position:fixed;bottom:10px;right:14px;font-family:DM Mono,monospace;font-size:10px;color:rgba(255,255,255,0.2);pointer-events:none;z-index:9999">v20260526-0254