feat(transmittal): replace PDF export with Excel export and add logo

- Remove PDF export functionality from TransmittalResource and CreateTransmittal page
- Add new TransmittalExcelExport class for formatted Excel exports with company logo
- Update export jobs to generate unique filenames per user and refresh user data
- Replace PDF export action with Excel export in table actions
- Comment out logo in PDF view template as it's no longer used
- Fix import alias for Excel export action in GeneralLedger
This commit is contained in:
Jp
2026-02-19 03:11:17 +08:00
parent b95f23f223
commit 6eeedbeeb0
7 changed files with 176 additions and 78 deletions

View File

@@ -8,7 +8,6 @@ use Filament\Tables\Columns\Layout\Stack;
use Filament\Tables\Columns\Layout\View;
use Filament\Actions\BulkActionGroup;
use Filament\Actions\DeleteBulkAction;
use Filament\Actions\BulkAction;
use Filament\Actions\Action;
use Filament\Actions\ViewAction;
use Filament\Actions\EditAction;
@@ -21,8 +20,7 @@ use App\Filament\Resources\Transmittals\Pages\EditTransmittal;
use App\Commands\Transmittal\GenerateTransmittalSeries;
use App\Commands\Transmittal\StoreTransmittalCommand;
use App\Filament\Resources\TransmittalResource\Pages;
use App\Jobs\ExportCompleteJob;
use App\Jobs\TransmittalPDFExportJob;
use App\Filament\Exports\TransmittalExcelExport;
use App\Models\Branch;
use App\Models\Client;
use App\Models\Transmittal;
@@ -33,14 +31,12 @@ use Filament\Forms\Components\Repeater;
use Filament\Forms\Components\Select;
use Filament\Forms\Components\Textarea;
use Filament\Forms\Components\TextInput;
use Filament\Notifications\Notification;
use Filament\Resources\Resource;
use Filament\Support\Enums\FontWeight;
use Filament\Tables;
use Filament\Tables\Filters\SelectFilter;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\Auth;
use Malzariey\FilamentDaterangepickerFilter\Filters\DateRangeFilter;
@@ -117,10 +113,6 @@ class TransmittalResource extends Resource
->toolbarActions([
BulkActionGroup::make([
DeleteBulkAction::make(),
BulkAction::make('Bulk Export')->action(function ($records) {
static::exportTransmittal(Arr::flatten($records->pluck('id')));
}),
]),
]);
}
@@ -128,7 +120,18 @@ class TransmittalResource extends Resource
public static function getTableActions(): array
{
return [
Action::make('Export')->label('Export as PDF')->action(fn ($record) => static::exportTransmittal([$record->id])),
Action::make('Export')
->label('Export as Excel')
->icon('heroicon-o-arrow-down-tray')
->action(function (Transmittal $record, $livewire) {
$export = TransmittalExcelExport::make('transmittal');
return app()->call([$export, 'hydrate'], [
'livewire' => $livewire,
'records' => collect([$record]),
'formData' => null,
])->export();
}),
ViewAction::make(),
Action::make('Update Status')
->fillForm(function ($record) {
@@ -161,24 +164,6 @@ class TransmittalResource extends Resource
];
}
public static function exportTransmittal(array $id): void
{
$recipient = Auth::user();
static::generateExportNotification();
dispatch(new TransmittalPDFExportJob($recipient, $id));
}
public static function generateExportNotification(): Notification
{
return Notification::make()
->title('Your export will be ready. check your notification for file download link.')
->success()
->send();
}
public static function form(Schema $schema): Schema
{
return $schema