- Gastos (Expenses): Added `/gastos` route, auto-creation of `expenses` DB table, and `gastos.html` to track net profit with split month/year dropdowns. - Sales & Filters: Overhauled `/sales` backend to use pagination. Top summary cards now accurately reflect the selected payment method filter. - Checkout Improvements: - Added "Transferencia" as a payment option with numpad shortcuts. - Built a "Pinned Products" quick-access grid using localStorage. - Implemented a global processing lock to prevent duplicate sales on double-clicks. - Burned the default HTML number arrows with custom CSS. - Global Settings & Receipts: - Created a global settings modal accessible from the navbar. - Added localStorage toggles for custom business name and auto-print. - Added "Restaurant Mode" toggle to prompt for Client Name and Pickup Time, which now dynamically prints on the receipt. - Bug Fixes: Resolved Jinja `TemplateSyntaxError` crash and removed the duplicate search bar in the checkout view.
62 lines
2.8 KiB
HTML
62 lines
2.8 KiB
HTML
<nav class="navbar navbar-expand-md sticky-top px-3 mb-3">
|
|
<span class="navbar-brand">
|
|
SekiPOS
|
|
<small class="text-muted fw-normal" style="font-size:0.65rem;">v2.2</small>
|
|
</span>
|
|
|
|
<div class="ms-3 gap-2 d-flex">
|
|
<a href="/inventory" class="btn btn-sm {{ 'btn-primary' if active_page == 'inventory' else 'btn-outline-primary' }}">
|
|
<i class="bi bi-box-seam me-1"></i>Inventario
|
|
</a>
|
|
<a href="/checkout"
|
|
class="btn btn-sm {{ 'btn-primary' if active_page == 'checkout' else 'btn-outline-primary' }}">
|
|
<i class="bi bi-cart-fill me-1"></i>Caja
|
|
</a>
|
|
<a href="/sales" class="btn btn-sm {{ 'btn-primary' if active_page == 'sales' else 'btn-outline-primary' }}">
|
|
<i class="bi bi-receipt me-1"></i>Ventas
|
|
</a>
|
|
<a href="/gastos" class="btn btn-sm {{ 'btn-warning' if active_page == 'gastos' else 'btn-outline-warning' }}">
|
|
<i class="bi bi-wallet2 me-1"></i>Gastos
|
|
</a>
|
|
<a href="/dicom" class="btn btn-sm {{ 'btn-danger' if active_page == 'dicom' else 'btn-outline-danger' }}">
|
|
<i class="bi bi-journal-x me-1"></i>Dicom
|
|
</a>
|
|
</div>
|
|
|
|
<div class="ms-auto">
|
|
<div class="dropdown">
|
|
<button class="btn btn-accent dropdown-toggle" type="button" data-bs-toggle="dropdown">
|
|
<i class="bi bi-person-circle me-1"></i>
|
|
<span class="d-none d-sm-inline">{{ user.username }}</span>
|
|
</button>
|
|
<ul class="dropdown-menu dropdown-menu-end shadow">
|
|
<li>
|
|
<button class="dropdown-item" onclick="toggleTheme()">
|
|
<i class="bi bi-moon-stars me-2"></i>Modo Oscuro
|
|
</button>
|
|
</li>
|
|
<li>
|
|
<button class="dropdown-item" onclick="bootstrap.Modal.getOrCreateInstance(document.getElementById('settingsModal')).show()">
|
|
<i class="bi bi-gear-fill me-2"></i>Configuración
|
|
</button>
|
|
</li>
|
|
<li>
|
|
<a class="dropdown-item" href="/export/db">
|
|
<i class="bi bi-database-down me-2"></i>Descargar DB
|
|
</a>
|
|
</li>
|
|
<li>
|
|
<a class="dropdown-item" href="/export/images">
|
|
<i class="bi bi-images me-2"></i>Descargar Imágenes
|
|
</a>
|
|
</li>
|
|
<li><hr class="dropdown-divider"></li>
|
|
<li>
|
|
<a class="dropdown-item text-danger" href="/logout">
|
|
<i class="bi bi-box-arrow-right me-2"></i>Salir
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</nav> |