diff --git a/app/Filament/Resources/ClassCharacteristicResource.php b/app/Filament/Resources/ClassCharacteristicResource.php index 0ae41aab..daa2cac7 100644 --- a/app/Filament/Resources/ClassCharacteristicResource.php +++ b/app/Filament/Resources/ClassCharacteristicResource.php @@ -2719,8 +2719,11 @@ class ClassCharacteristicResource extends Resource ->minlength(7) ->maxlength(10), TextInput::make('gernr') - ->label('Serial Number') - ->placeholder('Enter Serial Number'), + ->label('FG Serial Number') + ->placeholder('Enter FG Serial Number'), + TextInput::make('winded_serial_number') + ->label('Winded Serial Number') + ->placeholder('Enter Winded Serial Number'), TextInput::make('zmm_heading') ->label('Heading') ->placeholder('Enter Heading'), @@ -2793,7 +2796,7 @@ class ClassCharacteristicResource extends Resource ]) ->query(function ($query, array $data) { // Hide all records initially if no filters are applied - if (empty($data['Plant']) && empty($data['machine']) && empty($data['item_id']) && empty($data['aufnr']) && empty($data['gernr']) && empty($data['zmm_heading']) && empty($data['motor_marked_from']) && empty($data['motor_marked_to']) && empty($data['pump_marked_from']) && empty($data['pump_marked_to']) && empty($data['name_plate_marked_from']) && empty($data['name_plate_marked_to']) && empty($data['created_from']) && empty($data['created_to']) && empty($data['created_by']) && empty($data['updated_from']) && empty($data['updated_to']) && empty($data['updated_by'])) { + if (empty($data['Plant']) && empty($data['machine']) && empty($data['item_id']) && empty($data['aufnr']) && empty($data['gernr']) && empty($data['winded_serial_number']) && empty($data['zmm_heading']) && empty($data['motor_marked_from']) && empty($data['motor_marked_to']) && empty($data['pump_marked_from']) && empty($data['pump_marked_to']) && empty($data['name_plate_marked_from']) && empty($data['name_plate_marked_to']) && empty($data['created_from']) && empty($data['created_to']) && empty($data['created_by']) && empty($data['updated_from']) && empty($data['updated_to']) && empty($data['updated_by'])) { return $query->whereRaw('1 = 0'); } @@ -2823,6 +2826,10 @@ class ClassCharacteristicResource extends Resource $query->where('gernr', 'like', '%'.$data['gernr'].'%'); } + if (! empty($data['winded_serial_number'])) { + $query->where('winded_serial_number', 'like', '%'.$data['winded_serial_number'].'%'); + } + if (! empty($data['zmm_heading'])) { $query->where('zmm_heading', 'like', '%'.$data['zmm_heading'].'%'); } @@ -2901,7 +2908,11 @@ class ClassCharacteristicResource extends Resource } if (! empty($data['gernr'])) { - $indicators[] = 'Serial Number: '.$data['gernr']; + $indicators[] = 'FG Serial Number: '.$data['gernr']; + } + + if (! empty($data['winded_serial_number'])) { + $indicators[] = 'Winded Serial Number: '.$data['winded_serial_number']; } if (! empty($data['zmm_heading'])) { @@ -3343,6 +3354,34 @@ class ClassCharacteristicResource extends Resource return; } + // Skip header and empty rows + $dataRows = array_filter( + array_slice($rows, 1), + function ($row) { + return ! empty(array_filter($row, fn ($value) => trim((string) $value) != '')); + } + ); + + // Count actual data rows + $rowCount = count($dataRows); + + $firstDataRow = reset($dataRows); + $orderQuantity = (int) $firstDataRow[4]; + + if ($rowCount != $orderQuantity) { + Notification::make() + ->title('Order Quantity Mismatch') + ->body("Excel row count ({$rowCount}) does not match Order Quantity ({$orderQuantity}).") + ->danger() + ->send(); + + if ($disk->exists($path)) { + $disk->delete($path); + } + + return; + } + $invalidMplaCodes = []; $invalidItemCodes = []; $invalidWorkCenters = []; diff --git a/app/Filament/Resources/TempClassCharacteristicResource.php b/app/Filament/Resources/TempClassCharacteristicResource.php index a79b3677..02ffd38a 100644 --- a/app/Filament/Resources/TempClassCharacteristicResource.php +++ b/app/Filament/Resources/TempClassCharacteristicResource.php @@ -1889,8 +1889,11 @@ class TempClassCharacteristicResource extends Resource ->minlength(7) ->maxlength(10), TextInput::make('gernr') - ->label('Serial Number') - ->placeholder('Enter Serial Number'), + ->label('FG Serial Number') + ->placeholder('Enter FG Serial Number'), + TextInput::make('winded_serial_number') + ->label('Winded Serial Number') + ->placeholder('Enter Winded Serial Number'), TextInput::make('zmm_heading') ->label('Heading') ->placeholder('Enter Heading'), @@ -1918,7 +1921,7 @@ class TempClassCharacteristicResource extends Resource ]) ->query(function ($query, array $data) { // Hide all records initially if no filters are applied - if (empty($data['Plant']) && empty($data['machine']) && empty($data['item_id']) && empty($data['aufnr']) && empty($data['gernr']) && empty($data['zmm_heading']) && empty($data['model_type']) && empty($data['created_from']) && empty($data['created_to'])) { + if (empty($data['Plant']) && empty($data['machine']) && empty($data['item_id']) && empty($data['aufnr']) && empty($data['gernr']) && empty($data['winded_serial_number']) && empty($data['zmm_heading']) && empty($data['model_type']) && empty($data['created_from']) && empty($data['created_to'])) { return $query->whereRaw('1 = 0'); } @@ -1948,6 +1951,10 @@ class TempClassCharacteristicResource extends Resource $query->where('gernr', 'like', '%'.$data['gernr'].'%'); } + if (! empty($data['winded_serial_number'])) { + $query->where('winded_serial_number', 'like', '%'.$data['winded_serial_number'].'%'); + } + if (! empty($data['zmm_heading'])) { $query->where('zmm_heading', 'like', '%'.$data['zmm_heading'].'%'); } @@ -1994,7 +2001,11 @@ class TempClassCharacteristicResource extends Resource } if (! empty($data['gernr'])) { - $indicators[] = 'Serial Number: '.$data['gernr']; + $indicators[] = 'FG Serial Number: '.$data['gernr']; + } + + if (! empty($data['winded_serial_number'])) { + $indicators[] = 'Winded Serial Number: '.$data['winded_serial_number']; } if (! empty($data['zmm_heading'])) {