Home Projects Portfolio Dashboard Export PDF Log in

Optimización de Recursos con Filament en Reimpact/platform

En el proyecto Reimpact/platform, hemos realizado una actualización significativa para optimizar la gestión de datos a través de la implementación de nuevos recursos en Filament. Esta mejora se centra en las secciones de AEEAndCells (Equipos Eléctricos y Electrónicos) y Tires (Neumáticos), facilitando la administración de sus operaciones.

Gestión de Recursos Simplificada

La reciente actualización introduce un conjunto completo de recursos de Filament para AEEAndCells y Tires. Para cada uno de estos módulos, se han añadido recursos específicos que cubren áreas clave como:

  • Marcas (Brand): Para definir y gestionar las marcas asociadas.
  • Ventas (Sale): Para registrar y seguir las transacciones de venta.
  • Compras (Purchase): Para administrar la adquisición de inventario.
  • Almacén (Warehouse): Para controlar el inventario y la ubicación de los productos.

Estos recursos vienen equipados con implementaciones completas de formularios, tablas y filtros, lo que permite una experiencia de usuario intuitiva para la creación, lectura, actualización y eliminación (CRUD) de datos.

Campos Específicos por Módulo

Para garantizar la precisión y relevancia de los datos, cada módulo incorpora campos personalizados:

  • AEEAndCells: Incluye campos específicos para la gestión de equipos eléctricos y electrónicos, como detalles técnicos y estados.
  • Tires: Abarca campos particulares para neumáticos, como el tipo de vehículo (vehicle_type), ancho (width), relación de aspecto (aspect_ratio) y tamaño de la llanta (rim_size), entre otros.

Registro y Descubrimiento de Paneles

Adicionalmente, se ha procedido al registro de todos los proveedores de paneles de módulo en el archivo src/module/component.file. Esto asegura que los paneles de AEEAndCells, Tires, Batteries y Textiles sean ahora completamente detectables y accesibles dentro de la interfaz de Filament, unificando la administración de estos componentes críticos del sistema.

Este enfoque no solo mejora la eficiencia operativa, sino que también establece una base sólida para futuras expansiones y mantenimientos, aprovechando la robustez y modularidad que ofrece el framework Filament sobre Laravel.

// Ejemplo simplificado de un Recurso Filament para 'Neumáticos'
namespace App\Filament\Resources;

use App\Filament\Resources\TireResource\Pages;
use App\Models\Tire;
use Filament\Forms;
use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Table;

class TireResource extends Resource
{
    protected static ?string $model = Tire::class;

    protected static ?string $navigationIcon = 'heroicon-o-truck';

    public static function form(Form $form): Form
    {
        return $form
            ->schema([
                Forms\Components\TextInput::make('brand')->required()->maxLength(255),
                Forms\Components\Select::make('vehicle_type')
                    ->options([
                        'automovil' => 'Automóvil',
                        'camioneta' => 'Camioneta',
                        'moto' => 'Motocicleta',
                    ])
                    ->required(),
                Forms\Components\TextInput::make('width')->numeric()->required(),
                Forms\Components\TextInput::make('aspect_ratio')->numeric()->required(),
                Forms\Components\TextInput::make('rim_size')->numeric()->required(),
                Forms\Components\Toggle::make('is_winter_tire')->label('Neumático de invierno')
            ]);
    }

    public static function table(Table $table): Table
    {
        return $table
            ->columns([
                Tables\Columns\TextColumn::make('brand')->searchable(),
                Tables\Columns\TextColumn::make('vehicle_type')->label('Tipo Vehículo'),
                Tables\Columns\TextColumn::make('width')->label('Ancho'),
                Tables\Columns\TextColumn::make('aspect_ratio')->label('Relación Aspecto'),
                Tables\Columns\TextColumn::make('rim_size')->label('Tamaño Llanta'),
                Tables\Columns\IconColumn::make('is_winter_tire')->boolean()->label('Invierno')
            ])
            ->filters([
                //
            ]);
    }

    public static function getPages(): array
    {
        return [
            'index' => Pages\ListTires::route('/'),
            'create' => Pages\CreateTire::route('/create'),
            'edit' => Pages\EditTire::route('/{record}/edit'),
        ];
    }
}
Optimización de Recursos con Filament en Reimpact/platform
Gerardo Ruiz

Gerardo Ruiz

Author

Share: