diff --git a/app/Filament/Exports/StickerMasterExporter.php b/app/Filament/Exports/StickerMasterExporter.php new file mode 100644 index 0000000..27e1bf2 --- /dev/null +++ b/app/Filament/Exports/StickerMasterExporter.php @@ -0,0 +1,59 @@ +label('ID'), + ExportColumn::make('item.code'), + ExportColumn::make('plant.name'), + ExportColumn::make('serial_number_motor'), + ExportColumn::make('serial_number_pump'), + ExportColumn::make('serial_number_pumpset'), + ExportColumn::make('pack_slip_motor'), + ExportColumn::make('pack_slip_pump'), + ExportColumn::make('pack_slip_pumpset'), + ExportColumn::make('name_plate_motor'), + ExportColumn::make('name_plate_pump'), + ExportColumn::make('name_plate_pumpset'), + ExportColumn::make('tube_sticker_motor'), + ExportColumn::make('tube_sticker_pump'), + ExportColumn::make('tube_sticker_pumpset'), + ExportColumn::make('warranty_card'), + ExportColumn::make('part_validation1'), + ExportColumn::make('part_validation2'), + ExportColumn::make('part_validation3'), + ExportColumn::make('part_validation4'), + ExportColumn::make('part_validation5'), + ExportColumn::make('panel_box_code'), + ExportColumn::make('load_rate'), + ExportColumn::make('bundle_quantity'), + ExportColumn::make('material_type'), + ExportColumn::make('created_at'), + ExportColumn::make('updated_at'), + ExportColumn::make('deleted_at'), + ]; + } + + public static function getCompletedNotificationBody(Export $export): string + { + $body = 'Your sticker master export has completed and ' . number_format($export->successful_rows) . ' ' . str('row')->plural($export->successful_rows) . ' exported.'; + + if ($failedRowsCount = $export->getFailedRowsCount()) { + $body .= ' ' . number_format($failedRowsCount) . ' ' . str('row')->plural($failedRowsCount) . ' failed to export.'; + } + + return $body; + } +} diff --git a/app/Filament/Imports/StickerMasterImporter.php b/app/Filament/Imports/StickerMasterImporter.php index 5337b97..d33129d 100644 --- a/app/Filament/Imports/StickerMasterImporter.php +++ b/app/Filament/Imports/StickerMasterImporter.php @@ -14,95 +14,128 @@ class StickerMasterImporter extends Importer public static function getColumns(): array { return [ - ImportColumn::make('item_id') + ImportColumn::make('item') ->requiredMapping() - ->numeric() ->label('Item Code') + ->relationship(resolveUsing: 'code') ->exampleHeader('Item Code') - ->rules(['required', 'integer']), - ImportColumn::make('plant_id') + ->rules(['required']), + + ImportColumn::make('plant') ->requiredMapping() - ->relationship() ->exampleHeader('Plant Name') ->label('Plant Name') + ->relationship(resolveUsing: 'name') ->rules(['required']), - // ->transform(fn($value) => \App\Models\Plant::where('name', $value)->value('id') ?? null), + ImportColumn::make('serial_number_motor') - ->requiredMapping() + // ->requiredMapping() ->exampleHeader('Serial Number Motor'), ImportColumn::make('serial_number_pump') - ->requiredMapping() + //->requiredMapping() ->exampleHeader('Serial Number Pump'), ImportColumn::make('serial_number_pumpset') - ->requiredMapping() + //->requiredMapping() ->exampleHeader('Serial Number PumpSet'), ImportColumn::make('pack_slip_motor') - ->requiredMapping() + //->requiredMapping() ->exampleHeader('Pack Slip Motor'), ImportColumn::make('pack_slip_pump') - ->requiredMapping() + //->requiredMapping() ->exampleHeader('Pack Slip Pump'), ImportColumn::make('pack_slip_pumpset') - ->requiredMapping() + //->requiredMapping() ->exampleHeader('Pack Slip PumpSet'), ImportColumn::make('name_plate_motor') - ->requiredMapping() + // ->requiredMapping() ->exampleHeader('Name Plate Motor'), ImportColumn::make('name_plate_pump') - ->requiredMapping() + // ->requiredMapping() ->exampleHeader('Name Plate Pump'), ImportColumn::make('name_plate_pumpset') - ->requiredMapping() + // ->requiredMapping() ->exampleHeader('Name Plate PumpSet'), ImportColumn::make('tube_sticker_motor') - ->requiredMapping() + // ->requiredMapping() ->exampleHeader('Tube Sticker Motor'), ImportColumn::make('tube_sticker_pump') - ->requiredMapping() + // ->requiredMapping() ->exampleHeader('Tube Sticker Pump'), ImportColumn::make('tube_sticker_pumpset') - ->requiredMapping() + // ->requiredMapping() ->exampleHeader('Tube Sticker PumpSet'), ImportColumn::make('warranty_card') - ->requiredMapping() + // ->requiredMapping() ->exampleHeader('Warranty Card'), ImportColumn::make('part_validation1') - ->requiredMapping() + // ->requiredMapping() ->label('Part Validation 1') ->exampleHeader('Part Validation 1'), + ImportColumn::make('part_validation2') - ->requiredMapping() + // ->requiredMapping() ->label('Part Validation 2') ->exampleHeader('Part Validation 2'), + ImportColumn::make('part_validation3') - ->requiredMapping() + // ->requiredMapping() ->label('Part Validation 3') ->exampleHeader('Part Validation 3'), + ImportColumn::make('part_validation4') - ->requiredMapping() + // ->requiredMapping() ->label('Part Validation 4') ->exampleHeader('Part Validation 4'), + ImportColumn::make('part_validation5') - ->requiredMapping() + // ->requiredMapping() ->label('Part Validation 5') ->exampleHeader('Part Validation 5'), + + + ImportColumn::make('panel_box_code') + //->requiredMapping() + ->label('Panel Box Code') + ->exampleHeader('Panel Box Code'), + + + ImportColumn::make('load_rate') + // ->requiredMapping() + ->label('Load Rate') + ->integer() + ->exampleHeader('Load Rate'), + + + ImportColumn::make('bundle_quantity') + // ->requiredMapping() + ->label('Bundle Quantity') + ->integer() + ->exampleHeader('Bundle Quantity'), + + + ImportColumn::make('material_type') + // ->requiredMapping() + ->label('Material Type') + ->integer() + ->exampleHeader('Material Type'), + ]; } diff --git a/app/Filament/Resources/StickerMasterResource.php b/app/Filament/Resources/StickerMasterResource.php index 5cb5109..2c983a0 100644 --- a/app/Filament/Resources/StickerMasterResource.php +++ b/app/Filament/Resources/StickerMasterResource.php @@ -2,6 +2,7 @@ namespace App\Filament\Resources; +use App\Filament\Exports\StickerMasterExporter; use App\Filament\Imports\ShiftImporter; use App\Filament\Imports\StickerMasterImporter; use App\Filament\Resources\StickerMasterResource\Pages; @@ -15,6 +16,7 @@ use Filament\Tables\Table; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\SoftDeletingScope; use Filament\Forms\Get; +use Filament\Tables\Actions\ExportAction; use Filament\Tables\Actions\ImportAction; class StickerMasterResource extends Resource @@ -35,6 +37,9 @@ class StickerMasterResource extends Resource ->relationship('plant', 'name') ->reactive() ->nullable() + ->default(function () { + return optional(StickerMaster::latest()->first())->plant_id; + }) ->disabled(fn (Get $get) => !empty($get('id'))) //disable in edit if user try to change ->afterStateUpdated(fn (callable $set) => $set('item_id', null) & //when plant changed remove all the data which is in text input box @@ -160,6 +165,20 @@ class StickerMasterResource extends Resource Forms\Components\TextInput::make('load_rate') ->label('Load Rate') ->default(0) + ->integer() + ->nullable(), + + + Forms\Components\Select::make('material_type') + ->label('Material Type') + ->options([ + 'individual' => '1', + 'bundle' => '2', + ]), + + Forms\Components\TextInput::make('bundle_quantity') + ->label('Bundle Quantity') + ->integer() ->nullable(), @@ -284,6 +303,15 @@ class StickerMasterResource extends Resource ->sortable(), Tables\Columns\TextColumn::make('part_validation5') ->sortable(), + Tables\Columns\TextColumn::make('panel_box_code') + ->sortable(), + Tables\Columns\TextColumn::make('load_rate') + ->sortable(), + Tables\Columns\TextColumn::make('bundle_quantity') + ->sortable(), + Tables\Columns\TextColumn::make('material_type') + ->label('Material Type') + ->sortable(), Tables\Columns\TextColumn::make('created_at') ->dateTime() ->sortable() @@ -314,6 +342,8 @@ class StickerMasterResource extends Resource ->headerActions([ ImportAction::make() ->importer(StickerMasterImporter::class), + ExportAction::make() + ->exporter(StickerMasterExporter::class), ]); } diff --git a/app/Models/StickerMaster.php b/app/Models/StickerMaster.php index 03ef6fd..098d9cf 100644 --- a/app/Models/StickerMaster.php +++ b/app/Models/StickerMaster.php @@ -33,6 +33,8 @@ class StickerMaster extends Model 'part_validation4', 'part_validation5', 'load_rate', + 'bundle_quantity', + 'material_type', ]; public function item() @@ -49,4 +51,9 @@ class StickerMaster extends Model { return $this->hasMany(QualityValidation::class, 'sticker_master_id'); } + + public function invoiceValidations() + { + return $this->hasMany(InvoiceValidation::class); + } } diff --git a/database/migrations/2025_04_04_145904_create_sticker_masters_table.php b/database/migrations/2025_04_04_145904_create_sticker_masters_table.php deleted file mode 100644 index a87761d..0000000 --- a/database/migrations/2025_04_04_145904_create_sticker_masters_table.php +++ /dev/null @@ -1,67 +0,0 @@ -