added bundle quantity and material type columns and import and export functionality
This commit is contained in:
59
app/Filament/Exports/StickerMasterExporter.php
Normal file
59
app/Filament/Exports/StickerMasterExporter.php
Normal file
@@ -0,0 +1,59 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Exports;
|
||||
|
||||
use App\Models\StickerMaster;
|
||||
use Filament\Actions\Exports\ExportColumn;
|
||||
use Filament\Actions\Exports\Exporter;
|
||||
use Filament\Actions\Exports\Models\Export;
|
||||
|
||||
class StickerMasterExporter extends Exporter
|
||||
{
|
||||
protected static ?string $model = StickerMaster::class;
|
||||
|
||||
public static function getColumns(): array
|
||||
{
|
||||
return [
|
||||
// ExportColumn::make('id')
|
||||
// ->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;
|
||||
}
|
||||
}
|
||||
@@ -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'),
|
||||
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -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),
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,67 +0,0 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
$sql = <<<'SQL'
|
||||
CREATE TABLE sticker_masters (
|
||||
id BIGINT GENERATED always AS IDENTITY PRIMARY KEY,
|
||||
|
||||
item_id BIGINT NOT NULL,
|
||||
plant_id BIGINT NOT NULL,
|
||||
|
||||
panel_box_code TEXT DEFAULT NULL,
|
||||
|
||||
serial_number_motor TEXT DEFAULT NULL,
|
||||
serial_number_pump TEXT DEFAULT NULL,
|
||||
serial_number_pumpset TEXT DEFAULT NULL,
|
||||
|
||||
pack_slip_motor TEXT DEFAULT NULL,
|
||||
pack_slip_pump TEXT DEFAULT NULL,
|
||||
pack_slip_pumpset TEXT DEFAULT NULL,
|
||||
|
||||
name_plate_motor TEXT DEFAULT NULL,
|
||||
name_plate_pump TEXT DEFAULT NULL,
|
||||
name_plate_pumpset TEXT DEFAULT NULL,
|
||||
|
||||
tube_sticker_motor TEXT DEFAULT NULL,
|
||||
tube_sticker_pump TEXT DEFAULT NULL,
|
||||
tube_sticker_pumpset TEXT DEFAULT NULL,
|
||||
|
||||
warranty_card TEXT DEFAULT NULL,
|
||||
part_validation1 TEXT DEFAULT NULL,
|
||||
part_validation2 TEXT DEFAULT NULL,
|
||||
part_validation3 TEXT DEFAULT NULL,
|
||||
part_validation4 TEXT DEFAULT NULL,
|
||||
part_validation5 TEXT DEFAULT NULL,
|
||||
|
||||
load_rate INT NOT NULL DEFAULT (0),
|
||||
|
||||
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
||||
deleted_at TIMESTAMP,
|
||||
|
||||
FOREIGN KEY (item_id) REFERENCES items (id),
|
||||
FOREIGN KEY (plant_id) REFERENCES plants (id)
|
||||
);
|
||||
SQL;
|
||||
|
||||
DB::statement($sql);
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::dropIfExists('sticker_masters');
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,69 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
$sql = <<<'SQL'
|
||||
CREATE TABLE sticker_masters (
|
||||
id BIGINT GENERATED always AS IDENTITY PRIMARY KEY,
|
||||
|
||||
item_id BIGINT NOT NULL,
|
||||
plant_id BIGINT NOT NULL,
|
||||
|
||||
serial_number_motor TEXT DEFAULT NULL,
|
||||
serial_number_pump TEXT DEFAULT NULL,
|
||||
serial_number_pumpset TEXT DEFAULT NULL,
|
||||
|
||||
pack_slip_motor TEXT DEFAULT NULL,
|
||||
pack_slip_pump TEXT DEFAULT NULL,
|
||||
pack_slip_pumpset TEXT DEFAULT NULL,
|
||||
|
||||
name_plate_motor TEXT DEFAULT NULL,
|
||||
name_plate_pump TEXT DEFAULT NULL,
|
||||
name_plate_pumpset TEXT DEFAULT NULL,
|
||||
|
||||
tube_sticker_motor TEXT DEFAULT NULL,
|
||||
tube_sticker_pump TEXT DEFAULT NULL,
|
||||
tube_sticker_pumpset TEXT DEFAULT NULL,
|
||||
|
||||
warranty_card TEXT DEFAULT NULL,
|
||||
part_validation1 TEXT DEFAULT NULL,
|
||||
part_validation2 TEXT DEFAULT NULL,
|
||||
part_validation3 TEXT DEFAULT NULL,
|
||||
part_validation4 TEXT DEFAULT NULL,
|
||||
part_validation5 TEXT DEFAULT NULL,
|
||||
|
||||
panel_box_code TEXT DEFAULT NULL,
|
||||
load_rate INT NOT NULL DEFAULT (0),
|
||||
|
||||
bundle_quantity INT DEFAULT NULL,
|
||||
material_type INT DEFAULT NULL,
|
||||
|
||||
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMP NOT NULL DEFAULT NOW(),
|
||||
deleted_at TIMESTAMP,
|
||||
|
||||
FOREIGN KEY (item_id) REFERENCES items (id),
|
||||
FOREIGN KEY (plant_id) REFERENCES plants (id)
|
||||
);
|
||||
SQL;
|
||||
|
||||
DB::statement($sql);
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::dropIfExists('sticker_masters');
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user