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'
);
}
}