fix(pos): wire buttons in contabilidad, facturacion, inventario, dashboard

- Contabilidad: Nueva Poliza modal + Exportar placeholder
- Facturacion: Nueva Factura modal (sale_id input) + Nota Credito placeholder
- Inventario: click en producto abre detalle con historial
- Dashboard: Ver Detalles navega a paginas relevantes, campana a alertas

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-01 22:36:49 +00:00
parent a74fe94187
commit e7376ddaed
6 changed files with 265 additions and 12 deletions

View File

@@ -1370,11 +1370,11 @@
<option>Enero 2026</option>
<option>Diciembre 2025</option>
</select>
<button class="btn btn--secondary">
<button class="btn btn--secondary" onclick="window.exportarContabilidad()">
<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>
<button class="btn btn--primary">
<button class="btn btn--primary" onclick="window.showNewEntryModal()">
<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>
Nueva Póliza
</button>
@@ -2250,6 +2250,55 @@
</main>
</div><!-- /app-shell -->
<!-- Nueva Poliza Modal -->
<div id="newEntryModalOverlay" style="display:none;position:fixed;inset:0;background:rgba(0,0,0,0.5);z-index:9999;align-items:center;justify-content:center;">
<div style="background:var(--color-surface-1);border-radius:var(--radius-lg);width:min(640px,90vw);max-height:85vh;overflow-y:auto;box-shadow:var(--shadow-lg);">
<div style="padding:var(--space-5) var(--space-6);border-bottom:1px solid var(--color-border);display:flex;justify-content:space-between;align-items:center;">
<div style="font-family:var(--font-heading);font-size:var(--text-h4);font-weight:var(--heading-weight-primary);">Nueva Poliza</div>
<button class="btn btn--ghost btn--sm" onclick="window.closeNewEntryModal()">&times;</button>
</div>
<div style="padding:var(--space-6);">
<div style="display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4);margin-bottom:var(--space-4);">
<div>
<label style="display:block;font-size:var(--text-caption);color:var(--color-text-muted);margin-bottom:var(--space-1);text-transform:uppercase;letter-spacing:var(--tracking-widest);">Fecha</label>
<input type="date" id="entryDate" style="width:100%;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);" />
</div>
<div>
<label style="display:block;font-size:var(--text-caption);color:var(--color-text-muted);margin-bottom:var(--space-1);text-transform:uppercase;letter-spacing:var(--tracking-widest);">Tipo</label>
<select id="entryType" style="width:100%;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="ingreso">Ingreso</option>
<option value="egreso">Egreso</option>
<option value="diario">Diario</option>
</select>
</div>
</div>
<div style="margin-bottom:var(--space-4);">
<label style="display:block;font-size:var(--text-caption);color:var(--color-text-muted);margin-bottom:var(--space-1);text-transform:uppercase;letter-spacing:var(--tracking-widest);">Descripcion</label>
<input type="text" id="entryDescription" placeholder="Concepto de la poliza" style="width:100%;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);" />
</div>
<div style="margin-bottom:var(--space-3);">
<div style="display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-2);">
<label style="font-size:var(--text-caption);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:var(--tracking-widest);">Partidas</label>
<button class="btn btn--ghost btn--sm" onclick="window.addEntryLine()">+ Agregar linea</button>
</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);" />
<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()">&times;</button>
</div>
</div>
</div>
<div id="entryResult" style="margin-bottom:var(--space-3);"></div>
</div>
<div style="padding:var(--space-4) var(--space-6);border-top:1px solid var(--color-border);display:flex;justify-content:flex-end;gap:var(--space-3);">
<button class="btn btn--ghost" onclick="window.closeNewEntryModal()">Cancelar</button>
<button class="btn btn--primary" onclick="window.submitNewEntry()">Guardar Poliza</button>
</div>
</div>
</div>
<script src="/pos/static/js/app-init.js"></script>
<script src="/pos/static/js/sidebar.js"></script>
<script src="/pos/static/js/accounting.js"></script>

View File

@@ -1431,7 +1431,7 @@
</svg>
Sucursal Centro
</div>
<button class="icon-btn" title="Notificaciones">
<button class="icon-btn" title="Notificaciones" onclick="window.location.href='/pos/inventory#alertas'">
<svg width="16" height="16" viewBox="0 0 16 16" fill="none">
<path d="M8 1a5 5 0 00-5 5v3l-1.5 2h13L13 9V6a5 5 0 00-5-5z" stroke="currentColor" stroke-width="1.4"/>
<path d="M6.5 13a1.5 1.5 0 003 0" stroke="currentColor" stroke-width="1.4"/>
@@ -1457,7 +1457,7 @@
<section>
<div class="section-header">
<span class="section-title">Resumen del día</span>
<span class="section-action">Ver detalle &rarr;</span>
<a href="/pos/reports" class="section-action" style="text-decoration:none;color:inherit;">Ver detalle &rarr;</a>
</div>
<div class="kpi-grid">
@@ -1656,7 +1656,7 @@
<div style="font-family:var(--font-heading);font-weight:var(--heading-weight-secondary);font-size:var(--text-body-sm);letter-spacing:var(--tracking-wider);text-transform:uppercase;color:var(--color-text-secondary);">
Top Productos
</div>
<div style="font-size:var(--text-caption);color:var(--color-primary);font-weight:var(--font-weight-semibold);cursor:pointer;">Ver todos</div>
<a href="/pos/inventory" style="font-size:var(--text-caption);color:var(--color-primary);font-weight:var(--font-weight-semibold);cursor:pointer;text-decoration:none;">Ver todos</a>
</div>
<div class="rank-list">
@@ -1729,7 +1729,7 @@
<div style="font-family:var(--font-heading);font-weight:var(--heading-weight-secondary);font-size:var(--text-body-sm);letter-spacing:var(--tracking-wider);text-transform:uppercase;color:var(--color-text-secondary);">
Top Clientes
</div>
<div style="font-size:var(--text-caption);color:var(--color-primary);font-weight:var(--font-weight-semibold);cursor:pointer;">Ver todos</div>
<a href="/pos/customers" style="font-size:var(--text-caption);color:var(--color-primary);font-weight:var(--font-weight-semibold);cursor:pointer;text-decoration:none;">Ver todos</a>
</div>
<div class="rank-list">
@@ -1886,7 +1886,7 @@
</svg>
En vivo
</div>
<div class="section-action" style="margin:0;">Ver historial &rarr;</div>
<a href="/pos/reports" class="section-action" style="margin:0;text-decoration:none;color:inherit;">Ver historial &rarr;</a>
</div>
</div>
<div class="table-wrap themed-scrollbar">

View File

@@ -1522,14 +1522,14 @@
</svg>
Exportar
</button>
<button class="btn btn--secondary">
<button class="btn btn--secondary" onclick="window.notaCreditoPlaceholder()">
<svg viewBox="0 0 24 24">
<path d="M9 14l-4-4 4-4"/>
<path d="M5 10h11a4 4 0 0 1 0 8h-1"/>
</svg>
Nota de Crédito
</button>
<button class="btn btn--primary">
<button class="btn btn--primary" onclick="window.showNewInvoiceModal()">
<svg viewBox="0 0 24 24">
<line x1="12" y1="5" x2="12" y2="19"/>
<line x1="5" y1="12" x2="19" y2="12"/>
@@ -2699,6 +2699,28 @@
</div>
</div>
<!-- Nueva Factura Modal -->
<div id="newInvoiceModalOverlay" style="display:none;position:fixed;inset:0;background:rgba(0,0,0,0.5);z-index:9999;align-items:center;justify-content:center;">
<div style="background:var(--color-surface-1);border-radius:var(--radius-lg);width:min(480px,90vw);box-shadow:var(--shadow-lg);">
<div style="padding:var(--space-5) var(--space-6);border-bottom:1px solid var(--color-border);display:flex;justify-content:space-between;align-items:center;">
<div style="font-family:var(--font-heading);font-size:var(--text-h4);font-weight:var(--heading-weight-primary);">Nueva Factura</div>
<button class="btn btn--ghost btn--sm" onclick="window.closeNewInvoiceModal()">&times;</button>
</div>
<div style="padding:var(--space-6);">
<p style="font-size:var(--text-body-sm);color:var(--color-text-muted);margin-bottom:var(--space-4);">Ingrese el ID de la venta para generar el CFDI (Ingreso).</p>
<div style="margin-bottom:var(--space-4);">
<label style="display:block;font-size:var(--text-caption);color:var(--color-text-muted);margin-bottom:var(--space-1);text-transform:uppercase;letter-spacing:var(--tracking-widest);">ID de Venta</label>
<input type="number" id="invoiceSaleId" placeholder="Ej: 1042" style="width:100%;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);" />
</div>
<div id="invoiceResult" style="margin-bottom:var(--space-3);"></div>
</div>
<div style="padding:var(--space-4) var(--space-6);border-top:1px solid var(--color-border);display:flex;justify-content:flex-end;gap:var(--space-3);">
<button class="btn btn--ghost" onclick="window.closeNewInvoiceModal()">Cancelar</button>
<button class="btn btn--primary" onclick="window.submitNewInvoice()">Generar Factura</button>
</div>
</div>
</div>
<script src="/pos/static/js/app-init.js"></script>
<script src="/pos/static/js/sidebar.js"></script>
<script src="/pos/static/js/invoicing.js"></script>