# Design ## Context La venta escribe ventas, líneas y movimientos. La transacción existente sólo declaraba las dos primeras tablas. La interfaz usa nombres MDI sin cargar la fuente y muestra listas completas sin filtro. ## Goals / Non-Goals **Goals:** garantizar atomicidad, visibilidad de acciones y búsqueda rápida sin backend. **Non-Goals:** paginación remota o rediseño completo del modelo de inventario. ## Decisions - Incluir `movimientosInventario` en el `db.transaction` de ventas. - Cargar la fuente CSS MDI y usar botones Vuetify explícitos para aumentar, disminuir y eliminar. - Filtrar listas localmente por texto normalizado, manteniendo el almacenamiento offline. - Mantener un CSV versionado en `docs` para reproducir pruebas manuales. ## Risks / Trade-offs - Filtrar en memoria es suficiente para la POC y evita dependencias; si el catálogo crece mucho deberá migrarse a índices/paginación. - El CSV de prueba aumenta el repositorio, pero permite repetir validaciones de UX y carga.