diff --git a/app/Filament/Exports/InvoiceValidationExporter.php b/app/Filament/Exports/InvoiceValidationExporter.php index f6fc513..23e76ae 100644 --- a/app/Filament/Exports/InvoiceValidationExporter.php +++ b/app/Filament/Exports/InvoiceValidationExporter.php @@ -36,15 +36,6 @@ class InvoiceValidationExporter extends Exporter ->label('ITEM DESCRIPTION'), ExportColumn::make('stickerMaster.item.uom') ->label('UNIT OF MEASURE'), - ExportColumn::make('stickerMaster.material_type') - ->label('MATERIAL TYPE') - ->formatStateUsing(fn ($state) => match ($state) { - 1 => 'Individual', - 2 => 'Bundle', - 3 => 'Quantity', - 4 => 'Bundle Individual', - default => '-', - }), ExportColumn::make('motor_scanned_status') ->label('MOTOR SCANNED STATUS'), ExportColumn::make('pump_scanned_status') @@ -65,10 +56,6 @@ class InvoiceValidationExporter extends Exporter ->label('LOAD RATE'), ExportColumn::make('upload_status') ->label('UPLOAD STATUS'), - ExportColumn::make('batch_number') - ->label('BATCH NUMBER'), - ExportColumn::make('quantity') - ->label('QUANTITY'), ExportColumn::make('operator_id') ->label('OPERATOR ID'), ExportColumn::make('created_at') @@ -90,7 +77,7 @@ class InvoiceValidationExporter extends Exporter public static function getCompletedNotificationBody(Export $export): string { - $body = 'Your invoice validation export has completed and '.number_format($export->successful_rows).' '.str('row')->plural($export->successful_rows).' exported.'; + $body = 'Your serial invoice validation 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.'; diff --git a/app/Filament/Exports/MaterialInvoiceValidationExporter.php b/app/Filament/Exports/MaterialInvoiceValidationExporter.php new file mode 100644 index 0000000..c6be0b7 --- /dev/null +++ b/app/Filament/Exports/MaterialInvoiceValidationExporter.php @@ -0,0 +1,85 @@ +label('ID'), + ExportColumn::make('no') + ->label('NO') + ->state(function ($record) use (&$rowNumber) { + // Increment and return the row number + return ++$rowNumber; + }), + ExportColumn::make('plant.code') + ->label('PLANT CODE'), + ExportColumn::make('invoice_number') + ->label('INVOICE NUMBER'), + ExportColumn::make('serial_number') + ->label('SERIAL NUMBER'), + ExportColumn::make('stickerMaster.item.code') + ->label('ITEM CODE'), + ExportColumn::make('stickerMaster.item.description') + ->label('ITEM DESCRIPTION'), + ExportColumn::make('stickerMaster.item.uom') + ->label('UNIT OF MEASURE'), + ExportColumn::make('stickerMaster.material_type') + ->label('MATERIAL TYPE') + ->formatStateUsing(fn ($state) => match ($state) { + 1 => 'Individual', + 2 => 'Bundle', + 3 => 'Quantity', + 4 => 'Bundle Individual', + default => '-', + }), + ExportColumn::make('load_rate') + ->label('LOAD RATE'), + ExportColumn::make('upload_status') + ->label('UPLOAD STATUS'), + ExportColumn::make('batch_number') + ->label('BATCH NUMBER'), + ExportColumn::make('quantity') + ->label('QUANTITY'), + ExportColumn::make('operator_id') + ->label('OPERATOR ID'), + ExportColumn::make('created_at') + ->label('CREATED AT'), + // ->dateTimeFormat('d-m-Y H:i:s'), + ExportColumn::make('created_by') + ->label('CREATED BY'), + ExportColumn::make('updated_at') + ->label('UPDATED AT'), + // ->dateTimeFormat('d-m-Y H:i:s'), + ExportColumn::make('updated_by') + ->label('UPDATED BY'), + ExportColumn::make('deleted_at') + ->enabledByDefault(false) + ->label('DELETED AT'), + // ->dateTimeFormat('d-m-Y H:i:s'), + ]; + } + + public static function getCompletedNotificationBody(Export $export): string + { + $body = 'Your material invoice validation 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/Resources/InvoiceValidationResource.php b/app/Filament/Resources/InvoiceValidationResource.php index 8dbffa4..11a4dd0 100644 --- a/app/Filament/Resources/InvoiceValidationResource.php +++ b/app/Filament/Resources/InvoiceValidationResource.php @@ -5,6 +5,7 @@ namespace App\Filament\Resources; use AlperenErsoy\FilamentExport\Actions\FilamentExportBulkAction; use App\Filament\Exports\AxnExporter; use App\Filament\Exports\InvoiceValidationExporter; +use App\Filament\Exports\MaterialInvoiceValidationExporter; use App\Filament\Imports\InvoiceValidationImporter; use App\Filament\Imports\SapInvoiceValidationImporter; use App\Filament\Resources\InvoiceValidationResource\Pages; @@ -1164,12 +1165,19 @@ class InvoiceValidationResource extends Resource ->visible(function () { return Filament::auth()->user()->can('view import sap invoice'); }), - ExportAction::make('invoice_export') - ->label('Export Invoices') + ExportAction::make('serial_invoice_export') + ->label('Export Serial Invoices') ->color('warning') ->exporter(InvoiceValidationExporter::class) ->visible(function () { - return Filament::auth()->user()->can('view export invoice'); + return Filament::auth()->user()->can('view export serial invoice'); + }), + ExportAction::make('material_invoice_export') + ->label('Export Material Invoices') + ->color('warning') + ->exporter(MaterialInvoiceValidationExporter::class) + ->visible(function () { + return Filament::auth()->user()->can('view export material invoice'); }), ExportAction::make('axn_export') ->label('Export Asn') diff --git a/database/seeders/PermissionSeeder.php b/database/seeders/PermissionSeeder.php index c310554..d0e3361 100644 --- a/database/seeders/PermissionSeeder.php +++ b/database/seeders/PermissionSeeder.php @@ -91,7 +91,9 @@ class PermissionSeeder extends Seeder Permission::updateOrCreate(['name' => 'view import serial invoice']); Permission::updateOrCreate(['name' => 'view import material invoice']); Permission::updateOrCreate(['name' => 'view import invoice']); - Permission::updateOrCreate(['name' => 'view export invoice']); + Permission::updateOrCreate(['name' => 'view import sap invoice']); + Permission::updateOrCreate(['name' => 'view export serial invoice']); + Permission::updateOrCreate(['name' => 'view export material invoice']); Permission::updateOrCreate(['name' => 'view export asn invoice']); Permission::updateOrCreate(['name' => 'view import locator invoice validation']); @@ -228,7 +230,14 @@ class PermissionSeeder extends Seeder Permission::updateOrCreate(['name' => 'view import asrs item validation']); Permission::updateOrCreate(['name' => 'view export asrs item validation']); + + Permission::updateOrCreate(['name' => 'view import employee master']); + Permission::updateOrCreate(['name' => 'view export employee master']); + Permission::updateOrCreate(['name' => 'view import visitor entries']); + Permission::updateOrCreate(['name' => 'view export visitor entries']); Permission::updateOrCreate(['name' => 'view gate entry page']); + Permission::updateOrCreate(['name' => 'view import locator validation']); + Permission::updateOrCreate(['name' => 'view export locator validation']); } }