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