From 1510a8ef1e189b48317bf40aaea6b34e07f890a4 Mon Sep 17 00:00:00 2001 From: Juan Felipe Duarte Date: Thu, 15 Jan 2026 08:39:58 -0500 Subject: [PATCH] Refactor TintoreriaProceso to Tintoreria resource and model Renamed TintoreriaProcesoResource, model, and migration to Tintoreria, updating all related references and page classes. Added preload to Select fields for better performance in forms. This change standardizes naming and improves resource management for tintoreria processes. --- .../Resources/InventarioPrendaResource.php | 85 ++++++++++--------- .../Resources/ProcesoAcabadoResource.php | 1 + ...esoResource.php => TintoreriaResource.php} | 22 +++-- .../Pages/CreateTintoreria.php | 12 +++ .../Pages/EditTintoreria.php | 19 +++++ .../Pages/ListTintorerias.php | 19 +++++ .../{TintoreriaProceso.php => Tintoreria.php} | 2 +- ...01_15_133344_create_tintorerias_table.php} | 5 +- 8 files changed, 110 insertions(+), 55 deletions(-) rename app/Filament/Resources/{TintoreriaProcesoResource.php => TintoreriaResource.php} (85%) create mode 100644 app/Filament/Resources/TintoreriaResource/Pages/CreateTintoreria.php create mode 100644 app/Filament/Resources/TintoreriaResource/Pages/EditTintoreria.php create mode 100644 app/Filament/Resources/TintoreriaResource/Pages/ListTintorerias.php rename app/Models/{TintoreriaProceso.php => Tintoreria.php} (97%) rename database/migrations/{2026_01_10_145007_create_tintoreria_procesos_table.php => 2026_01_15_133344_create_tintorerias_table.php} (88%) diff --git a/app/Filament/Resources/InventarioPrendaResource.php b/app/Filament/Resources/InventarioPrendaResource.php index c9b5d7b..9e2b762 100644 --- a/app/Filament/Resources/InventarioPrendaResource.php +++ b/app/Filament/Resources/InventarioPrendaResource.php @@ -33,61 +33,62 @@ class InventarioPrendaResource extends Resource public static function form(Form $form): Form { return $form->schema([ - Section::make('Ingreso a Inventario') - ->schema([ - Select::make('orden_produccion_id') - ->label('Orden de Producción') - ->relationship('ordenProduccion', 'numero_orden') - ->searchable() - ->required(), + Section::make('Ingreso a Inventario') + ->schema([ + Select::make('orden_produccion_id') + ->label('Orden de Producción') + ->relationship('ordenProduccion', 'numero_orden') + ->searchable() + ->preload() + ->required(), - TextInput::make('cantidad_terminada') - ->numeric() - ->required(), + TextInput::make('cantidad_terminada') + ->numeric() + ->required(), - TextInput::make('cantidad_disponible') - ->disabled() - ->dehydrated(false), + TextInput::make('cantidad_disponible') + ->disabled() + ->dehydrated(false), - DatePicker::make('fecha_ingreso') - ->required(), + DatePicker::make('fecha_ingreso') + ->required(), - Select::make('estado') - ->options([ - 'en_bodega' => 'En bodega', - 'lista_despacho' => 'Lista para despacho', - ]) - ->required(), - ]) - ->columns(2), - ]); + Select::make('estado') + ->options([ + 'en_bodega' => 'En bodega', + 'lista_despacho' => 'Lista para despacho', + ]) + ->required(), + ]) + ->columns(2), + ]); } public static function table(Table $table): Table { return $table - ->columns([ - TextColumn::make('ordenProduccion.numero_orden') - ->label('OP') - ->searchable(), + ->columns([ + TextColumn::make('ordenProduccion.numero_orden') + ->label('OP') + ->searchable(), - TextColumn::make('cantidad_terminada'), + TextColumn::make('cantidad_terminada'), - TextColumn::make('cantidad_disponible'), + TextColumn::make('cantidad_disponible'), - TextColumn::make('fecha_ingreso') - ->date(), + TextColumn::make('fecha_ingreso') + ->date(), - BadgeColumn::make('estado') - ->formatStateUsing(fn ($state) => match ($state) { - 'en_bodega' => 'En bodega', - 'lista_despacho' => 'Lista para despacho', - }) - ->colors([ - 'secondary' => 'en_bodega', - 'success' => 'lista_despacho', - ]), - ]) + BadgeColumn::make('estado') + ->formatStateUsing(fn($state) => match ($state) { + 'en_bodega' => 'En bodega', + 'lista_despacho' => 'Lista para despacho', + }) + ->colors([ + 'secondary' => 'en_bodega', + 'success' => 'lista_despacho', + ]), + ]) ->filters([ // ]) diff --git a/app/Filament/Resources/ProcesoAcabadoResource.php b/app/Filament/Resources/ProcesoAcabadoResource.php index be702a1..80f3e3b 100644 --- a/app/Filament/Resources/ProcesoAcabadoResource.php +++ b/app/Filament/Resources/ProcesoAcabadoResource.php @@ -51,6 +51,7 @@ class ProcesoAcabadoResource extends Resource ->label('Proveedor (opcional)') ->relationship('proveedor', 'nombre') ->searchable() + ->preload() ->nullable(), TextInput::make('responsable_interno') diff --git a/app/Filament/Resources/TintoreriaProcesoResource.php b/app/Filament/Resources/TintoreriaResource.php similarity index 85% rename from app/Filament/Resources/TintoreriaProcesoResource.php rename to app/Filament/Resources/TintoreriaResource.php index fa3d090..a869408 100644 --- a/app/Filament/Resources/TintoreriaProcesoResource.php +++ b/app/Filament/Resources/TintoreriaResource.php @@ -2,9 +2,9 @@ namespace App\Filament\Resources; -use App\Filament\Resources\TintoreriaProcesoResource\Pages; -use App\Filament\Resources\TintoreriaProcesoResource\RelationManagers; -use App\Models\TintoreriaProceso; +use App\Filament\Resources\TintoreriaResource\Pages; +use App\Filament\Resources\TintoreriaResource\RelationManagers; +use App\Models\Tintoreria; use Filament\Forms; use Filament\Forms\Form; use Filament\Resources\Resource; @@ -24,9 +24,9 @@ use Filament\Tables\Columns\{ BadgeColumn }; -class TintoreriaProcesoResource extends Resource +class TintoreriaResource extends Resource { - protected static ?string $model = TintoreriaProceso::class; + protected static ?string $model = Tintoreria::class; protected static ?string $navigationGroup = 'Administración'; protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack'; @@ -41,15 +41,19 @@ class TintoreriaProcesoResource extends Resource ->relationship( 'proveedor', 'nombre', - fn($query) => $query->where('categoria', 'tintoreria') + fn($query) => $query->where('categoria', 'tintoreria') ) ->searchable() + ->preload() + ->required(), Select::make('orden_produccion_id') ->label('Orden de Producción') ->relationship('ordenProduccion', 'numero_orden') ->searchable() + ->preload() + ->required(), TextInput::make('tipo_proceso') @@ -126,9 +130,9 @@ class TintoreriaProcesoResource extends Resource public static function getPages(): array { return [ - 'index' => Pages\ListTintoreriaProcesos::route('/'), - 'create' => Pages\CreateTintoreriaProceso::route('/create'), - 'edit' => Pages\EditTintoreriaProceso::route('/{record}/edit'), + 'index' => Pages\ListTintorerias::route('/'), + 'create' => Pages\CreateTintoreria::route('/create'), + 'edit' => Pages\EditTintoreria::route('/{record}/edit'), ]; } } diff --git a/app/Filament/Resources/TintoreriaResource/Pages/CreateTintoreria.php b/app/Filament/Resources/TintoreriaResource/Pages/CreateTintoreria.php new file mode 100644 index 0000000..89f234c --- /dev/null +++ b/app/Filament/Resources/TintoreriaResource/Pages/CreateTintoreria.php @@ -0,0 +1,12 @@ +id(); - // Relaciones $table->foreignId('proveedor_id') ->constrained('proveedors') ->cascadeOnDelete(); @@ -48,6 +47,6 @@ return new class extends Migration */ public function down(): void { - Schema::dropIfExists('tintoreria_procesos'); + Schema::dropIfExists('tintorerias'); } };