=================================================================== ALIGANT ERP V5 - REGLA GLOBAL DE RUT (chileno) =================================================================== Formateo automático, validación de dígito verificador (módulo 11), y guardado normalizado. Frontend + backend. Reutilizable en cualquier módulo con RUT. Pantalla: 12.345.678-5 (con puntos) Base datos: 12345678-5 (sin puntos, DV en mayúscula) Mensaje: "El RUT ingresado no es válido." ------------------------------------------------------------------- 1) DÓNDE PEGA CADA ARCHIVO (copiar sobre el proyecto) ------------------------------------------------------------------- Descomprime y copia respetando rutas dentro de: C:\xampp2\htdocs\aligant_erp_v5\ PIEZAS REUTILIZABLES (sirven para TODOS los módulos): app\Support\Rut.php (NUEVO) helper formato/validación app\Rules\Rut.php (NUEVO) regla de validación backend resources\views\partials\rut.blade.php (NUEVO) script frontend (formateo+validación) APLICADO A EMPRESAS (reemplazan a los actuales): app\Http\Requests\EmpresaRequest.php resources\views\empresas\_form.blade.php resources\views\empresas\index.blade.php resources\views\empresas\show.blade.php ------------------------------------------------------------------- 2) COMANDO ------------------------------------------------------------------- php artisan optimize:clear (y recarga con Ctrl+F5) No hay migraciones nuevas: la columna 'rut' de empresas ya existe y el formato normalizado (12345678-5) cabe en ella. ------------------------------------------------------------------- 3) CÓMO APLICARLO A OTRO MÓDULO (Clientes, Proveedores, Trabajadores...) ------------------------------------------------------------------- Es el mismo patrón en 4 pasos: (a) MIGRACIÓN - columna rut: $table->string('rut', 12)->unique(); (b) FORM REQUEST del módulo: use App\Rules\Rut as RutRule; use App\Support\Rut as RutHelper; protected function prepareForValidation(): void { if ($this->has('rut')) { $this->merge([ 'rut' => RutHelper::normalize($this->input('rut')) ?? $this->input('rut'), ]); } } // dentro de rules(): 'rut' => ['required', 'string', 'max:12', new RutRule, Rule::unique('NOMBRE_TABLA', 'rut')->ignore($this->route('PARAM')?->id)], (c) FORMULARIO (Blade) - el input y el script: @error('rut')

{{ $message }}

@enderror ... @include('partials.rut') {{-- al final del formulario --}} (d) MOSTRAR en listados/fichas con formato de pantalla: {{ \App\Support\Rut::format($modelo->rut) }} -> Cualquier de la página queda formateado y validado automáticamente. El backend siempre revalida y normaliza. ------------------------------------------------------------------- 4) NOTA SOBRE USUARIOS ------------------------------------------------------------------- El módulo Usuarios actualmente NO tiene columna 'rut'. Si quieres que los usuarios tengan RUT, aplica el patrón anterior: - migración que agregue 'rut' a la tabla users, - agregar la regla en UserRequest, - agregar el input data-rut en usuarios/_form.blade.php, - mostrarlo con Rut::format en usuarios/index y show. Dime y te dejo ese módulo ya enchufado (incluida la migración). ------------------------------------------------------------------- 5) DETALLES TÉCNICOS ------------------------------------------------------------------- - Validación backend con la regla App\Rules\Rut (no se guarda si el DV es incorrecto; muestra "El RUT ingresado no es válido."). - Validación frontend con partials/rut.blade.php (mismo mensaje, bloquea el envío del formulario si el DV es incorrecto). - El script es autoprotegido: puedes @include('partials.rut') en varios formularios sin que se ejecute dos veces. - Se guarda normalizado (12345678-5); se muestra formateado (12.345.678-5). ===================================================================