Sprint 3-4 deliverables: - 28 epics documented (MCH-001 to MCH-028) - 7 development phases fully documented - DATABASE_INVENTORY.yml, BACKEND_INVENTORY.yml, FRONTEND_INVENTORY.yml - Task traces for database and frontend 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
160 lines
3.6 KiB
Markdown
160 lines
3.6 KiB
Markdown
# MCH-004: Punto de Venta Basico
|
|
|
|
## Metadata
|
|
- **Codigo:** MCH-004
|
|
- **Fase:** 1 - MVP Core
|
|
- **Prioridad:** P0
|
|
- **Estado:** Completado
|
|
- **Fecha inicio:** 2026-01-06
|
|
- **Fecha fin:** 2026-01-06
|
|
|
|
## Descripcion
|
|
|
|
Sistema de punto de venta (POS) optimizado para micro-negocios: interfaz tactil rapida, carrito de compra, multiples metodos de pago, generacion de tickets, y registro de ventas.
|
|
|
|
## Objetivos
|
|
|
|
1. Grid de productos tactil
|
|
2. Carrito con modificacion de cantidades
|
|
3. Multiples metodos de pago
|
|
4. Generacion de ticket/recibo
|
|
5. Historial de ventas del dia
|
|
|
|
## Alcance
|
|
|
|
### Incluido
|
|
- Grid de productos por categoria
|
|
- Carrito con +/- cantidad
|
|
- Descuentos por item o total
|
|
- Metodos: efectivo, tarjeta, fiado
|
|
- Ticket imprimible/compartible
|
|
- Reporte diario de ventas
|
|
|
|
### Excluido
|
|
- Ventas con factura fiscal - MCH-027
|
|
- Pagos parciales mixtos - fase posterior
|
|
- Mesas/comandas (restaurante) - vertical separada
|
|
|
|
## Modelo de Datos
|
|
|
|
### Tablas (schema: sales)
|
|
|
|
**sales**
|
|
- id, tenant_id, user_id, customer_id
|
|
- subtotal, tax, discount, total
|
|
- payment_method, payment_reference
|
|
- status (completed/voided), notes, created_at
|
|
|
|
**sale_items**
|
|
- id, sale_id, product_id, quantity
|
|
- unit_price, discount, total
|
|
|
|
**payment_methods**
|
|
- id, tenant_id, name, type, settings, active
|
|
|
|
**cash_registers**
|
|
- id, tenant_id, name, opening_balance, current_balance, status
|
|
|
|
## Endpoints API
|
|
|
|
| Metodo | Endpoint | Descripcion |
|
|
|--------|----------|-------------|
|
|
| GET | /sales | Listar ventas |
|
|
| GET | /sales/:id | Obtener venta |
|
|
| POST | /sales | Registrar venta |
|
|
| POST | /sales/:id/void | Cancelar venta |
|
|
| GET | /sales/daily-report | Reporte del dia |
|
|
| GET | /sales/by-date | Ventas por rango |
|
|
|
|
## Flujos de Usuario
|
|
|
|
### Venta Rapida
|
|
```
|
|
1. Empleado abre POS
|
|
2. Selecciona productos del grid
|
|
- O escanea codigo de barras
|
|
3. Ajusta cantidades si necesario
|
|
4. Aplica descuento (opcional)
|
|
5. Selecciona metodo de pago
|
|
6. Si efectivo: ingresa monto recibido
|
|
7. Sistema calcula cambio
|
|
8. Genera ticket
|
|
9. Venta registrada
|
|
```
|
|
|
|
### Venta a Credito (Fiado)
|
|
```
|
|
1. Empleado agrega productos
|
|
2. Selecciona cliente existente
|
|
3. Elige "Fiado" como pago
|
|
4. Sistema verifica limite de credito
|
|
5. Si aprobado: registra venta
|
|
6. Actualiza saldo del cliente
|
|
```
|
|
|
|
## Entregables
|
|
|
|
| Entregable | Estado | Archivo |
|
|
|------------|--------|---------|
|
|
| DDL sales schema | Completado | `06-sales.sql` |
|
|
| sales.module | Completado | `modules/sales/` |
|
|
| POS.tsx | Completado | `pages/POS.tsx` |
|
|
| Cart component | Completado | `components/pos/Cart.tsx` |
|
|
| PaymentModal | Completado | `components/pos/PaymentModal.tsx` |
|
|
| ReceiptModal | Completado | `components/pos/ReceiptModal.tsx` |
|
|
|
|
## Dependencias
|
|
|
|
### Depende de
|
|
- MCH-001 (Infraestructura)
|
|
- MCH-002 (Auth)
|
|
- MCH-003 (Productos)
|
|
|
|
### Bloquea a
|
|
- MCH-005 (Pagos)
|
|
- MCH-008 (Fiados)
|
|
- MCH-009 (Predicciones)
|
|
|
|
## Criterios de Aceptacion
|
|
|
|
- [x] Grid de productos carga correctamente
|
|
- [x] Carrito funciona (agregar/quitar/cantidad)
|
|
- [x] Descuentos se aplican correctamente
|
|
- [x] Pago en efectivo con cambio
|
|
- [x] Ticket se genera con todos los datos
|
|
- [x] Historial de ventas funcional
|
|
|
|
## UI Components
|
|
|
|
### POS Page
|
|
- Grid de productos (izquierda)
|
|
- Carrito (derecha)
|
|
- Barra de busqueda/escaneo
|
|
|
|
### ProductGrid
|
|
- Productos como cards con imagen
|
|
- Categorias como tabs
|
|
- Click para agregar al carrito
|
|
|
|
### Cart
|
|
- Lista de items con cantidad
|
|
- Botones +/- por item
|
|
- Total, descuento, impuesto
|
|
- Boton "Cobrar"
|
|
|
|
### PaymentModal
|
|
- Metodos de pago disponibles
|
|
- Campo monto recibido (efectivo)
|
|
- Calculo de cambio
|
|
- Boton confirmar
|
|
|
|
### ReceiptModal
|
|
- Datos del negocio
|
|
- Lista de productos
|
|
- Totales
|
|
- Botones: imprimir, compartir, cerrar
|
|
|
|
---
|
|
|
|
**Ultima actualizacion:** 2026-01-07
|