# REPORTE DE AUDITORÍA — Manufacturing en New-Unity ERP Comercial
**Fecha:** 05/09/2026  
**Proyecto:** New-Unity ERP Comercial (Laravel 12 / PHP 8.3)  
**Objetivo:** Diagnosticar y mapear todos los residuos del módulo Manufacturing antes de ejecutar la desvinculación.  
**Estado:** Solo auditoría — ningún archivo fue modificado.

---

## 1. Carpeta `app/Modules/Manufacturing` — Inventario completo

**RESULTADO: La carpeta NO existe.**

El directorio `app/Modules/Manufacturing/` no se encontró en el proyecto. El código nunca fue copiado al repo New-Unity o fue eliminado antes de esta auditoría.

Módulos presentes en `app/Modules/`:
- Admin, Billing, Deliveries, Finance, Products, Production, Purchases, Sales, Warehouse

> ⚠️ Existe `app/Modules/Production/` que es el esqueleto vacío del módulo de producción (ver Sección 6).

---

## 2. Referencias externas al módulo (por archivo y línea)

### 2a. `app/Providers/`
**Sin coincidencias.** Ningún ServiceProvider registra Manufacturing.

### 2b. `routes/` y `app/Modules/*/Routes/web.php`
**Sin coincidencias.** Ningún archivo de rutas contiene "manufacturing" o "Manufacturing".

### 2c. `config/`
**Sin coincidencias.** Ningún archivo de configuración referencia manufacturing.

### 2d. `composer.json` / `package.json`
**Sin coincidencias.** No hay dependencias exclusivas de Manufacturing.

### 2e. `resources/views/` — Términos de manufactura en blades

| Archivo | Línea | Término | Contenido |
|---|---|---|---|
| `resources/views/layouts/partials/unity-navigation.blade.php` | 249 | `manufacturing` | `data-filter-tags="production manufacturing"` |
| `resources/views/layouts/partials/unity-navigation.blade.php` | 255 | `bom` | `{{ __('menu.bom') }}` |
| `app/Modules/Products/Resources/Views/brands/create.blade.php` | 177–184 | `WIP` | Checkbox material_type WIP en crear marca |
| `app/Modules/Products/Resources/Views/brands/edit.blade.php` | 188–196 | `WIP` | Checkbox material_type WIP en editar marca |
| `app/Modules/Products/Resources/Views/products/index.blade.php` | 106 | `WIP` | `<option value="WIP">{{ __('products.mat-wip') }}</option>` |

> Nota: No existe ninguna vista con `mfg_`, `work_center`, `routing` ni `planning_parameters`.

---

## 3. Vínculos en modelo `Product.php` y `ProductController.php`

### Product.php
- **Relaciones `mfg_*`:** Ninguna. Todas las relaciones apuntan a tablas de productos, precios, bundles y categorías.
- **`$fillable` relacionado con manufactura:**
  - `nature` — valores PT/MP (Producto Terminado / Materia Prima)
  - `source` — Manufactured / Purchased
  - `stockable` — boolean
  - `material_type` — ENUM en BD: `('RM','FG','TR','SV')` post-migración (WIP ya eliminado)
- **`planning_parameters`:** No existe en el modelo ni en ningún archivo de Products.
- **`material_type` con WIP:** El ENUM de la tabla `products` ya no incluye WIP (eliminado en migración `2026_06_27_100004`).

### ProductController.php
**Sin coincidencias.** No contiene referencias a `planning_parameters`, `mfg_`, `WIP`, `manufacturing` ni `work_center`.

### BrandsController.php
| Línea | Referencia |
|---|---|
| 62 | `'material_types.*' => 'in:TR,RM,FG,WIP,SV'` — validación incluye WIP |
| 127 | `'material_types.*' => 'in:TR,RM,FG,WIP,SV'` — validación incluye WIP |

> ⚠️ Las vistas de brands/create y brands/edit aún muestran el checkbox WIP aunque el ENUM de products ya lo eliminó. Hay inconsistencia entre la UI de marcas y el ENUM de la tabla.

---

## 4. Seeders afectados

**Sin coincidencias directas.** Ningún seeder en `database/seeders/` ni en `app/Modules/*/Database/Seeders/` siembra datos de Manufacturing ni asigna permisos `manufacturing.*`.

Existe `ProductionPermissionsSeeder.php` que registra:
- `production.access`
- `production.view`
- `production.create`
- `production.edit`
- `production.delete`

Estos permisos son del módulo Production (esqueleto vacío), no de Manufacturing.

---

## 5. Entradas de menú a eliminar

### Archivo: `resources/views/layouts/partials/unity-navigation.blade.php`

**Bloque completo — líneas 246–258:**

```blade
{{-- Production Module --}}
@can('production.access')
<li class="{{ request()->is('production/*') ? 'active open' : '' }}">
    <a href="#" title="{{ __('menu.production') }}" data-filter-tags="production manufacturing">
        <i class="fal fa-industry"></i>
        <span class="nav-link-text">{{ __('menu.production') }}</span>
    </a>
    <ul>
        <li><a href="#"><span class="nav-link-text">{{ __('menu.work_orders') }}</span></a></li>
        <li><a href="#"><span class="nav-link-text">{{ __('menu.bom') }}</span></a></li>
    </ul>
</li>
@endcan
```

**Observaciones:**
- Todos los `href="#"` — el bloque no tiene funcionalidad real.
- La referencia a `manufacturing` está solo en `data-filter-tags` (línea 249).
- Los ítems `work_orders` y `bom` no tienen rutas reales.

---

## 6. Migraciones `mfg_*` encontradas

**Sin migraciones con prefijo `mfg_`** en ninguna ubicación del proyecto.

### Migraciones relacionadas con WIP (residuos de manufactura en Products):

| Archivo | Contenido relevante |
|---|---|
| `app/Modules/Products/Database/Migrations/2026_06_21_000003_add_material_type_to_products_table.php` | Agrega columna `material_type ENUM('RM','FG','WIP','TR')` a `products` |
| `app/Modules/Products/Database/Migrations/2026_06_27_100003_add_material_types_to_validbrands.php` | Agrega columna `material_types JSON` a `validbrands` (incluye WIP en comentario) |
| `app/Modules/Products/Database/Migrations/2026_06_27_100004_remove_wip_and_create_wip_warehouse.php` | **Elimina WIP del ENUM** de `products`; crea tablas `warehouse_wip_locations` y `warehouse_wip_movements` |

> ⚠️ La migración `100004` creó las tablas `warehouse_wip_locations` y `warehouse_wip_movements` en la BD. Estas existen en la base de datos aunque no hay código que las use activamente.

---

## 7. Archivos de idioma `manufacturing.php`

**RESULTADO: No existen.**
- `lang/en/manufacturing.php` — No encontrado.
- `lang/es/manufacturing.php` — No encontrado.

Las referencias al menú de Production en `unity-navigation.blade.php` usan claves de `lang/*/menu.php`:
- `menu.production`
- `menu.work_orders`
- `menu.bom`

Estas claves existen en los archivos `menu.php` y deberán evaluarse al eliminar el bloque del menú.

---

## 8. Plan de desvinculación sugerido (sin ejecutar)

El módulo Manufacturing como tal **no existe** en New-Unity. Lo que existe son **residuos dispersos** de una etapa de diseño anterior. La desvinculación es de bajo riesgo.

### Paso 1 — Menú (impacto visual, cero riesgo funcional)
- **Eliminar** las líneas 246–258 de `unity-navigation.blade.php` (bloque Production completo).
- **Limpiar** las claves `menu.production`, `menu.work_orders`, `menu.bom` de `lang/en/menu.php` y `lang/es/menu.php` si no se usan en otro lugar.

### Paso 2 — ServiceProvider de Production (módulo esqueleto vacío)
- **Desregistrar** `ProductionServiceProvider` de `app/Providers/AppServiceProvider.php`.
- **Verificar** que ninguna ruta, vista ni seeder dependa de él antes de remover.
- El `Routes/web.php` de Production solo tiene una ruta de test (`/production/test`) — se puede eliminar.

### Paso 3 — Residuos WIP en Products
- **`BrandsController.php` líneas 62 y 127:** Quitar `WIP` de la regla de validación `in:TR,RM,FG,WIP,SV`.
- **`brands/create.blade.php` líneas 177–184 y `brands/edit.blade.php` líneas 188–196:** Eliminar el bloque de checkbox WIP.
- **`products/index.blade.php` línea 106:** Eliminar `<option value="WIP">`.
- **`Validbrand.php` línea 66:** Limpiar el comentario `// WIP → no aplica en catálogo de productos`.
- Los campos `nature` y `source` en `Product.$fillable` son genéricos (PT/MP, Manufactured/Purchased) — **evaluar** si se conservan para clasificación comercial o se eliminan.

### Paso 4 — Seeders
- **No hay seeders que neutralizar.** `ProductionPermissionsSeeder` registra permisos genéricos de Production — si se decide eliminar el módulo Production, este seeder se puede borrar o dejar inerte.

### Paso 5 — Migraciones (marcar como "no correr en Comercial")
- `2026_06_27_100004_remove_wip_and_create_wip_warehouse.php` creó `warehouse_wip_locations` y `warehouse_wip_movements`. Estas tablas existen en BD pero nadie las usa.
- **Opción A:** Dejarlas en BD (inofensivas, cero impacto).
- **Opción B:** Crear una migración nueva que las elimine (`drop table if exists`).
- Las migraciones anteriores (`000003`, `000004`) no se pueden revertir en producción sin riesgo — **no correr `down()`**.

### Paso 6 — Eliminación física del módulo Production
- Una vez completados los pasos 1–5, eliminar la carpeta `app/Modules/Production/` completa.
- Es seguro porque: sin controladores, sin modelos, sin vistas, sin migraciones activas, sin rutas funcionales.
- Antes de borrar, verificar que `ProductionServiceProvider` ya fue desregistrado en el Paso 2.

### Orden recomendado de ejecución
```
1. Menú → 2. ServiceProvider → 3. WIP en Products → 4. (Seeders: nada que hacer) → 5. Tablas WIP en BD → 6. Eliminar carpeta Production
```

---

## Resumen ejecutivo

| Área | Estado | Acción requerida |
|---|---|---|
| Carpeta `Manufacturing` | No existe | Ninguna |
| Menú Production en navegación | Existe, sin funcionalidad | Eliminar bloque (líneas 246–258) |
| ServiceProvider Production | Registrado pero vacío | Desregistrar |
| Rutas Production | Solo ruta de test `/production/test` | Eliminar |
| Vistas Production | No existen | Ninguna |
| Controladores Production | No existen | Ninguna |
| WIP en brands (UI + validación) | Inconsistente con ENUM actual | Limpiar 3 archivos |
| `planning_parameters` | No existe en ningún lado | Ninguna |
| Tablas `warehouse_wip_*` | Existen en BD, sin uso | Evaluar drop |
| Archivos lang manufacturing | No existen | Ninguna |
| Dependencias composer/npm | No existen | Ninguna |
| Seeders manufacturing | No existen | Ninguna |

**Nivel de riesgo de la desvinculación: BAJO.** El módulo nunca fue implementado — solo existe el esqueleto vacío de Production y residuos menores de WIP en la UI de marcas.
