# REPORTE Manufacturing Etapa 1 — Sweet Works ERP
**Fecha:** 30/08/2026 | **Versión:** 1.0 | **Estado:** Completo — listo para migrate

---

## Resumen

Módulo `Manufacturing` implementado para Sweet Works ERP (exclusivo El Rosal / CONVERTIDORA GMV SA DE CV).

Cubre **Etapa 1 — Master Data**:
- Centros de Trabajo (Work Centers)
- Lista de Materiales (BOM) — multinivel
- Hojas de Ruta (Routing) con operaciones
- Parámetros de Planeación (MRP Config por producto)

---

## Archivos creados

### Migraciones
| Archivo | Tabla |
|---------|-------|
| `app/Modules/Manufacturing/Database/Migrations/2026_08_30_000001_create_mfg_work_centers_table.php` | `mfg_work_centers` |
| `app/Modules/Manufacturing/Database/Migrations/2026_08_30_000002_create_mfg_boms_table.php` | `mfg_boms` |
| `app/Modules/Manufacturing/Database/Migrations/2026_08_30_000003_create_mfg_bom_lines_table.php` | `mfg_bom_lines` |
| `app/Modules/Manufacturing/Database/Migrations/2026_08_30_000004_create_mfg_routings_table.php` | `mfg_routings` |
| `app/Modules/Manufacturing/Database/Migrations/2026_08_30_000005_create_mfg_routing_operations_table.php` | `mfg_routing_operations` |
| `app/Modules/Manufacturing/Database/Migrations/2026_08_30_000006_create_mfg_planning_parameters_table.php` | `mfg_planning_parameters` |

### Modelos
| Archivo | Descripción |
|---------|-------------|
| `app/Modules/Manufacturing/Models/MfgWorkCenter.php` | Centro de Trabajo. Accessor `effective_capacity_per_shift`. |
| `app/Modules/Manufacturing/Models/MfgBom.php` | BOM. Método `explode(qty)` para explosión recursiva. |
| `app/Modules/Manufacturing/Models/MfgBomLine.php` | Línea BOM. Auto-referencial `parent_line_id`. |
| `app/Modules/Manufacturing/Models/MfgRouting.php` | Hoja de Ruta. `total_time_minutes()`. |
| `app/Modules/Manufacturing/Models/MfgRoutingOperation.php` | Operación. `totalTimeMinutes()`. |
| `app/Modules/Manufacturing/Models/MfgPlanningParameter.php` | Parámetros MRP. `calculate_lot_size(qty)`. |

### Controladores
| Archivo | Rutas |
|---------|-------|
| `app/Modules/Manufacturing/Http/Controllers/WorkCenterController.php` | index, show, create, store, edit, update, toggleActive |
| `app/Modules/Manufacturing/Http/Controllers/BomController.php` | index, show, create, store, edit, update, approve, toggleActive |
| `app/Modules/Manufacturing/Http/Controllers/RoutingController.php` | index, show, create, store, edit, update, toggleActive |
| `app/Modules/Manufacturing/Http/Controllers/PlanningParameterController.php` | index, show, create, store, edit, update, toggleActive |

### Vistas (16 archivos)
| Entidad | Views |
|---------|-------|
| Work Centers | `work-centers/index`, `create`, `edit`, `show` |
| BOMs | `boms/index`, `create`, `edit`, `show`, `_line_row` (partial recursivo árbol) |
| Routings | `routings/index`, `create`, `edit`, `show` (con tiempo total al pie) |
| Planning Params | `planning-parameters/index`, `create`, `edit`, `show` |

### Infraestructura
| Archivo | Descripción |
|---------|-------------|
| `app/Modules/Manufacturing/Providers/ManufacturingServiceProvider.php` | Carga rutas, vistas (namespace `manufacturing::`), migraciones |
| `app/Modules/Manufacturing/Routes/web.php` | Rutas CRUD (estáticas antes de wildcards) |
| `lang/en/manufacturing.php` | 80+ claves inglés |
| `lang/es/manufacturing.php` | 80+ claves español |

### Seeders
| Seeder | Datos |
|--------|-------|
| `ManufacturingPermissionsSeeder.php` | 15 permisos `manufacturing.*` (firstOrCreate) |
| `MfgWorkCenterSeeder.php` | WC-01..WC-10 para El Rosal (company_id=1) |
| `MfgRoutingSeeder.php` | RTG-CARAMELO-BASE con 4 operaciones (requiere SFG-CARAMELO-BASE) |

### Archivos modificados
| Archivo | Cambio |
|---------|--------|
| `app/Providers/AppServiceProvider.php` | v1.8 — registra ManufacturingServiceProvider |
| `resources/views/layouts/partials/unity-navigation.blade.php` | v3.0 — sección Manufactura con 4 ítems |

---

## Permisos creados (15)

```
manufacturing.access          — ver módulo
manufacturing.view            — ver registros
manufacturing.workcenter.create / .edit / .delete
manufacturing.bom.create / .edit / .delete / .approve
manufacturing.routing.create / .edit / .delete
manufacturing.planning.create / .edit / .delete
```

---

## Tablas creadas

### `mfg_work_centers`
`id, company_id, code (unique/company), name, description, type (enum), capacity_per_hour, efficiency_percent, hours_per_shift, shifts_per_day, setup_time_minutes, is_active, timestamps, softDeletes`

### `mfg_boms`
`id, company_id, product_id (FK products), code (unique/company), name, type (enum), base_quantity, base_uom, version, is_active, approved_by (FK users), approved_at, notes, timestamps, softDeletes`

### `mfg_bom_lines`
`id, bom_id, parent_line_id (self-ref nullable), component_product_id, line_number, quantity, uom, scrap_percent, yield_percent, is_critical, can_substitute, substitute_product_id, operation_id, notes, timestamps`

### `mfg_routings`
`id, company_id, product_id (FK products), code (unique/company), name, version, is_active, timestamps, softDeletes`

### `mfg_routing_operations`
`id, routing_id, operation_number (×10), name, description, work_center_id, time_type (enum), setup_time_minutes, process_time_minutes, wait_time_minutes, move_time_minutes, inspection_time_minutes, temperature_target, temperature_unit, scrap_expected_percent, requires_qa, qa_instructions, is_active, timestamps`

### `mfg_planning_parameters`
`id, company_id, product_id (unique/company), planning_policy (enum), safety_stock, min_stock, max_stock, reorder_point, coverage_days, forecast_percent, include_open_so, include_open_mo, min_lot_size, max_lot_size, lot_multiple, primary_work_center_id, primary_bom_id, primary_routing_id, lead_time_days, is_active, timestamps`

---

## Instrucciones de instalación

```bash
# Desde C:\laragon\www\SweetWorks (o doble-click en el BAT)
instalar_manufacturing_etapa1.bat
```

O manualmente:
```bash
C:\laragon\bin\php\php-8.3.15-Win32-vs16-x64\php.exe artisan migrate
C:\laragon\bin\php\php-8.3.15-Win32-vs16-x64\php.exe artisan db:seed --class="App\Modules\Manufacturing\Database\Seeders\ManufacturingPermissionsSeeder"
C:\laragon\bin\php\php-8.3.15-Win32-vs16-x64\php.exe artisan db:seed --class="App\Modules\Manufacturing\Database\Seeders\MfgWorkCenterSeeder"
C:\laragon\bin\php\php-8.3.15-Win32-vs16-x64\php.exe artisan db:seed --class="App\Modules\Manufacturing\Database\Seeders\MfgRoutingSeeder"
C:\laragon\bin\php\php-8.3.15-Win32-vs16-x64\php.exe artisan permission:cache-reset
```

**Post-seeder en producción:** `php artisan permission:cache-reset`

---

## Datos de El Rosal (WC-01..WC-10)

| Código | Nombre | Tipo | Cap/h |
|--------|--------|------|-------|
| WC-01 | Mezcladora Industrial | machine | 240 |
| WC-02 | Olla de Reposo | machine | 240 |
| WC-03 | Cocinador Continuo | machine | 37 |
| WC-04 | Mesa de Enfriamiento | area | 30 |
| WC-05..08 | Líneas 1-4 | line | — |
| WC-09 | Bombos de Confitado | machine | — |
| WC-10 | Envolvedoras | machine | — |

---

## Pendientes Etapa 2

- [ ] Órdenes de Fabricación (Manufacturing Orders)
- [ ] Planning Run (corrida MRP que genera propuestas)
- [ ] Inventario en proceso (WIP)
- [ ] Reportes de producción (eficiencia por WC, consumos reales vs. teóricos)
- [ ] Integración con Warehouse (consumo de materia prima al abrir MO)
- [ ] Completar DatabaseSeeder con los 3 seeders Manufacturing
