diff --git a/app/Filament/Resources/InvoiceDataValidationResource.php b/app/Filament/Resources/InvoiceDataValidationResource.php
index 3b1a9b3..b4f76ac 100644
--- a/app/Filament/Resources/InvoiceDataValidationResource.php
+++ b/app/Filament/Resources/InvoiceDataValidationResource.php
@@ -215,6 +215,8 @@ class InvoiceDataValidationResource extends Resource
$seenPlantDoc = [];
$duplicateEntries = [];
$duplicateEntriesExcel = [];
+ $duplicateGroupedByPlant = [];
+ $duplicateGroupedByPlantExcel = [];
foreach ($rows as $index => $row)
{
@@ -271,13 +273,13 @@ class InvoiceDataValidationResource extends Resource
if ($exists)
{
- $duplicateEntries[] = "Duplicate found at Row {$index}: Document {$DocNo} already exists for Plant {$plant->name}";
+ $duplicateEntries[] = "Duplicate record: Document Number '{$DocNo}' already exists for Plant {$plant->name}";
}
//Also check duplicates within the same file ---
$uniqueKey = $plantCode . '_' . $DocNo;
if (in_array($uniqueKey, $seenPlantDoc)) {
- $duplicateEntriesExcel[] = "Duplicate in file at Row {$index}: Document {$DocNo} already processed for Plant {$plant->name}";
+ $duplicateEntriesExcel[] = "Duplicate in file at Row {$index}: Document Number '{$DocNo}' already exist for Plant {$plant->name}";
}
$seenPlantDoc[] = $uniqueKey;
@@ -344,43 +346,94 @@ class InvoiceDataValidationResource extends Resource
}
return;
}
- // if (!empty($plantCode) && !empty($DocNo)) {
- // $key = $plantCode . '|' . $DocNo;
- // if (isset($seenPlantDoc[$key])) {
- // // Duplicate found
- // $duplicateEntries[] = "Row {$index}: Duplicate document number '{$DocNo}' found in plant '{$plantCode}' (also in Row {$seenPlantDoc[$key]})";
- // } else {
- // $seenPlantDoc[$key] = $index; // store first occurrence
- // }
- // }
- if(!empty($duplicateEntries))
+ foreach ($duplicateEntries as $message)
{
- $errorMsg = 'Duplicate Entries found:
' . implode('
', $duplicateEntries);
+ if (preg_match("/Document Number '([^']+)' already exists for Plant (.+)/", $message, $matches)) {
+ $docNo = $matches[1];
+ $plantName = trim($matches[2]);
+ $duplicateGroupedByPlant[$plantName][] = $docNo;
+ }
+ }
+
+ foreach ($duplicateEntriesExcel as $message) {
+ if (preg_match("/Document Number '([^']+)' already exist(?:s)?(?: for Plant (.+))?/", $message, $matches)) {
+ $docNo = $matches[1];
+ $plantName = $matches[2] ?? 'Unknown';
+ $duplicateGroupedByPlantExcel[$plantName][] = $docNo;
+ }
+ }
+
+ if (!empty($duplicateGroupedByPlant)) {
+ $errorMsg = 'Duplicate Entries in Database:
';
+
+ foreach ($duplicateGroupedByPlant as $plant => $docNumbers) {
+ $count = count($docNumbers);
+
+ if ($count > 10)
+ {
+ $errorMsg .= "Duplicate record(s) for Plant {$plant}: {$count} document numbers already exist in DB
";
+ }
+ else
+ {
+ $errorMsg .= "Duplicate record(s) for Plant {$plant}: "
+ . implode(', ', $docNumbers)
+ . " already exist
";
+ }
+ }
+
Notification::make()
- ->title('Duplicate Entries in Database')
+ //->title('Duplicate Entries in Database')
->body($errorMsg)
->danger()
->send();
+
if ($disk->exists($path)) {
$disk->delete($path);
}
return;
}
- if(!empty($duplicateEntriesExcel))
+ if (!empty($duplicateGroupedByPlantExcel))
{
- $errorMsg = 'Duplicate Entries found in the uploaded file:
' . implode('
', $duplicateEntriesExcel);
+
+ $errorMsg = 'Duplicate Entries found in Uploaded File:
';
+
+ foreach ($duplicateGroupedByPlantExcel as $plant => $docNumbers)
+ {
+ // Remove duplicate document numbers for each plant
+ $uniqueDocNumbers = array_unique($docNumbers);
+ $count = count($uniqueDocNumbers);
+
+ if ($count > 10) {
+ $errorMsg .= "Duplicate record(s) for Plant {$plant}: {$count} document numbers already exist in uploaded file
";
+ } else {
+ $errorMsg .= "Duplicate record(s) for Plant {$plant}: "
+ . implode(', ', $uniqueDocNumbers)
+ . " already exist
";
+ }
+ }
+
Notification::make()
- ->title('Duplicate Entries in Uploaded File')
+ //->title('Duplicate Entries in Uploaded File')
->body($errorMsg)
->danger()
->send();
+
if ($disk->exists($path)) {
$disk->delete($path);
}
return;
}
+ // if(!empty($duplicateEntriesExcel))
+ // {
+ // //$errorMsg = 'Duplicate Entries found in the uploaded file:
' . implode('
', $duplicateEntriesExcel);
+ // $errorMsg = buildDuplicateMessage($duplicateEntriesExcel, 'Duplicate Entries found in Uploaded File');
+ // Notification::make()
+ // ->title('Duplicate Entries in Uploaded File')
+ // ->body($errorMsg)
+
+
$successCount = 0;
$failCount = 0;