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); } protected function handleRecordCreation(array $data): Model { $transactions = $this->data['transactions'] ?? []; return $this->processCreate($data, $transactions); } public function getFormDataMutation(array $data): array { $transactions = $data['transactions'] ?? []; $data['gross_amount'] = collect($transactions)->sum(fn (array $transaction) => (float) ($transaction['gross_amount'] ?? 0)); $data['exempt'] = collect($transactions)->sum(fn (array $transaction) => (float) ($transaction['exempt'] ?? 0)); $data['vatable_amount'] = collect($transactions)->sum(fn (array $transaction) => (float) ($transaction['vatable_amount'] ?? 0)); $data['output_tax'] = collect($transactions)->sum(fn (array $transaction) => (float) ($transaction['output_tax'] ?? 0)); $data['payable_withholding_tax'] = collect($transactions)->sum(fn (array $transaction) => (float) ($transaction['payable_withholding_tax'] ?? 0)); $data['discount'] = collect($transactions)->sum(fn (array $transaction) => (float) ($transaction['discount'] ?? 0)); $data['net_amount'] = collect($transactions)->sum(fn (array $transaction) => (float) ($transaction['net_amount'] ?? 0)); return Arr::except($data, ['client', 'transactions', 'with_discount']); } public function processCreate(array $data, array $transactions): Model { $record = app(CreateSaleAction::class)($this->getFormDataMutation($data), $transactions); return $record; } protected function getRedirectUrl(): string { $client = $this->getClient(); if (! $client) { return parent::getRedirectUrl(); } return ClientResource::getUrl('view', ['record' => $client->id]).'?activeRelationManager=3'; } }