{$this->type}()->isDocument()->usingSearchString(request('search')); if (!empty($this->ids)) { $model->whereIn('document_id', (array) $this->ids); } return $model->cursor(); } public function map($model): array { $document = $model->document; if (empty($document)) { return []; } if ($this->type === Document::INVOICE_TYPE) { $model->invoice_number = $document->document_number; } else { $model->bill_number = $document->document_number; } $model->account_name = $model->account->name; $model->category_name = $model->category->name; $model->contact_email = $model->contact->email; return parent::map($model); } public function fields(): array { return [ $this->type === Document::INVOICE_TYPE ? 'invoice_number' : 'bill_number', 'paid_at', 'amount', 'currency_code', 'currency_rate', 'account_name', 'contact_email', 'category_name', 'description', 'payment_method', 'reference', 'reconciled', ]; } public function columnFormats(): array { return [ 'B' => NumberFormat::FORMAT_DATE_YYYYMMDD, ]; } public function title(): string { return Str::replaceFirst('document', $this->type, parent::title()); } }