company->defaultInvoice; $currencyCode = $document->currency_code ?? CurrencyAccessor::getDefaultCurrency(); return new self( header: $document->header, subheader: $document->subheader, footer: $document->footer, terms: $document->terms, logo: $document->logo, number: $document->documentNumber(), referenceNumber: $document->referenceNumber(), date: $document->documentDate(), dueDate: $document->dueDate(), currencyCode: $currencyCode, subtotal: self::formatToMoney($document->subtotal, $currencyCode), discount: self::formatToMoney($document->discount_total, $currencyCode), tax: self::formatToMoney($document->tax_total, $currencyCode), total: self::formatToMoney($document->total, $currencyCode), amountDue: self::formatToMoney($document->amountDue(), $currencyCode), company: CompanyDTO::fromModel($document->company), client: ClientDTO::fromModel($document->client), lineItems: $document->lineItems->map(fn ($item) => LineItemDTO::fromModel($item)), label: $document->documentType()->getLabels(), columnLabel: DocumentColumnLabelDTO::fromModel($settings), accentColor: $settings->accent_color ?? '#000000', showLogo: $settings->show_logo ?? false, font: $settings->font ?? Font::Inter, ); } protected static function formatToMoney(float | string $value, ?string $currencyCode): string { return CurrencyConverter::formatToMoney($value, $currencyCode); } public function getFontHtml(): Htmlable { return app(BunnyFontProvider::class)->getHtml($this->font->getLabel()); } }