fix: corregir ventas y mejorar catalogos

This commit is contained in:
mono
2026-10-25 18:40:00 -05:00
parent 6da4996cec
commit 9900235250
13 changed files with 274 additions and 9 deletions

View File

@@ -0,0 +1,2 @@
schema: spec-driven
created: 2026-10-25

View File

@@ -0,0 +1,23 @@
# 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.

View File

@@ -0,0 +1,30 @@
# Proposal
## Why
Registrar una venta falla cuando el movimiento de inventario se escribe fuera del alcance de la transacción Dexie. Además, catálogos grandes requieren búsqueda, controles de cantidad visibles e iconos funcionales para operar con rapidez.
## What Changes
- Incluir inventario en la transacción de venta.
- Activar los iconos MDI correctamente.
- Sustituir edición numérica incómoda por controles `+` y `-` y borrado visible.
- Añadir búsqueda de productos/productores en POS e Inventario.
- Documentar un CSV de prueba grande.
## Capabilities
### New Capabilities
- `sale-transaction-integrity`: venta e inventario persisten atómicamente.
- `catalog-large-list-ux`: búsqueda y controles adecuados para catálogos grandes.
### Modified Capabilities
- `toldo-poc`: mejora la experiencia de venta e inventario.
## Impact
- `packages/services/src/ventas/VentasService.ts`.
- Vistas POS e Inventario y configuración Vuetify.
- Tests, documentación de pruebas y APK.

View File

@@ -0,0 +1,21 @@
# Spec Delta
## Purpose
Permite operar catálogos con muchos productos sin perder orientación ni precisión al modificar cantidades o eliminar líneas.
## ADDED Requirements
### Requirement: Controles visibles del carrito
The system SHALL provide visible plus, minus, and delete controls for each sale line.
#### Scenario: Ajustar cantidad
- **WHEN** user selects plus or minus
- **THEN** quantity changes by one and never falls below one
### Requirement: Búsqueda de catálogo
The system SHALL filter products and producers by a visible search field without requiring network access.
#### Scenario: Buscar producto
- **WHEN** user enters a product or producer fragment
- **THEN** only matching catalog entries are shown

View File

@@ -0,0 +1,16 @@
# Spec Delta
## Purpose
Garantiza que confirmar una venta actualice ventas e inventario como una sola operación local, evitando datos parciales y errores de IndexedDB.
## ADDED Requirements
### Requirement: Persistencia atómica de venta
The system SHALL persist the sale, sale lines, and inventory movements in one local transaction.
#### Scenario: Venta confirmada
- **GIVEN** an open day and sufficient stock
- **WHEN** user confirms a sale
- **THEN** sale, lines, and negative inventory movement are stored
- **AND** no object store transaction error is raised

View File

@@ -0,0 +1,12 @@
# Tasks
## 1. Integridad y UX
- [x] 1.1 Incluir movimientos de inventario en la transacción de ventas y verificar con test de jornada real
- [x] 1.2 Activar MDI y controles visibles `+`, `-` y eliminar en POS; verificar compilación
- [x] 1.3 Añadir búsqueda local en POS e Inventario y documentar CSV grande
## 2. Verificación
- [x] 2.1 Ejecutar tests unitarios, `vue-tsc` y Playwright
- [x] 2.2 Generar APK actualizado y verificar instalación Android