erp-mecanicas-diesel/docs/02-definicion-modulos/MMD-002-ordenes-servicio/historias-usuario/US-MMD002-005-registrar-trabajos.md

165 lines
3.7 KiB
Markdown

# US-MMD002-005: Registrar Trabajos Realizados
## Metadata
| Campo | Valor |
|-------|-------|
| **ID** | US-MMD002-005 |
| **Epica** | EPIC-MMD-002 - Ordenes de Servicio |
| **Modulo** | ordenes-servicio |
| **Prioridad** | P0 |
| **Story Points** | 8 |
| **Sprint** | Sprint 4 |
| **Estado** | Backlog |
---
## Historia de Usuario
**Como** mecanico,
**quiero** registrar los trabajos realizados con tiempo y refacciones utilizadas,
**para** documentar el servicio y facilitar la facturacion.
## Descripcion Detallada
El mecanico debe poder agregar lineas de trabajo a la orden: que servicio realizo, cuanto tiempo le tomo, y que refacciones utilizo. Esto permite calcular el costo total y tener trazabilidad del servicio.
---
## Criterios de Aceptacion
**Escenario 1: Agregar servicio del catalogo**
```gherkin
DADO que tengo una orden asignada
CUANDO agrego un servicio del catalogo:
| Servicio | Cantidad | Unidad | Precio |
| Cambio de aceite | 1 | evento | $350 |
ENTONCES el servicio se agrega a la orden
Y el subtotal se actualiza
```
**Escenario 2: Registrar tiempo de trabajo**
```gherkin
DADO que realizo una reparacion
CUANDO registro el tiempo:
| Trabajo | Tiempo | Precio/hora |
| Reparacion bomba | 3.5 hrs | $450 |
ENTONCES se calcula: 3.5 x $450 = $1,575
Y se agrega al total de mano de obra
```
**Escenario 3: Agregar refaccion utilizada**
```gherkin
DADO que uso una refaccion
CUANDO la agrego a la orden:
| Refaccion | Cantidad | Precio |
| Filtro diesel | 2 | $225 c/u |
ENTONCES se descuenta del inventario
Y se agrega al costo de refacciones: $450
```
**Escenario 4: Ver resumen de orden**
```gherkin
DADO que he registrado varios trabajos
CUANDO veo el resumen
ENTONCES veo:
| Concepto | Monto |
| Mano de obra | $1,925 |
| Refacciones | $1,850 |
| Subtotal | $3,775 |
| IVA 16% | $604 |
| Total | $4,379 |
```
**Escenario 5: Agregar notas al trabajo**
```gherkin
DADO que encuentro algo importante
CUANDO agrego nota: "Encontre fuga en radiador, requiere atencion"
ENTONCES la nota se guarda en la orden
Y es visible para el jefe de taller y recepcion
```
---
## Estructura de Item de Orden
```typescript
interface OrderItem {
id: string;
order_id: string;
type: 'service' | 'labor' | 'part';
// Si es servicio del catalogo
service_id?: string;
// Si es refaccion
part_id?: string;
description: string;
quantity: number;
unit: string;
unit_price: number;
discount?: number;
total: number;
// Para mano de obra
hours?: number;
hourly_rate?: number;
mechanic_id: string;
created_at: Date;
notes?: string;
}
```
---
## Tareas Tecnicas
**Database:**
- [ ] DB-023: Crear tabla `order_items`
- [ ] DB-024: Crear tabla `order_notes`
- [ ] DB-025: Trigger para actualizar totales de orden
**Backend:**
- [ ] BE-050: Crear OrderItemEntity
- [ ] BE-051: Crear OrderItemService con CRUD
- [ ] BE-052: Endpoint POST /api/orders/:id/items
- [ ] BE-053: Calcular totales automaticamente
- [ ] BE-054: Integracion con inventario (descontar stock)
**Frontend:**
- [ ] FE-048: Crear OrderWorkPanel component
- [ ] FE-049: Crear ServiceSelector component
- [ ] FE-050: Crear PartSelector component
- [ ] FE-051: Crear OrderSummaryCard
- [ ] FE-052: Formulario de tiempo de trabajo
---
## Dependencias
**Depende de:**
- [ ] US-MMD002-003: Orden asignada
- [ ] US-MMD001-003: Catalogo de servicios
- [ ] US-MMD004-*: Inventario de refacciones
**Bloquea:**
- [ ] US-MMD002-008: Cerrar orden
---
## Definition of Done (DoD)
- [ ] Agregar servicios del catalogo
- [ ] Registrar tiempo de trabajo
- [ ] Agregar refacciones (descuenta inventario)
- [ ] Calcular totales automaticos
- [ ] Agregar notas
- [ ] Tests pasando
---
**Creada por:** Requirements-Analyst
**Fecha:** 2025-12-06