# DIRECTIVA-ORDENES-TRABAJO

**Version:** 1.0
**Fecha:** 2025-12-08
**Vertical:** Mecanicas Diesel
**Nivel:** 2B.2

---

## PROPOSITO

Define las directrices para la gestion de ordenes de trabajo en talleres de mecanica diesel.

---

## ALCANCE

Esta directiva aplica a:
- Creacion y gestion de ordenes de trabajo
- Asignacion de mecanicos y bahias
- Consumo de refacciones
- Facturacion de servicios

---

## PRINCIPIOS

### 1. Vinculacion Vehiculo-Cliente

Toda orden de trabajo debe estar vinculada a:
- Un cliente (propietario o responsable)
- Un vehiculo especifico (placas, VIN)
- Un historial de servicios previos

### 2. Trazabilidad de Refacciones

- Cada refaccion usada debe registrarse con numero de serie/lote
- Las refacciones con garantia deben ser identificables
- El consumo actualiza inventario en tiempo real

### 3. Control de Tiempos

- Tiempo estimado vs tiempo real
- Productividad por mecanico
- Tiempos muertos identificados

---

## FLUJO DE ORDEN DE TRABAJO

```
1. Recepcion del vehiculo
   |-- Inspeccion inicial
   |-- Diagnostico preliminar
   |
2. Creacion de orden de trabajo
   |-- Datos del cliente/vehiculo
   |-- Descripcion del problema
   |-- Cotizacion inicial
   |
3. Aprobacion del cliente
   |
4. Asignacion
   |-- Mecanico responsable
   |-- Bahia de trabajo
   |-- Fecha estimada de entrega
   |
5. Ejecucion
   |-- Registro de tiempos
   |-- Consumo de refacciones
   |-- Notas de trabajo
   |
6. Control de calidad
   |-- Prueba de ruta (si aplica)
   |-- Verificacion final
   |
7. Cierre
   |-- Facturacion
   |-- Entrega al cliente
```

---

## MODELO DE DATOS

### work_orders
```yaml
campos:
  - order_number: string (secuencia automatica)
  - customer_id: FK -> mecanica.customers
  - vehicle_id: FK -> mecanica.vehicles
  - status: enum(draft, quoted, approved, in_progress, quality, done, cancelled)
  - mechanic_id: FK -> auth.users
  - bay_number: string
  - problem_description: text
  - estimated_hours: decimal
  - actual_hours: decimal
  - estimated_delivery: timestamp
  - actual_delivery: timestamp
```

### work_order_lines
```yaml
campos:
  - order_id: FK -> work_orders
  - line_type: enum(labor, part)
  - service_type_id: FK -> service_types (si es labor)
  - product_id: FK -> inventory.products (si es part)
  - lot_id: FK -> inventory.lots (para trazabilidad)
  - quantity: decimal
  - unit_price: decimal
  - discount: decimal
```

---

## ESTADOS DE ORDEN

```
draft -----> quoted -----> approved -----> in_progress
                |              |                |
                v              v                v
            cancelled      rejected        quality
                                              |
                                              v
                                            done
```

### Transiciones Permitidas

| Estado Actual | Estados Siguientes |
|---------------|-------------------|
| draft | quoted, cancelled |
| quoted | approved, cancelled |
| approved | in_progress, cancelled |
| in_progress | quality, cancelled |
| quality | done, in_progress |
| done | (final) |
| cancelled | (final) |

---

## INTEGRACION CON ERP CORE

### Herencia de Specs

| Spec Core | Aplicacion |
|-----------|------------|
| SPEC-VALORACION-INVENTARIO | Costeo de refacciones |
| SPEC-TRAZABILIDAD-LOTES-SERIES | Garantias de partes |
| SPEC-MAIL-THREAD-TRACKING | Historial de la orden |

### APIs del Core a Extender

- `PartnerService` -> `CustomerService` (datos de cliente)
- `ProductService` -> `SparePartService` (refacciones)
- `InventoryService` -> Consumo de refacciones

---

## REGLAS DE NEGOCIO

1. **Cotizacion Obligatoria**: No se puede iniciar trabajo sin cotizacion aprobada
2. **Consumo de Inventario**: Las refacciones se reservan al aprobar, se consumen al cerrar
3. **Garantia de Trabajo**: Configurable por tipo de servicio (30, 60, 90 dias)
4. **Historial Vehicular**: Cada servicio se vincula al historial del vehiculo

---

## REFERENCIAS

- HERENCIA-SPECS-ERP-CORE.md
- DATABASE_INVENTORY.yml
- MASTER_INVENTORY.yml

---

**Documento de directiva oficial**
