feat(pos/workshop): add lightweight workshop/taller module
- Add DB migration v4.4_workshop.sql (sale_id, service_catalog, reserved_quantity, SO_RESERVE/SO_RELEASE operation types). - Extend service_order_engine with inventory reservation, release, convert-to-sale, mechanic assignment, and service catalog CRUD. - Extend service_order_bp with /reserve, /convert-to-sale, /assign-mechanic, and /service-catalog endpoints. - Create workshop Kanban UI: workshop.html, workshop.js, workshop.css. - Add /pos/workshop route and sidebar navigation (sidebar.js + inline templates). - Add 11 unit tests with mocked cursors. - Update FASES_IMPLEMENTADAS.md with FASE 9 documentation. Tests: 92 passing (61 console + 20 Facturapi + 11 workshop).
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
# Nexus POS — Resumen de Fases Implementadas
|
||||
|
||||
**Fecha:** 2026-06-15
|
||||
**Versión DB:** v4.3
|
||||
**Tests:** 93/93 pasando (pytest: 61 consola + 20 Facturapi; POS requieren PostgreSQL)
|
||||
**Commit:** `6aff32f` (HEAD + cambios sin commitear)
|
||||
**Versión DB:** v4.4
|
||||
**Tests:** 92/92 pasando (pytest: 61 consola + 20 Facturapi + 11 Taller; POS requieren PostgreSQL)
|
||||
**Commit:** `d678872` (HEAD + cambios sin commitear)
|
||||
|
||||
---
|
||||
|
||||
@@ -202,6 +202,7 @@ METABASE_URL=http://localhost:3000
|
||||
| — | **QWEN 3.6 AI Vehicle Fitment** | 2026-04-29 | `623c57b` |
|
||||
| — | **Migración CFDI de Horux a Facturapi** | 2026-06-14 | `8796cad` |
|
||||
| — | **Setup/estado masivo de organizaciones Facturapi** | 2026-06-15 | — |
|
||||
| — | **Módulo de Taller (Workshop Lite)** | 2026-06-15 | — |
|
||||
|
||||
## FASE 7: Precios de Proveedor + Multi-sucursal + Factura Global
|
||||
|
||||
@@ -292,6 +293,32 @@ python3 scripts/check_facturapi_tenants.py
|
||||
|
||||
---
|
||||
|
||||
## FASE 9: Módulo de Taller (Workshop Lite)
|
||||
|
||||
**Commit:** (en progreso)
|
||||
**Migración DB:** `v4.4_workshop.sql`
|
||||
|
||||
| Feature | Archivos | Capacidades |
|
||||
|---------|----------|-------------|
|
||||
| **Migración DB** | `v4.4_workshop.sql` | `service_orders.sale_id`, tabla `service_catalog`, columna `reserved_quantity`, tipos `SO_RESERVE`/`SO_RELEASE` en `inventory_operations` |
|
||||
| **Reserva de inventario** | `service_order_engine.py` | `reserve_item()` y `release_item()` para apartar/liberar refacciones del stock de la sucursal |
|
||||
| **Conversión a venta** | `service_order_engine.py` | `convert_to_sale()` crea una venta en `sales` con refacciones + mano de obra, descuenta inventario y guarda `sale_id` |
|
||||
| **Catálogo de servicios** | `service_order_engine.py`, `service_order_bp.py` | Conceptos reutilizables de mano de obra (ej. "Cambio de aceite") |
|
||||
| **Endpoints taller** | `service_order_bp.py` | `POST /:id/items/:item_id/reserve`, `POST /:id/convert-to-sale`, `PUT /:id/assign-mechanic`, CRUD `/service-catalog` |
|
||||
| **Interfaz Kanban** | `workshop.html`, `workshop.js`, `workshop.css` | Vista por columnas, tarjetas de orden, modal de detalle, cambio de estado, agregar refacciones/mano de obra |
|
||||
| **Navegación** | `sidebar.js`, plantillas inline | Entrada "Taller" en el menú de gestión |
|
||||
| **Tests** | `pos/tests/test_service_order_integration.py` | 11 tests con cursores mocks; validan reserva, liberación, conversión a venta y catálogo |
|
||||
|
||||
### Flujo de uso
|
||||
|
||||
1. El paquetero crea la orden desde `/pos/workshop` (cliente, vehículo, mecánico, falla).
|
||||
2. El mecánico diagnostica y agrega refacciones y mano deobra.
|
||||
3. Se reservan las refacciones del inventario de la sucursal.
|
||||
4. Cuando el vehículo está listo, se convierte la orden en venta.
|
||||
5. Desde facturación se timbra el CFDI de la venta generada.
|
||||
|
||||
---
|
||||
|
||||
## Mejoras Pendientes (Roadmap Actualizado)
|
||||
|
||||
### 🔴 Crítico — Deuda Técnica
|
||||
|
||||
Reference in New Issue
Block a user