Mejoras integrales: visitas, POS, WACRM, reportes, temas y módulos legacy

- Módulo Visitas completo (auto desde agenda, insumos con descargo de
  inventario, fotos antes/después y documentos, receta imprimible)
- Punto de Venta (catálogo + ticket sticky, cobro con cambio, pago con
  puntos monedero, ticket imprimible)
- WACRM: leads automáticos desde WhatsApp, asignación de conversaciones
  y leads a agentes, conversión lead→paciente, ficha del paciente en chat
- Pacientes: completitud de expediente, alertas clínicas, historial
  unificado con detalle, foto, WhatsApp, estado de cuenta, filtros
  rápidos (VIP/recientes/médico), documentos (expediente escaneado + galería)
- Agenda: vistas por médico y por hora, filtros rápidos (libres, primera
  vez, check-in, no-show), modal de acciones, bloqueos por médico,
  drag&drop para mover citas
- Reportes: 18 pestañas (diario, cortes, ingresos, inventario, adeudos,
  comisiones, pagos, devoluciones, top clientes, horas, paquetes,
  vendedores, concentrado, recomendaciones, KPIs) con exportación Excel
- Temas: nuevo tema Clásico (look legacy AdminLTE) con submenús tipo
  treeview, selector de tema; accesos rápidos personalizables con 3
  presentaciones; búsqueda global; notificaciones reales
- Configuración: secciones (clínica, usuarios con permisos por sección,
  recetas, catálogos de diagnósticos y procedimientos)
- Inventario: alertas de caducidad y sugerencia de compra, cron diario
  que descuenta artículos caducados, compras/bajas
- Consultas Médicas, página Expedientes, importadores delta
  (citas/visitas legacy idempotentes), depuración de duplicados
- Infra: tema Tailwind conectado (@config), gzip en nginx, secuencias
  Odoo corregidas (noupdate, company_id), rollback en validaciones
This commit is contained in:
2026-08-13 23:30:08 +00:00
parent a718592291
commit 01f6007e30
109 changed files with 19067 additions and 931 deletions

View File

@@ -1,4 +1,5 @@
@import "tailwindcss";
@config "../tailwind.config.js";
@import "./styles/fonts.css";
/* =========================================================
@@ -96,6 +97,77 @@
--logo: '/skeen-brand/logos/Logo%20Completo%20Negro.png';
}
/* =========================================================
Tema Clásico (legacy AdminLTE 2.x)
========================================================= */
[data-theme="clasico"] {
/* Paleta */
--color-coral: #1abc9c;
--color-coral-hover: #16a085;
--color-mint: #2ecc71;
--color-lilac: #d9edf7;
--color-sky: #3498db;
--color-dark: #333333;
--color-charcoal: #444444;
--color-gray: #777777;
--color-light: #ecf0f5;
--color-white: #FFFFFF;
/* Semántico */
--text: var(--color-charcoal);
--text-muted: var(--color-gray);
--text-heading: var(--color-dark);
--text-inverse: var(--color-white);
--bg: var(--color-light);
--surface: var(--color-white);
--surface-elevated: var(--color-white);
--border: #d2d6de;
--border-strong: #dddddd;
--accent: var(--color-coral);
--accent-hover: var(--color-coral-hover);
--accent-bg: rgba(26, 188, 156, 0.12);
--success: #2ecc71;
--success-text: var(--color-white);
--warning: #f39c12;
--warning-text: var(--color-white);
--font-sans: 'Source Sans Pro', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
--font-display: 'Source Sans Pro', Georgia, serif;
--font-heading: 'Source Sans Pro', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
--font-mono: 'JetBrains Mono', monospace;
--sidebar-bg: #3E454C;
--sidebar-text: #dbdee1;
--sidebar-text-active: var(--color-white);
--sidebar-active-bg: #394046;
--sidebar-accent: #BED4AD;
--sidebar-group-bg: #353b41;
--sidebar-group-text: #6c7884;
--header-bg: #BED4AD;
--logo-block: #b1cb9c;
--logo: '/skeen-brand/logos/Logo%20Completo%20Blanco.png';
}
/* AdminLTE: esquinas casi cuadradas y sombras mínimas */
[data-theme="clasico"] .rounded-3xl,
[data-theme="clasico"] .rounded-2xl,
[data-theme="clasico"] .rounded-xl {
border-radius: 3px;
}
[data-theme="clasico"] .rounded-lg {
border-radius: 2px;
}
[data-theme="clasico"] .shadow-card {
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08);
}
[data-theme="clasico"] .shadow-soft,
[data-theme="clasico"] .shadow-sm {
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
}
/* =========================================================
Base
========================================================= */
@@ -176,3 +248,23 @@ p {
::-webkit-scrollbar-thumb:hover {
opacity: 0.4;
}
/* Impresión del ticket POS y de la receta médica */
@media print {
body * {
visibility: hidden;
}
.print-ticket,
.print-ticket *,
.print-receta,
.print-receta * {
visibility: visible;
}
.print-ticket,
.print-receta {
position: absolute;
top: 0;
left: 0;
width: 100%;
}
}