From 558f0a39bd8a765ca585f37eb4ea55190705d00a Mon Sep 17 00:00:00 2001 From: dhanabalan Date: Tue, 10 Nov 2026 14:11:15 +0530 Subject: [PATCH] Added item code duplicate validation in production plan resource page --- .../Resources/ProductionPlanResource.php | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/app/Filament/Resources/ProductionPlanResource.php b/app/Filament/Resources/ProductionPlanResource.php index 4946f935..ad655f12 100644 --- a/app/Filament/Resources/ProductionPlanResource.php +++ b/app/Filament/Resources/ProductionPlanResource.php @@ -826,6 +826,39 @@ class ProductionPlanResource extends Resource ->label('Import Production Plans') ->color('warning') ->importer(ProductionPlanImporter::class) + ->fileRules([ + fn (): \Closure => function ($attribute, $value, $fail) { + + $csv = \League\Csv\Reader::createFromPath( + $value->getRealPath(), + 'r' + ); + + $csv->setHeaderOffset(0); + + $itemCodes = []; + + foreach ($csv->getRecords() as $record) { + $itemCode = trim((string) ($record['Item Code'] ?? '')); + + if ($itemCode !== '') { + $itemCodes[] = $itemCode; + } + } + + $duplicates = collect($itemCodes) + ->duplicates() + ->unique() + ->values(); + + if ($duplicates->isNotEmpty()) { + $fail( + 'Duplicate Item Codes found: ' . + $duplicates->implode(', ') + ); + } + }, + ]) ->visible(function () { return Filament::auth()->user()->can('view import production plan'); }),