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,7 +8,7 @@
|
||||
<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" />
|
||||
@@ -298,15 +298,15 @@
|
||||
<circle cx="7" cy="7" r="4.5"/><path d="M10.5 10.5L14 14"/>
|
||||
</svg>
|
||||
</span>
|
||||
<input type="text" class="search-input" placeholder="Buscar por nombre, RFC, teléfono…" id="searchInput" oninput="filterCustomers()" />
|
||||
<input type="text" class="search-input" placeholder="Buscar por nombre, RFC, teléfono…" id="searchInput" oninput="filterCustomers()" aria-label="Buscar clientes" />
|
||||
</div>
|
||||
<select class="filter-select" onchange="filterCustomers()" id="tipoFilter">
|
||||
<select class="filter-select" onchange="filterCustomers()" id="tipoFilter" aria-label="Filtrar por tipo de cliente">
|
||||
<option value="">Todos los tipos</option>
|
||||
<option value="Taller">Taller</option>
|
||||
<option value="Mostrador">Mostrador</option>
|
||||
<option value="Mayoreo">Mayoreo</option>
|
||||
</select>
|
||||
<select class="filter-select" onchange="filterCustomers()" id="estadoFilter">
|
||||
<select class="filter-select" onchange="filterCustomers()" id="estadoFilter" aria-label="Filtrar por estado de cliente">
|
||||
<option value="">Todos los estados</option>
|
||||
<option value="Activo">Activo</option>
|
||||
<option value="Inactivo">Inactivo</option>
|
||||
@@ -342,15 +342,7 @@
|
||||
<!-- Pagination -->
|
||||
<div class="table-footer">
|
||||
<div class="table-footer__info" id="tableInfo"></div>
|
||||
<div class="pagination">
|
||||
<button class="page-btn">‹</button>
|
||||
<button class="page-btn active">1</button>
|
||||
<button class="page-btn">2</button>
|
||||
<button class="page-btn">3</button>
|
||||
<span style="color:var(--color-text-muted);font-size:var(--text-caption);padding:0 4px;">…</span>
|
||||
<button class="page-btn">86</button>
|
||||
<button class="page-btn">›</button>
|
||||
</div>
|
||||
<div class="pagination" id="customersPagination"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -375,12 +367,12 @@
|
||||
|
||||
<!-- Header -->
|
||||
<div class="detail-header">
|
||||
<div class="customer-avatar" id="detailAvatar">MA</div>
|
||||
<div class="customer-avatar" id="detailAvatar">—</div>
|
||||
<div class="detail-header__info">
|
||||
<div class="detail-header__name" id="detailName">MIGUEL ÁNGEL TORRES</div>
|
||||
<div class="detail-header__rfc" id="detailRFC">TOAM820115HDF</div>
|
||||
<div class="detail-header__name" id="detailName">—</div>
|
||||
<div class="detail-header__rfc" id="detailRFC">—</div>
|
||||
<div class="detail-header__meta">
|
||||
<span class="tipo-chip tipo-chip--taller" id="detailTipo">Taller</span>
|
||||
<span class="tipo-chip tipo-chip--taller" id="detailTipo">—</span>
|
||||
<span class="badge badge--active" id="detailStatus"><span class="badge-dot"></span>Activo</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -401,7 +393,7 @@
|
||||
</div>
|
||||
<div class="info-row info-row--full">
|
||||
<span class="info-label">Dirección</span>
|
||||
<span class="info-value" id="detailAddress">Av. Insurgentes Sur 1602, Col. Crédito Constructor, CDMX</span>
|
||||
<span class="info-value" id="detailAddress">—</span>
|
||||
</div>
|
||||
<div class="info-row">
|
||||
<span class="info-label">CP</span>
|
||||
@@ -644,11 +636,11 @@
|
||||
|
||||
<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/virtual-scroll.js" defer></script>
|
||||
<script src="/pos/static/js/customers.js?v=3" defer></script>
|
||||
<script src="/pos/static/js/customers.js?v=32" defer></script>
|
||||
<script src="/pos/static/js/offline-banner.js" 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>
|
||||
|
||||
Reference in New Issue
Block a user