belongsTo(Currency::class, 'currency_code', 'code'); } public function lineItems(): MorphMany { return $this->morphMany(DocumentLineItem::class, 'documentable'); } public function hasLineItems(): bool { return $this->lineItems()->exists(); } abstract public static function documentType(): DocumentType; abstract public function documentNumber(): ?string; abstract public function documentDate(): ?string; abstract public function dueDate(): ?string; abstract public function referenceNumber(): ?string; abstract public function amountDue(): ?string; }