fix(audit): corrige errores criticos y mayores, mejora UX/accesibilidad y optimiza rendimiento
- Arregla @require_auth, permisos, race conditions, locks de caja/stock - Elimina N+1 en layaway, flotilla, dashboard y global_invoice - Asegura folios atomicos para CFDI, ordenes de servicio y polizas - Protege client_secret de MercadoLibre en backend - Conecta botones/filtros de config, customers, accounting e invoicing - Mejora accesibilidad (labels/aria-label) y estados de carga/vacio - Limpia accounting.js obsoleto y consolida accounting.v9.js - Actualiza cache busting a v32 y Service Worker a v32 - Documenta todo en docs/AUDIT_Y_MEJORAS_2026-06-15.md Tests: 35 passed
This commit is contained in:
@@ -8,14 +8,14 @@
|
||||
<link rel="stylesheet" href="/pos/static/css/chat.css" />
|
||||
<link rel="stylesheet" href="/pos/static/css/tokens.css" />
|
||||
<link rel="stylesheet" href="/pos/static/css/common.css" />
|
||||
<link rel="stylesheet" href="/pos/static/css/pos-ui.css?v=2" />
|
||||
<link rel="stylesheet" href="/pos/static/css/pos-ui.css?v=32" />
|
||||
<link rel="stylesheet" href="/pos/static/css/sidebar.css" />
|
||||
<link rel="stylesheet" href="/pos/static/css/pos-glass.css" />
|
||||
<link rel="manifest" href="/pos/static/pwa/manifest.json" />
|
||||
<meta name="theme-color" content="#F5A623" />
|
||||
<link rel="shortcut icon" type="image/png" href="/pos/static/pwa/icon-192.png" />
|
||||
|
||||
<link rel="stylesheet" href="/pos/static/css/accounting.css">
|
||||
<link rel="stylesheet" href="/pos/static/css/accounting.css?v=32">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
@@ -228,19 +228,18 @@
|
||||
<svg viewBox="0 0 24 24"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg>
|
||||
<input type="text" placeholder="Buscar cliente o factura..." />
|
||||
</div>
|
||||
<select class="select-filter">
|
||||
<option>Todos los estados</option>
|
||||
<option>Vigente</option>
|
||||
<option>Vencida</option>
|
||||
<option>Parcial</option>
|
||||
<select id="cxc-status-filter" class="select-filter" onchange="Accounting.loadAging()">
|
||||
<option value="all">Todos los estados</option>
|
||||
<option value="pending">Vigente</option>
|
||||
<option value="overdue">Vencida</option>
|
||||
<option value="partial">Parcial</option>
|
||||
<option value="ok">Pagada</option>
|
||||
</select>
|
||||
<select class="select-filter">
|
||||
<select class="select-filter" title="Filtro de sucursal (próximamente)">
|
||||
<option>Todas las sucursales</option>
|
||||
<option>Matriz</option>
|
||||
<option>Sucursal Norte</option>
|
||||
</select>
|
||||
<div class="toolbar__spacer"></div>
|
||||
<button class="btn btn--ghost btn--sm">
|
||||
<button class="btn btn--ghost btn--sm" onclick="window.exportarCuentasPorCobrar()">
|
||||
<svg viewBox="0 0 24 24"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" y1="15" x2="12" y2="3"/></svg>
|
||||
Exportar
|
||||
</button>
|
||||
@@ -281,13 +280,15 @@
|
||||
<svg viewBox="0 0 24 24"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg>
|
||||
<input type="text" placeholder="Buscar proveedor o factura..." />
|
||||
</div>
|
||||
<select class="select-filter">
|
||||
<option>Todos los estados</option>
|
||||
<option>Vigente</option>
|
||||
<option>Vencida</option>
|
||||
<select id="cxp-status-filter" class="select-filter" onchange="Accounting.loadAccountsPayable()">
|
||||
<option value="all">Todos los estados</option>
|
||||
<option value="pending">Vigente</option>
|
||||
<option value="overdue">Vencida</option>
|
||||
<option value="partial">Parcial</option>
|
||||
<option value="ok">Pagada</option>
|
||||
</select>
|
||||
<div class="toolbar__spacer"></div>
|
||||
<button class="btn btn--primary btn--sm">
|
||||
<button id="cxp-register-payment" class="btn btn--primary btn--sm" onclick="Accounting.registerPayablePayment()">
|
||||
<svg viewBox="0 0 24 24"><line x1="12" y1="5" x2="12" y2="19"/><line x1="5" y1="12" x2="19" y2="12"/></svg>
|
||||
Registrar Pago
|
||||
</button>
|
||||
@@ -424,13 +425,11 @@
|
||||
=============================================================== -->
|
||||
<div class="tab-panel" id="panel-cierre">
|
||||
<div class="toolbar">
|
||||
<select class="select-filter">
|
||||
<option>Marzo 2026</option>
|
||||
<option>Febrero 2026 (cerrado)</option>
|
||||
<option>Enero 2026 (cerrado)</option>
|
||||
<select id="cierre-period-filter" class="select-filter" title="Período a cerrar (próximamente)">
|
||||
<option>Seleccionar período</option>
|
||||
</select>
|
||||
<div class="toolbar__spacer"></div>
|
||||
<button class="btn btn--primary">
|
||||
<button id="cierre-run-btn" class="btn btn--primary" onclick="Accounting.runPeriodClose()">
|
||||
<svg viewBox="0 0 24 24"><rect x="3" y="11" width="18" height="11" rx="2" ry="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/></svg>
|
||||
Ejecutar Cierre
|
||||
</button>
|
||||
@@ -478,7 +477,7 @@
|
||||
</div>
|
||||
<div id="entryLines">
|
||||
<div class="entry-line" style="display:grid;grid-template-columns:2fr 1fr 1fr auto;gap:var(--space-2);margin-bottom:var(--space-2);align-items:center;">
|
||||
<input type="text" placeholder="Cuenta contable" class="entry-account" style="padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-2);color:var(--color-text-primary);font-size:var(--text-body-sm);" />
|
||||
<select class="entry-account" style="padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-2);color:var(--color-text-primary);font-size:var(--text-body-sm);"><option value="">Cargando cuentas...</option></select>
|
||||
<input type="number" placeholder="Debe" class="entry-debit" step="0.01" style="padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-2);color:var(--color-text-primary);font-size:var(--text-body-sm);" />
|
||||
<input type="number" placeholder="Haber" class="entry-credit" step="0.01" style="padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-2);color:var(--color-text-primary);font-size:var(--text-body-sm);" />
|
||||
<button class="btn btn--ghost btn--sm" onclick="this.closest('.entry-line').remove()">×</button>
|
||||
@@ -496,10 +495,10 @@
|
||||
|
||||
<script src="/pos/static/js/i18n.js" defer></script>
|
||||
<script src="/pos/static/js/app-init.js" defer></script>
|
||||
<script src="/pos/static/js/splash-loader.js?v=1" defer></script>
|
||||
<script src="/pos/static/js/pos-utils.js?v=2" defer></script>
|
||||
<script src="/pos/static/js/splash-loader.js?v=32" defer></script>
|
||||
<script src="/pos/static/js/pos-utils.js?v=32" defer></script>
|
||||
<script src="/pos/static/js/sidebar.js" defer></script>
|
||||
<script src="/pos/static/js/accounting.js?v=3" defer></script>
|
||||
<script src="/pos/static/js/accounting.v9.js?v=32" defer></script>
|
||||
<script src="/pos/static/js/sync-engine.js" defer></script>
|
||||
<script>if('serviceWorker' in navigator){navigator.serviceWorker.register('/pos/sw.js',{scope:'/pos/'});}</script>
|
||||
<script src="/pos/static/js/pwa-install.js" defer></script>
|
||||
|
||||
Reference in New Issue
Block a user