← Code-Übersicht

SourceInvoice.php

Pfad: src/Domain/Rechnung/SourceInvoice.php

Ext: php

Größe: 1367 Bytes

Geändert: 2026-07-16 16:54:17+02

<?php
declare(strict_types=1);

namespace Demo\Domain\Rechnung;

/**
 * Im Quellportal entdeckte Rechnung.
 */
final class SourceInvoice
{
    /**
     * @param string      $sourceId          Technische Portal-ID.
     * @param string      $vendorName        Lieferantenhinweis.
     * @param string      $downloadUrl       Download-URL.
     * @param string|null $invoiceDateHint   Datumshinweis.
     * @param string|null $invoiceNumberHint Nummernhinweis.
     */
    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 eine URL-unabhaengige Identitaet, sobald Fachhinweise vorliegen.
     */
    public function rechnungsschluessel(): string
    {
        if ($this->invoiceNumberHint === null || trim($this->invoiceNumberHint) === '') {
            return 'pending-' . $this->sourceId;
        }
        $vendor = preg_replace('/[^a-z0-9]+/', '', strtolower($this->vendorName)) ?: 'unknown';
        $number = strtoupper(preg_replace('/\s+/', '', $this->invoiceNumberHint) ?? '');
        $date = $this->invoiceDateHint ?? 'unknown-date';
        return $vendor . '-' . $number . '-' . $date;
    }
}

Frühere Versionen

Version Zeitpunkt Operation
22 2026-07-16 19:01:40.813293+02 UPDATE