<?php
declare(strict_types=1);

namespace Itdatex\EInvoiceCore;

/**
 * Hilfs-Trait: erlaubt InvoiceData-DTO Klone mit veraendertem Format.
 * (PHP readonly braucht das wegen Unveraenderlichkeit.)
 *
 * Wird via Mixin in InvoiceData hineingezogen — fuer den Spezialfall,
 * dass wir bei ZUGFeRD den Wrapper als ZUGFERD markieren wollen,
 * obwohl der innere Parse-Pfad CII war.
 */
trait InvoiceDataWith
{
    public function withFormat(Format $format): self
    {
        return new self(
            format:         $format,
            invoiceNumber:  $this->invoiceNumber,
            issueDate:      $this->issueDate,
            dueDate:        $this->dueDate,
            sellerName:     $this->sellerName,
            sellerVatId:    $this->sellerVatId,
            buyerName:      $this->buyerName,
            buyerReference: $this->buyerReference,
            totalNet:       $this->totalNet,
            totalTax:       $this->totalTax,
            totalGross:     $this->totalGross,
            currency:       $this->currency,
            lineCount:      $this->lineCount,
        );
    }
}
