diff --git a/app/Filament/Resources/ItemResource.php b/app/Filament/Resources/ItemResource.php index 869dd2a..fc4f9ef 100644 --- a/app/Filament/Resources/ItemResource.php +++ b/app/Filament/Resources/ItemResource.php @@ -197,6 +197,7 @@ class ItemResource extends Resource ->searchable(), Tables\Columns\TextColumn::make('category') ->label('Category') + ->default('-') ->alignCenter() ->sortable() ->searchable(), @@ -217,6 +218,7 @@ class ItemResource extends Resource ->sortable(), Tables\Columns\TextColumn::make('uom') ->label('Unit of Measure') + ->default('-') ->alignCenter() ->sortable(), Tables\Columns\TextColumn::make('created_at') @@ -237,6 +239,7 @@ class ItemResource extends Resource ->sortable() ->toggleable(isToggledHiddenByDefault: true), ]) + ->searchPlaceholder('Search Item Code') ->filters([ Tables\Filters\TrashedFilter::make(), Filter::make('advanced_filters') @@ -256,7 +259,7 @@ class ItemResource extends Resource $set('operator_id', null); }), Select::make('code') - ->label('Search by Item Code') + ->label('Search by Code') ->nullable() // ->options(function (callable $get) { // $plantId = $get('Plant'); diff --git a/app/Filament/Resources/StickerMasterResource.php b/app/Filament/Resources/StickerMasterResource.php index 21b2c40..ea380b1 100644 --- a/app/Filament/Resources/StickerMasterResource.php +++ b/app/Filament/Resources/StickerMasterResource.php @@ -30,6 +30,7 @@ use Filament\Tables\Table; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\SoftDeletingScope; use Illuminate\Support\Facades\Storage; +use Illuminate\Validation\Rule; // use Illuminate\Validation\Rule; @@ -93,21 +94,33 @@ class StickerMasterResource extends Resource Forms\Components\Select::make('item_id') ->label('Item Code') ->options(function (callable $get) { + $plantId = $get('plant_id'); if (! $get('plant_id')) { return []; } - return \App\Models\Item::where('plant_id', $get('plant_id')) - ->pluck('code', 'id') - ->toArray(); + if (! $get('id')) { + // whereHas + return Item::where('plant_id', $plantId)->whereDoesntHave('stickerMasters')->pluck('code', 'id'); + } else { + $itemId = StickerMaster::where('id', $get('id'))->first()?->item_id; + + return Item::where('plant_id', $plantId) + ->where(function ($query) use ($itemId) { + $query->whereDoesntHave('stickerMasters') + ->orWhere('id', $itemId); + }) + ->pluck('code', 'id'); + } + // return Item::where('plant_id', $plantId)->pluck('code', 'id')->toArray(); + }) + ->rule(function (callable $get) { + return Rule::unique('sticker_masters', 'item_id') + ->where('plant_id', $get('plant_id')) + ->ignore($get('id')); // Ignore current record during updates }) - // ->rule(function (callable $get) { - // return Rule::unique('items', 'code') - // ->where('plant_id', $get('plant_id')) - // ->ignore($get('id')); // Ignore current record during updates - // }) ->required() - ->nullable() + // ->nullable() ->searchable() ->reactive() // ->disabled(fn (Get $get) => !empty($get('id'))) @@ -132,7 +145,7 @@ class StickerMasterResource extends Resource return; } - $availableItems = \App\Models\Item::where('plant_id', $plantId)->exists(); + $availableItems = Item::where('plant_id', $plantId)->exists(); if (! $availableItems) { $set('item_error', null); @@ -147,7 +160,7 @@ class StickerMasterResource extends Resource } // Check if item exists for the selected plant - $item = \App\Models\Item::where('plant_id', $plantId) + $item = Item::where('plant_id', $plantId) ->where('id', $itemId) ->first(); @@ -161,7 +174,8 @@ class StickerMasterResource extends Resource ->where('item_id', $itemId) ->exists(); if (! $get('id')) { - $set('item_error', $duplicateSticker ? 'Item Code already exists for the selected plant.' : null); + // $set('item_error', $duplicateSticker ? 'Item Code already exists for the selected plant.' : null); + $set('item_error', null); } }) ->extraAttributes(fn ($get) => [ @@ -177,7 +191,7 @@ class StickerMasterResource extends Resource if ($get('id')) { $itemId = StickerMaster::where('id', $get('id'))->first()?->item_id; if ($itemId) { - $item = \App\Models\Item::where('id', $itemId)->first()?->description; + $item = Item::where('id', $itemId)->first()?->description; if ($item) { $set('item_description', $item); } else { @@ -525,27 +539,35 @@ class StickerMasterResource extends Resource ->sortable(), Tables\Columns\TextColumn::make('part_validation1') ->label('Part Validation 1') + ->default('-') ->alignCenter(), Tables\Columns\TextColumn::make('part_validation2') ->label('Part Validation 2') + ->default('-') ->alignCenter(), Tables\Columns\TextColumn::make('part_validation3') ->label('Part Validation 3') + ->default('-') ->alignCenter(), Tables\Columns\TextColumn::make('part_validation4') ->label('Part Validation 4') + ->default('-') ->alignCenter(), Tables\Columns\TextColumn::make('part_validation5') ->label('Part Validation 5') + ->default('-') ->alignCenter(), Tables\Columns\TextColumn::make('laser_part_validation1') ->label('Laser Part Validation 1') + ->default('-') ->alignCenter(), Tables\Columns\TextColumn::make('laser_part_validation2') ->label('Laser Part Validation 2') + ->default('-') ->alignCenter(), Tables\Columns\TextColumn::make('panel_box_code') ->label('Panel Box Code') + ->default('-') ->alignCenter(), Tables\Columns\TextColumn::make('load_rate') ->label('Load Rate') @@ -553,6 +575,7 @@ class StickerMasterResource extends Resource ->sortable(), Tables\Columns\TextColumn::make('bundle_quantity') ->label('Bundle Quantity') + ->default('-') ->alignCenter(), Tables\Columns\TextColumn::make('material_type') ->label('Material Type') @@ -587,9 +610,7 @@ class StickerMasterResource extends Resource ->sortable() ->toggleable(isToggledHiddenByDefault: true), ]) - // ->filters([ - // Tables\Filters\TrashedFilter::make(), - // ]) + ->searchPlaceholder('Search Item Code') ->filters([ Tables\Filters\TrashedFilter::make(), Filter::make('advanced_filters') @@ -635,7 +656,7 @@ class StickerMasterResource extends Resource ->searchable() ->reactive(), Select::make('material_type') - ->label('Material Type') + ->label('Select Material Type') ->options([ 1 => 'Individual', 2 => 'Bundle', @@ -644,7 +665,7 @@ class StickerMasterResource extends Resource ->reactive(), TextInput::make('panel_box_code') - ->label('Panel Box Code') + ->label('Search by Panel Box Code') ->placeholder(placeholder: 'Enter Panel Box Code'), DateTimePicker::make(name: 'created_from') ->label('Created From')