diff --git a/app/Filament/Resources/ClientResource/RelationManagers/ExpensesRelationManager.php b/app/Filament/Resources/ClientResource/RelationManagers/ExpensesRelationManager.php index 9aee350..389012c 100644 --- a/app/Filament/Resources/ClientResource/RelationManagers/ExpensesRelationManager.php +++ b/app/Filament/Resources/ClientResource/RelationManagers/ExpensesRelationManager.php @@ -24,31 +24,13 @@ class ExpensesRelationManager extends RelationManager public function table(Table $table): Table { - return $table - ->recordTitleAttribute('supplier') - ->columns([ - TextColumn::make('supplier'), - TextColumn::make('reference_number'), - TextColumn::make('voucher_number'), - TextColumn::make('branch.code'), - TextColumn::make('happened_on'), - ]) - ->filters([ - // - ]) - ->headerActions([ - Tables\Actions\CreateAction::make() - ->url(fn () => ExpenseResource::getUrl('create', ['client_id' => $this->getOwnerRecord()->id])), - ]) - ->actions([ - Tables\Actions\EditAction::make() - ->url(fn (Expense $record) => ExpenseResource::getUrl('edit', ['record' => $record])), - Tables\Actions\DeleteAction::make(), - ]) - ->bulkActions([ - Tables\Actions\BulkActionGroup::make([ - Tables\Actions\DeleteBulkAction::make(), - ]), - ]); + return ExpenseResource::table($table)->headerActions([ + Tables\Actions\Action::make('New Expense')->action('openCreateForm'), + ]); + } + + public function openCreateForm() + { + return redirect()->route('filament.admin.resources.expenses.create', ['client_id' => $this->getOwnerRecord()->id]); } } diff --git a/app/Filament/Resources/ClientResource/RelationManagers/SalesRelationManager.php b/app/Filament/Resources/ClientResource/RelationManagers/SalesRelationManager.php index dc5276a..97a11d0 100644 --- a/app/Filament/Resources/ClientResource/RelationManagers/SalesRelationManager.php +++ b/app/Filament/Resources/ClientResource/RelationManagers/SalesRelationManager.php @@ -24,36 +24,13 @@ class SalesRelationManager extends RelationManager public function table(Table $table): Table { - return $table - ->recordTitleAttribute('title') - ->columns([ - TextColumn::make('id')->label('ID')->sortable(), - TextColumn::make('branch.code')->label('Branch')->sortable(), - TextColumn::make('happened_on')->label('Date')->date()->sortable(), - TextColumn::make('gross_amount')->label('Gross Amount')->numeric()->sortable(), - TextColumn::make('exempt')->label('Exempt')->numeric()->sortable(), - TextColumn::make('vatable_amount')->label('Vatable Amount')->numeric()->sortable(), - TextColumn::make('output_tax')->label('Output Tax')->numeric()->sortable(), - TextColumn::make('payable_withholding_tax')->label('Payable Withholding Tax')->numeric()->sortable(), - TextColumn::make('discount')->label('Discount')->numeric()->sortable(), - TextColumn::make('net_amount')->label('Net Amount')->numeric()->sortable(), - ]) - ->filters([ - // - ]) - ->headerActions([ - Tables\Actions\CreateAction::make() - ->url(fn () => SaleResource::getUrl('create', ['client_id' => $this->getOwnerRecord()->id])), - ]) - ->actions([ - Tables\Actions\EditAction::make() - ->url(fn (Sale $record) => SaleResource::getUrl('edit', ['record' => $record])), - Tables\Actions\DeleteAction::make(), - ]) - ->bulkActions([ - Tables\Actions\BulkActionGroup::make([ - Tables\Actions\DeleteBulkAction::make(), - ]), - ]); + return SaleResource::table($table)->headerActions([ + Tables\Actions\Action::make('New Sale')->action('openCreateForm'), + ]); + } + + public function openCreateForm() + { + return redirect()->route('filament.admin.resources.sales.create', ['client_id' => $this->getOwnerRecord()->id]); } } diff --git a/app/Filament/Resources/ExpenseResource/Pages/CreateExpense.php b/app/Filament/Resources/ExpenseResource/Pages/CreateExpense.php index b1104ac..d4c98ea 100644 --- a/app/Filament/Resources/ExpenseResource/Pages/CreateExpense.php +++ b/app/Filament/Resources/ExpenseResource/Pages/CreateExpense.php @@ -4,7 +4,9 @@ namespace App\Filament\Resources\ExpenseResource\Pages; use App\Actions\Transactions\CreateTransactionAction; use App\DataObjects\CreateTransactionDTO; +use App\Filament\Resources\ClientResource; use App\Filament\Resources\ExpenseResource; +use App\Models\Client; use Exception; use Filament\Resources\Pages\CreateRecord; use Illuminate\Support\Arr; @@ -15,6 +17,39 @@ class CreateExpense extends CreateRecord { protected static string $resource = ExpenseResource::class; + public ?int $clientId = null; + + public function mount(): void + { + parent::mount(); + + $this->clientId = request()->integer('client_id'); + } + + public function getBreadcrumbs(): array + { + $client = $this->getClient(); + + if (! $client) { + return parent::getBreadcrumbs(); + } + + return [ + ClientResource::getUrl('view', ['record' => $client->id]) => $client->company, + ClientResource::getUrl('view', ['record' => $client->id]).'?activeRelationManager=4' => 'Expenses', + $this->getResource()::getUrl('create', ['client_id' => $client->id]) => 'Create', + ]; + } + + protected function getClient(): Client|null + { + if (! $this->clientId) { + return null; + } + + return Client::find($this->clientId); + } + protected function mutateFormDataBeforeCreate(array $data): array { diff --git a/app/Filament/Resources/SaleResource.php b/app/Filament/Resources/SaleResource.php index be69e64..ac9efde 100644 --- a/app/Filament/Resources/SaleResource.php +++ b/app/Filament/Resources/SaleResource.php @@ -40,6 +40,7 @@ class SaleResource extends Resource ->afterStateUpdated(function ($set, $get) { $set('branch_id', ''); }) + ->disabled() ->required() ->live(), Select::make('branch_id') diff --git a/app/Filament/Resources/SaleResource/Pages/CreateSale.php b/app/Filament/Resources/SaleResource/Pages/CreateSale.php index 4f7189b..be47ad9 100644 --- a/app/Filament/Resources/SaleResource/Pages/CreateSale.php +++ b/app/Filament/Resources/SaleResource/Pages/CreateSale.php @@ -4,8 +4,10 @@ namespace App\Filament\Resources\SaleResource\Pages; use App\Actions\Transactions\CreateTransactionAction; use App\DataObjects\CreateTransactionDTO; +use App\Filament\Resources\ClientResource; use App\Filament\Resources\SaleResource; use App\Models\Branch; +use App\Models\Client; use App\Models\Sale; use Filament\Resources\Pages\CreateRecord; use Illuminate\Database\Eloquent\Model; @@ -17,6 +19,39 @@ class CreateSale extends CreateRecord { protected static string $resource = SaleResource::class; + public ?int $clientId = null; + + public function mount(): void + { + parent::mount(); + + $this->clientId = request()->integer('client_id'); + } + + public function getBreadcrumbs(): array + { + $client = $this->getClient(); + + if (! $client) { + return parent::getBreadcrumbs(); + } + + return [ + ClientResource::getUrl('view', ['record' => $client->id]) => $client->company, + ClientResource::getUrl('view', ['record' => $client->id]).'?activeRelationManager=3' => 'Sales', + $this->getResource()::getUrl('create', ['client_id' => $client->id]) => 'Create', + ]; + } + + protected function getClient(): Client|null + { + if (! $this->clientId) { + return null; + } + + return Client::find($this->clientId); + } + protected function mutateFormDataBeforeCreate(array $data): array { return $this->getFormDataMutation($data);