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

@@ -14,7 +14,7 @@ use Filament\Tables\Filters\Filter;
use Filament\Forms\Components\DatePicker;
use Illuminate\Database\Eloquent\Builder;
use Filament\Resources\Pages\Concerns\InteractsWithRecord;
use pxlrbt\FilamentExcel\Actions\Tables\ExportAction;
use pxlrbt\FilamentExcel\Actions\ExportAction as ExcelExportAction;
use pxlrbt\FilamentExcel\Exports\ExcelExport;
use pxlrbt\FilamentExcel\Columns\Column;
@@ -108,7 +108,7 @@ class GeneralLedger extends Page implements HasTable
'account.account',
])
->headerActions([
ExportAction::make()
ExcelExportAction::make()
->label('Export General Ledger')
->exports([
ExcelExport::make()

View File

@@ -3,51 +3,12 @@
namespace App\Filament\Resources\Transmittals\Pages;
use App\Filament\Resources\Transmittals\TransmittalResource;
use Filament\Actions\Action;
use Filament\Resources\Pages\CreateRecord;
use Throwable;
class CreateTransmittal extends CreateRecord
{
protected static string $resource = TransmittalResource::class;
public bool $willExport = false;
/**
* @throws Throwable
*/
public function createAndExport(): void
{
$this->willExport = true;
$this->create();
}
public function afterCreate()
{
if ($this->willExport) {
TransmittalResource::exportTransmittal([$this->record->id]);
}
}
public function getCreatedNotificationMessage(): ?string
{
if ($this->willExport) {
return 'Transmittal Was Created Successfully!, Check your notification for file download link';
}
return 'Transmittal Was Created Successfully!';
}
protected function getFormActions(): array
{
return [
$this->getCreateFormAction(),
$this->getCreateAnotherFormAction(),
Action::make('Create and Export')->action('createAndExport')->color('success'),
$this->getCancelFormAction(),
];
}
protected function getRedirectUrl(): string
{
return $this->previousUrl ?? $this->getResource()::getUrl('index');

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