← Code-Übersicht

SourceInvoice.php

Pfad: src/Domain/Rechnung/SourceInvoice.php

Ext: php

Größe: 1309 Bytes

Geändert: 2026-07-16T14:10:20+02:00

Frühere Version vom 2026-07-16T14:10:20+02:00 · zur aktuellen Fassung

<?php
declare(strict_types=1);

namespace Demo\Domain\Rechnung;

/**
 * Input-Objekt der Quelle (vor Persistenz).
 */
final class SourceInvoice
{
    /**
     * @param string      $sourceId         Portalinterne Quellkennung.
     * @param string      $vendorName       Roherkenneter Lieferant.
     * @param string      $downloadUrl      Download-Link des PDF.
     * @param string|null $invoiceDateHint   Datums-Hinweis aus der Quelle.
     * @param string|null $invoiceNumberHint Nummer-Hinweis aus der Quelle.
     */
    public function __construct(
        public readonly string $sourceId,
        public readonly string $vendorName,
        public readonly string $downloadUrl,
        public readonly ?string $invoiceDateHint = null,
        public readonly ?string $invoiceNumberHint = null
    ) {
    }

    /**
     * Liefert einen deterministischen Schluessel fuer Duplikatsuche.
     *
     * @return string Schluessel.
     */
    public function rechnungsschluessel(): string
    {
        $vendor = preg_replace('/[^a-z0-9]/i', '', strtolower(trim($this->vendorName)));
        $vendor = $vendor === '' ? 'unbekannt' : $vendor;

        return sprintf(
            '%s-%s-%s',
            $this->sourceId,
            $vendor,
            $this->invoiceNumberHint ?? 'nr'
        );
    }
}