From fd5a67899e642d25710220733c21856f3f1e42e7 Mon Sep 17 00:00:00 2001 From: dhanabalan Date: Tue, 1 Sep 2026 12:42:07 +0530 Subject: [PATCH] Added spare packing importer and exporter --- app/Filament/Exports/SparePackingExporter.php | 68 +++++++++++++++++++ app/Filament/Imports/SparePackingImporter.php | 63 +++++++++++++++++ 2 files changed, 131 insertions(+) create mode 100644 app/Filament/Exports/SparePackingExporter.php create mode 100644 app/Filament/Imports/SparePackingImporter.php diff --git a/app/Filament/Exports/SparePackingExporter.php b/app/Filament/Exports/SparePackingExporter.php new file mode 100644 index 0000000..f7bc4bd --- /dev/null +++ b/app/Filament/Exports/SparePackingExporter.php @@ -0,0 +1,68 @@ +label('NO') + ->state(function ($record) use (&$rowNumber) { + // Increment and return the row number + return ++$rowNumber; + }), + ExportColumn::make('plant.code') + ->label('PLANT CODE'), + ExportColumn::make('item.code') + ->label('ITEM CODE'), + ExportColumn::make('saleOrder.sale_order_number') + ->label('SALE ORDER NUMBER'), + ExportColumn::make('saleOrder.supplier_name') + ->label('SUPPLIER NAME'), + ExportColumn::make('spare_packing_number') + ->label('SPARE PACKING NUMBER'), + ExportColumn::make('document_number') + ->label('DOCUMENT NUMBER'), + ExportColumn::make('quantity') + ->label('QUANTITY'), + ExportColumn::make('spare_packing_status') + ->label('SPARE PACKING STATUS'), + ExportColumn::make('created_at') + ->label('CREATED AT'), + ExportColumn::make('updated_at') + ->label('UPDATED AT'), + ExportColumn::make('scanned_at') + ->label('SCANNED AT'), + ExportColumn::make('created_by') + ->label('CREATED BY'), + ExportColumn::make('updated_by') + ->label('UPDATED BY'), + ExportColumn::make('scanned_by') + ->label('SCANNED BY'), + ExportColumn::make('deleted_at') + ->label('DELETED AT') + ->enabledByDefault(false), + ]; + } + + public static function getCompletedNotificationBody(Export $export): string + { + $body = 'Your spare packing 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/Imports/SparePackingImporter.php b/app/Filament/Imports/SparePackingImporter.php new file mode 100644 index 0000000..20e65d7 --- /dev/null +++ b/app/Filament/Imports/SparePackingImporter.php @@ -0,0 +1,63 @@ +requiredMapping() + ->relationship() + ->rules(['required']), + ImportColumn::make('item') + ->requiredMapping() + ->relationship() + ->rules(['required']), + ImportColumn::make('sale_order_master_id') + ->requiredMapping() + ->numeric() + ->rules(['required', 'integer']), + ImportColumn::make('spare_packing_number'), + ImportColumn::make('document_number'), + ImportColumn::make('batch_number'), + ImportColumn::make('quantity'), + ImportColumn::make('spare_packing_status'), + ImportColumn::make('scanned_at') + ->requiredMapping() + ->rules(['required', 'datetime']), + ImportColumn::make('created_by'), + ImportColumn::make('updated_by'), + ImportColumn::make('scanned_by'), + ]; + } + + public function resolveRecord(): ?SparePacking + { + // return SparePacking::firstOrNew([ + // // Update existing records, matching them by `$this->data['column_name']` + // 'email' => $this->data['email'], + // ]); + + return new SparePacking(); + } + + public static function getCompletedNotificationBody(Import $import): string + { + $body = 'Your spare packing import has completed and ' . number_format($import->successful_rows) . ' ' . str('row')->plural($import->successful_rows) . ' imported.'; + + if ($failedRowsCount = $import->getFailedRowsCount()) { + $body .= ' ' . number_format($failedRowsCount) . ' ' . str('row')->plural($failedRowsCount) . ' failed to import.'; + } + + return $body; + } +}