# Reporte i18n — Módulo Manufacturing

**Proyecto:** Sweet Works ERP (`C:\laragon\www\SweetWorks`)  
**Módulo:** `app/Modules/Manufacturing/`  
**Fecha:** 30/08/2026  
**Alcance:** Sweep completo de i18n sobre todas las vistas del módulo Manufacturing.

---

## Resumen ejecutivo

Se auditaron y procesaron **25 archivos blade** del módulo Manufacturing.  
De éstos, **18 requirieron cambios** (7 ya estaban completamente i18n'd) y **2 archivos de idioma** se reconstruyeron en v2.0.

- **Textos reemplazados:** ~380 cadenas hardcodeadas
- **Claves agregadas:** 95+ nuevas claves en `lang/en/manufacturing.php` y `lang/es/manufacturing.php`
- **Sin cambios en:** lógica PHP, rutas, permisos, columnas de BD, clases CSS, variables Blade
- **Sin migraciones ni seeders**
- **Sin commit ni push** — cambios en working tree para revisión

---

## Archivos de idioma

| Archivo | Versión | Estado |
|---|---|---|
| `lang/en/manufacturing.php` | v2.0 | Reconstruido — 95+ claves organizadas por sección |
| `lang/es/manufacturing.php` | v2.0 | Reconstruido — traducciones completas al español |

### Secciones de claves en lang/manufacturing.php

| Sección | Prefijo de claves | Descripción |
|---|---|---|
| Comunes | (sin prefijo) | `status`, `active`, `save`, `cancel`, `select`, `none`, etc. |
| Work Centers | `wc-*` | Plantas, código, tipo, turnos, recursos, nota HTML con `:url` |
| Resources | `res-*` | Máquinas/líneas, planta, capacidad, ops de ruta asignadas |
| Production Lines | `line-*` | Líneas de producción, recursos asignados |
| Workforce | `workforce-*` | Placeholder pendiente de módulo HR |
| BOM | `bom-*` | LDM, líneas de componentes, tipos, explosión, pendiente |
| Routings | `routing-*` | Hojas de ruta, operaciones, columnas de tiempo, recurso |
| Planning Parameters | `pp-*` | Parámetros MRP, niveles de stock, lotes, vínculos |

---

## Archivos blade — Detalle de cambios

### ✅ Ya i18n'd — Sin cambios necesarios (7 archivos)

| Archivo | Versión | Nota |
|---|---|---|
| `boms/index.blade.php` | v1.0 | Completamente i18n'd desde origen |
| `routings/index.blade.php` | v1.0 | Completamente i18n'd desde origen |
| `planning-parameters/index.blade.php` | v1.0 | Completamente i18n'd desde origen |
| `production-lines/index.blade.php` | v1.0 | Completamente i18n'd desde origen |
| `production-lines/create.blade.php` | v1.0 | Completamente i18n'd desde origen |
| `production-lines/edit.blade.php` | v1.0 | Completamente i18n'd desde origen |
| `production-lines/show.blade.php` | v1.0 | Completamente i18n'd desde origen |

### 🔄 Work Centers — 4 archivos (100% hardcodeados → 100% i18n)

| Archivo | Versión | Cambios clave |
|---|---|---|
| `work-centers/index.blade.php` | v1.2 | Título, breadcrumb, columnas de tabla, badges |
| `work-centers/create.blade.php` | v1.2 | Labels de formulario; nota con `<a>` via `{!! __('manufacturing.wc-note-resources', ['url' => ...]) !!}` |
| `work-centers/edit.blade.php` | v1.2 | Mismo patrón que create; prefijo en h1 con `wc-edit-prefix` |
| `work-centers/show.blade.php` | v1.2 | Card de datos, card de recursos, contador con parámetro `:count` |

### 🔄 Resources — 4 archivos (100% hardcodeados → 100% i18n)

| Archivo | Versión | Cambios clave |
|---|---|---|
| `resources/index.blade.php` | v1.1 | Título, filtros, columnas, badges, acciones |
| `resources/create.blade.php` | v1.1 | Labels de formulario, sección de capacidad |
| `resources/edit.blade.php` | v1.1 | Mismo patrón que create + valores `old($param)` |
| `resources/show.blade.php` | v1.1 | DL labels, card de routing ops, columnas |

### 🔄 Routings — 3 archivos (100% hardcodeados → 100% i18n)

| Archivo | Versión | Cambios clave |
|---|---|---|
| `routings/create.blade.php` | v1.2 | Formulario + tabla de operaciones; `const strSelectResource = '{{ __("manufacturing.routing-select-resource") }}'` para JS |
| `routings/edit.blade.php` | v1.2 | Mismo patrón; pre-carga de operaciones existentes |
| `routings/show.blade.php` | v1.2 | Encabezado, badge contador `:count ops`, columnas, totales |

#### Nota técnica — JS i18n en routings

El string `'-- Recurso --'` dentro de `buildResourceOptions()` se reemplazó siguiendo el patrón seguro:

```javascript
// ✅ Correcto — string estático compilado por PHP antes de servir
const strSelectResource = '{{ __("manufacturing.routing-select-resource") }}';
// Luego en buildResourceOptions():
let opts = '<option value="">' + strSelectResource + '</option>';
```

**Por qué es seguro:** `__()` se evalúa en tiempo de compilación PHP. No hay variables JS dentro del parámetro → no hay riesgo de entidades HTML (`&#039;`) en bloque RAWTEXT.

### 🔧 BOMs — 4 archivos (correcciones menores)

| Archivo | Versión | Cambios |
|---|---|---|
| `boms/create.blade.php` | v1.1 | `"— Seleccionar —"` en HTML → `{{ __('manufacturing.select') }}`; idem en JS via `const strSelect` |
| `boms/edit.blade.php` | v1.1 | `"— Seleccionar —"` en HTML → `{{ __('manufacturing.select') }}` |
| `boms/show.blade.php` | v1.1 | `"Pendiente"` → `{{ __('manufacturing.bom-pending') }}` |
| `boms/_line_row.blade.php` | v1.1 | `title="Crítico"` → `title="{{ __('manufacturing.bom-line-critical') }}"` |

### 🔄 Planning Parameters — 3 archivos (100% hardcodeados → 100% i18n)

| Archivo | Versión | Cambios clave |
|---|---|---|
| `planning-parameters/create.blade.php` | v1.2 | Cards "Producto y Política", "Niveles de Inventario", "Lotes y Vínculos"; selects con `{{ __('manufacturing.none') }}`; checkboxes con etiquetas `pp-include-so-label`/`pp-include-mo-label` |
| `planning-parameters/edit.blade.php` | v1.2 | Mismo patrón con valores `old($param->field)` |
| `planning-parameters/show.blade.php` | v1.2 | DL labels completos, `pp-days` para sufijo "días", `yes`/`no` para booleanos, cards separados Inventario/Lotes |

---

## Claves nuevas agregadas a lang files (v2.0)

### Claves de routing (nuevas en v2.0)

```
routing-edit-prefix     → 'Edit Routing:'          / 'Editar Hoja de Ruta:'
routing-header          → 'Header'                  / 'Encabezado'
routing-select-resource → '— Resource —'            / '— Recurso —'
routing-no-ops-create   → "No operations. Use 'Add Operation'." / "Sin operaciones. Usa 'Agregar Operación'."
routing-no-ops-show     → 'No operations.'          / 'Sin operaciones.'
routing-plant           → 'Plant'                   / 'Planta'
routing-totals          → 'Totals'                  / 'Totales'
routing-ops-count       → ':count operations'       / ':count operaciones'
routing-resource-col    → 'Resource'                / 'Recurso'
routing-cycle-col       → 'Cycle'                   / 'T.Ciclo'
routing-setup-col       → 'Setup'                   / 'T.Setup'
routing-wait-col        → 'Wait'                    / 'T.Espera'
routing-total-col       → 'Total'                   / 'T.Total'
op-number               → 'Op #'                    / '#Op'
op-name                 → 'Operation Name'          / 'Nombre Operación'
op-add                  → 'Add Operation'           / 'Agregar Operación'
```

### Claves de planning-parameters (nuevas en v2.0)

```
pp-new-title            → 'New Planning Parameters'   / 'Nuevos Parámetros de Planeación'
pp-new-breadcrumb       → 'New'                        / 'Nuevos'
pp-edit-prefix          → 'Edit Parameters:'          / 'Editar Parámetros:'
pp-show-title           → 'Parameters:'               / 'Parámetros:'
pp-product-policy-card  → 'Product & Policy'          / 'Producto y Política'
pp-inventory-card       → 'Inventory Levels'          / 'Niveles de Inventario'
pp-lots-card            → 'Lots & Links'              / 'Lotes y Vínculos'
pp-lot-sizes-card       → 'Lot Sizes'                 / 'Tamaños de Lote'
pp-product-card         → 'Product'                   / 'Producto'
pp-links-card           → 'Links'                     / 'Vínculos'
pp-product              → 'Product'                   / 'Producto'
pp-policy               → 'Planning Policy'           / 'Política de Planeación'
pp-safety-stock         → 'Safety Stock'              / 'Stock de Seguridad'
pp-min-stock            → 'Min Stock'                 / 'Stock Mínimo'
pp-max-stock            → 'Max Stock'                 / 'Stock Máximo'
pp-reorder-point        → 'Reorder Point'             / 'Punto de Reorden'
pp-coverage-days        → 'Coverage Days'             / 'Cobertura (días)'
pp-coverage-short       → 'Coverage'                  / 'Cobertura'
pp-days                 → 'days'                      / 'días'
pp-forecast-pct         → 'Forecast %'                / '% Forecast'
pp-include-so-label     → 'Include open SO'           / 'Incluir OV abiertas'
pp-include-mo-label     → 'Include open MO'           / 'Incluir OM abiertas'
pp-min-lot              → 'Min Lot Size'              / 'Lote Mínimo'
pp-max-lot              → 'Max Lot Size'              / 'Lote Máximo'
pp-lot-multiple         → 'Lot Multiple'              / 'Múltiplo de Lote'
pp-lead-time            → 'Lead Time (days)'          / 'Tiempo de Entrega (días)'
pp-primary-resource     → 'Primary Resource'          / 'Recurso Principal'
pp-primary-bom          → 'Primary BOM'               / 'LDM Principal'
pp-primary-routing      → 'Primary Routing'           / 'Hoja de Ruta Principal'
pp-resource-dl          → 'Resource'                  / 'Recurso'
pp-bom-dl               → 'BOM'                       / 'LDM'
pp-route-dl             → 'Route'                     / 'Ruta'
```

### Claves de work-centers / resources (nuevas en v2.0)

```
wc-note-resources   → HTML con :url param (rendered via {!! !!})
wc-resources-count  → ':count resources' / ':count recursos' (param :count)
wc-plant-data       → 'Plant Data' / 'Datos de la Planta'
wc-resources-card   → 'Resources (Machines & Lines)' / 'Recursos (Máquinas y Líneas)'
wc-no-resources     → 'No resources registered.' / 'Sin recursos registrados.'
wc-add-resource     → 'Add Resource' / 'Agregar Recurso'
res-routing-ops     → 'Routing Operations Using This Resource' / 'Operaciones de Ruta que usan este Recurso'
res-no-ops          → 'No operations assigned.' / 'Sin operaciones asignadas.'
```

---

## Convenciones aplicadas

1. **`__('manufacturing.key')`** — patrón estándar en todos los blades
2. **`{!! __('manufacturing.wc-note-resources', ['url' => route(...)]) !!}`** — para claves con HTML (`<a>` tag)
3. **`const strVar = '{{ __("manufacturing.key") }}'`** — para JS estático (sin variables JS en parámetro)
4. **`{{ __('manufacturing.select') }}`** para `— Select —` / `— Seleccionar —`
5. **`{{ __('manufacturing.none') }}`** para `— None —` / `— Ninguno —`
6. **Parámetros** tipo `:count`, `:url`, `:days` donde aplica
7. **Versiones incrementadas** en todos los archivos modificados

---

## Pasos para aplicar en entorno

No se requieren migraciones ni seeders. Los archivos de idioma son autodetectados por Laravel. Verificar limpieza de caché si los cambios no se reflejan:

```bash
php artisan config:clear
php artisan view:clear
php artisan cache:clear
```

---

## Archivos modificados (lista completa)

```
lang/en/manufacturing.php                                       v2.0
lang/es/manufacturing.php                                       v2.0
app/Modules/Manufacturing/Resources/Views/work-centers/index.blade.php       v1.2
app/Modules/Manufacturing/Resources/Views/work-centers/create.blade.php      v1.2
app/Modules/Manufacturing/Resources/Views/work-centers/edit.blade.php        v1.2
app/Modules/Manufacturing/Resources/Views/work-centers/show.blade.php        v1.2
app/Modules/Manufacturing/Resources/Views/resources/index.blade.php          v1.1
app/Modules/Manufacturing/Resources/Views/resources/create.blade.php         v1.1
app/Modules/Manufacturing/Resources/Views/resources/edit.blade.php           v1.1
app/Modules/Manufacturing/Resources/Views/resources/show.blade.php           v1.1
app/Modules/Manufacturing/Resources/Views/routings/create.blade.php          v1.2
app/Modules/Manufacturing/Resources/Views/routings/edit.blade.php            v1.2
app/Modules/Manufacturing/Resources/Views/routings/show.blade.php            v1.2
app/Modules/Manufacturing/Resources/Views/boms/create.blade.php              v1.1
app/Modules/Manufacturing/Resources/Views/boms/edit.blade.php                v1.1
app/Modules/Manufacturing/Resources/Views/boms/show.blade.php                v1.1
app/Modules/Manufacturing/Resources/Views/boms/_line_row.blade.php           v1.1
app/Modules/Manufacturing/Resources/Views/planning-parameters/create.blade.php  v1.2
app/Modules/Manufacturing/Resources/Views/planning-parameters/edit.blade.php    v1.2
app/Modules/Manufacturing/Resources/Views/planning-parameters/show.blade.php    v1.2
```

**Sin cambios** (ya i18n'd):
```
app/Modules/Manufacturing/Resources/Views/boms/index.blade.php
app/Modules/Manufacturing/Resources/Views/routings/index.blade.php
app/Modules/Manufacturing/Resources/Views/planning-parameters/index.blade.php
app/Modules/Manufacturing/Resources/Views/production-lines/index.blade.php
app/Modules/Manufacturing/Resources/Views/production-lines/create.blade.php
app/Modules/Manufacturing/Resources/Views/production-lines/edit.blade.php
app/Modules/Manufacturing/Resources/Views/production-lines/show.blade.php
```
