Files

1.7 KiB

Design

Context

El Layout ya tiene menú y navegación suficiente; breadcrumbs duplican acciones. JornadaService.cerrarJornada crea un cuadre sin saldo real, mientras Cuadre.vue obliga a trabajar en otra ruta. POS muestra el catálogo completo antes del carrito.

Goals / Non-Goals

Goals: priorizar carrito y cobro en móvil, mantener operaciones densas separadas por tabs, y hacer que el cierre sea una operación única con datos completos.

Non-Goals: eliminar la capacidad de consultar cuadres históricos ni cambiar el esquema de pagos.

Decisions

  • POS: mostrar búsqueda y botón de selección; el catálogo completo vive en un v-dialog con lista filtrable. El carrito permanece visible arriba en móvil y en columna fija en pantallas grandes.
  • Devuelta: sólo se solicita para efectivo; se calcula como recibido menos total y no permite confirmar si es negativo.
  • Cierre: JornadaService.cerrarJornada recibe efectivo contado obligatorio y banco QR opcional, calcula diferencias, guarda CuadreCaja y marca la jornada cerrada en una transacción.
  • Inventario: tabs Catálogo, Ingresos y Ajustes en móvil; el menú deja de exponer Ajustes como módulo aislado.
  • Vuetify: reemplazar inputs/select/button HTML de Gastos y Ajustes por v-form, v-text-field, v-select, v-btn, v-list y alertas.

Risks / Trade-offs

  • [Cierre incompleto] El usuario puede no conocer el banco -> QR es opcional y se muestra como pendiente, sin bloquear el cierre.
  • [Cambio de API] Cerrar jornadas existentes sin saldo real requiere migración de comportamiento -> los registros históricos permanecen intactos.
  • [Modal POS] Un modal añade un paso -> evita que el carrito desaparezca y permite buscar entre catálogos grandes.