feat: complete session — catalog, marketplace, WhatsApp, peer-to-peer, install scripts
Major features: - Pixel-Perfect glassmorphism design (landing + POS + public catalog) - OEM/Local catalog toggle with Nexpart taxonomy (14 groups, 108 subgroups, 558 part types) - Marketplace B2B Phase 1 (bodegas, POs, status machine, WA+email notifications) - Peer-to-peer inventory (multi-instance, LAN discovery) - WhatsApp: photo→Vision AI, voice→Whisper, conversational quotations - Smart unified search (VIN/plate/part_number/keyword auto-detect) - Shop Supplies tab (vehicle-independent parts) - Chatbot AI fallback chain (5 models) + response cache - CSV inventory import tool + setup_instance.sh installer - Tablet-responsive CSS + sidebar toggle - Filters, export CSV, employee edit, business data save - Quotation system (WA→POS) with auto-print on confirmation - Live stats on landing page Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -6,6 +6,7 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Configuración — Nexus Autoparts POS</title>
|
||||
<link rel="stylesheet" href="/pos/static/css/tokens.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" />
|
||||
|
||||
@@ -1332,34 +1333,36 @@
|
||||
<div class="form-grid">
|
||||
<div class="form-group">
|
||||
<label class="form-label">Razón Social</label>
|
||||
<input class="form-input" id="biz-razon-social" type="text" value="" readonly />
|
||||
<input class="form-input" id="biz-razon-social" type="text" value="" placeholder="Ej: Refacciones El Toro S.A. de C.V." />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="form-label">Nombre Comercial</label>
|
||||
<input class="form-input" id="biz-nombre" type="text" value="" readonly />
|
||||
<input class="form-input" id="biz-nombre" type="text" value="" placeholder="Ej: Refacciones El Toro" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="form-label">RFC</label>
|
||||
<input class="form-input" id="biz-rfc" type="text" value="" readonly />
|
||||
<input class="form-input" id="biz-rfc" type="text" value="" placeholder="Ej: RET260101ABC" maxlength="13" style="text-transform:uppercase;" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="form-label">Régimen Fiscal</label>
|
||||
<input class="form-input" id="biz-regimen" type="text" value="" readonly />
|
||||
<input class="form-input" id="biz-regimen" type="text" value="" placeholder="Ej: 601 - General de Ley" />
|
||||
</div>
|
||||
<div class="form-group form-group--full">
|
||||
<label class="form-label">Dirección Fiscal</label>
|
||||
<input class="form-input" id="biz-direccion" type="text" value="" readonly />
|
||||
<input class="form-input" id="biz-direccion" type="text" value="" placeholder="Calle, Numero, Colonia, CP, Ciudad" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="form-label">Teléfono</label>
|
||||
<input class="form-input" id="biz-telefono" type="tel" value="" readonly />
|
||||
<input class="form-input" id="biz-telefono" type="tel" value="" placeholder="Ej: 664-123-4567" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="form-label">Email</label>
|
||||
<input class="form-input" id="biz-email" type="email" value="" readonly />
|
||||
<input class="form-input" id="biz-email" type="email" value="" placeholder="Ej: contacto@refacciones.com" />
|
||||
</div>
|
||||
</div>
|
||||
<p class="form-hint" style="margin-top: var(--space-3);">Datos configurados durante el aprovisionamiento del tenant. Contacta soporte para cambios.</p>
|
||||
<div style="margin-top:var(--space-4);text-align:right;">
|
||||
<button class="btn btn--primary" onclick="Config.saveBusiness()">Guardar datos de empresa</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1420,60 +1423,13 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="device-grid">
|
||||
<div class="device-card">
|
||||
<div class="device-card__icon">
|
||||
<svg viewBox="0 0 24 24"><polyline points="6 9 6 2 18 2 18 9"/><path d="M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2"/><rect x="6" y="14" width="12" height="8"/></svg>
|
||||
</div>
|
||||
<div class="device-card__body">
|
||||
<div class="device-card__name">Epson TM-T88VI</div>
|
||||
<div class="device-card__detail">
|
||||
<span class="badge badge--ok" style="padding: 0 4px; font-size: 0.625rem;">En línea</span>
|
||||
Tickets de venta
|
||||
</div>
|
||||
<div class="device-card__detail">USB · 192.168.10.50</div>
|
||||
<div class="device-card__detail">Predeterminada para POS</div>
|
||||
<div class="device-card__actions">
|
||||
<button class="btn btn--ghost btn--sm">Configurar</button>
|
||||
<button class="btn btn--ghost btn--sm">Test</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="device-card">
|
||||
<div class="device-card__icon">
|
||||
<svg viewBox="0 0 24 24"><polyline points="6 9 6 2 18 2 18 9"/><path d="M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2"/><rect x="6" y="14" width="12" height="8"/></svg>
|
||||
</div>
|
||||
<div class="device-card__body">
|
||||
<div class="device-card__name">Zebra GK420d</div>
|
||||
<div class="device-card__detail">
|
||||
<span class="badge badge--ok" style="padding: 0 4px; font-size: 0.625rem;">En línea</span>
|
||||
Etiquetas de código de barras
|
||||
</div>
|
||||
<div class="device-card__detail">USB · 192.168.10.51</div>
|
||||
<div class="device-card__detail">Predeterminada para inventario</div>
|
||||
<div class="device-card__actions">
|
||||
<button class="btn btn--ghost btn--sm">Configurar</button>
|
||||
<button class="btn btn--ghost btn--sm">Test</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="device-card">
|
||||
<div class="device-card__icon" style="background: rgba(115,115,115,.12);">
|
||||
<svg viewBox="0 0 24 24" style="stroke: var(--color-text-muted);"><polyline points="6 9 6 2 18 2 18 9"/><path d="M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2"/><rect x="6" y="14" width="12" height="8"/></svg>
|
||||
</div>
|
||||
<div class="device-card__body">
|
||||
<div class="device-card__name">HP LaserJet Pro M404</div>
|
||||
<div class="device-card__detail">
|
||||
<span class="badge badge--inactive" style="padding: 0 4px; font-size: 0.625rem;">Fuera de línea</span>
|
||||
Facturas y reportes
|
||||
</div>
|
||||
<div class="device-card__detail">Red · 192.168.10.52</div>
|
||||
<div class="device-card__actions">
|
||||
<button class="btn btn--ghost btn--sm">Configurar</button>
|
||||
<button class="btn btn--ghost btn--sm">Reintentar</button>
|
||||
</div>
|
||||
<div class="device-grid" id="printerGrid">
|
||||
<div class="device-card" style="border-style:dashed;text-align:center;color:var(--color-text-muted);padding:var(--space-8);">
|
||||
<div style="font-size:2rem;margin-bottom:var(--space-3);">🖨️</div>
|
||||
<div>Sin impresoras configuradas</div>
|
||||
<div style="font-size:var(--text-caption);margin-top:var(--space-2);">
|
||||
La configuracion de impresoras se hace desde el navegador.<br>
|
||||
Ve a <strong>chrome://devices</strong> o usa <strong>Ctrl+P</strong> para imprimir.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1595,41 +1551,41 @@
|
||||
<div class="form-grid">
|
||||
<div class="form-group">
|
||||
<label class="form-label">Tasa IVA (%)</label>
|
||||
<input class="form-input" type="number" value="16" />
|
||||
<input class="form-input" id="tax-iva" type="number" value="16" step="1" min="0" max="100" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="form-label">Tasa IEPS (%)</label>
|
||||
<input class="form-input" type="number" value="0" />
|
||||
<input class="form-input" id="tax-ieps" type="number" value="0" step="1" min="0" />
|
||||
<span class="form-hint">Dejar en 0 si no aplica</span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="form-label">Serie de Facturación</label>
|
||||
<input class="form-input" type="text" value="FA" />
|
||||
<input class="form-input" id="tax-serie" type="text" value="FA" maxlength="10" style="text-transform:uppercase;" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="form-label">Folio Actual</label>
|
||||
<input class="form-input" type="number" value="893" />
|
||||
<input class="form-input" id="tax-folio" type="number" value="1" min="1" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="form-label">Moneda Predeterminada</label>
|
||||
<select class="form-select">
|
||||
<option selected>MXN — Peso Mexicano</option>
|
||||
<option>USD — Dólar Americano</option>
|
||||
<select class="form-select" id="tax-moneda">
|
||||
<option value="MXN">MXN — Peso Mexicano</option>
|
||||
<option value="USD">USD — Dólar Americano</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="form-label">Forma de Pago Default</label>
|
||||
<select class="form-select">
|
||||
<option selected>01 — Efectivo</option>
|
||||
<option>03 — Transferencia Electrónica</option>
|
||||
<option>04 — Tarjeta de Crédito</option>
|
||||
<option>28 — Tarjeta de Débito</option>
|
||||
<option>99 — Por Definir</option>
|
||||
<select class="form-select" id="tax-forma-pago">
|
||||
<option value="01">01 — Efectivo</option>
|
||||
<option value="03">03 — Transferencia Electrónica</option>
|
||||
<option value="04">04 — Tarjeta de Crédito</option>
|
||||
<option value="28">28 — Tarjeta de Débito</option>
|
||||
<option value="99">99 — Por Definir</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="btn-group">
|
||||
<button class="btn btn--primary btn--sm">Guardar Parámetros</button>
|
||||
<button class="btn btn--primary btn--sm" onclick="Config.saveTaxParams()">Guardar Parámetros</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1926,6 +1882,7 @@
|
||||
|
||||
<script src="/pos/static/js/i18n.js"></script>
|
||||
<script src="/pos/static/js/app-init.js"></script>
|
||||
<script src="/pos/static/js/pos-utils.js"></script>
|
||||
<script src="/pos/static/js/sidebar.js"></script>
|
||||
<script src="/pos/static/js/kiosk.js"></script>
|
||||
<script src="/pos/static/js/config.js"></script>
|
||||
|
||||
Reference in New Issue
Block a user