48 lines
1.8 KiB
PHP
48 lines
1.8 KiB
PHP
<?php
|
|
|
|
namespace App\Enumerations;
|
|
|
|
use App\Domains\ParticipantRefund\Actions\CreateRefundDocument\CreateRefundDocumentCommand;
|
|
|
|
/**
|
|
* Woher das Konto kommt, auf das eine Erstattung geht -- die Antwort hängt an der Zahlungsart.
|
|
*
|
|
* Die Unterscheidung trägt eine Kontrolle: Erstattet wird auf das Konto, von dem der Beitrag kam, damit
|
|
* sich über eine Erstattung kein Geld auf ein fremdes Konto umleiten lässt. Wo es nie ein solches Konto
|
|
* gab (Barzahlung), kann diese Kontrolle nicht greifen -- dort tritt an ihre Stelle die Erklärung, dass
|
|
* das angegebene Konto auf den eigenen Namen läuft.
|
|
*
|
|
* Reines Code-Enum wie {@see VatPricingMode}: Es wird zur Laufzeit aus der Zahlungsart abgeleitet und
|
|
* nirgends gespeichert.
|
|
*/
|
|
enum RefundAccountSource: string
|
|
{
|
|
/** Das Konto liegt vor -- aus dem Zahlungseingang übernommen. Es wird nicht mehr erfragt. */
|
|
case Known = 'known';
|
|
|
|
/** Es gab ein Ursprungskonto, wir kennen es nicht. Der Teili gibt es an und bestätigt die Herkunft. */
|
|
case Origin = 'origin';
|
|
|
|
/** Es gab nie ein Konto (Barzahlung). Der Teili gibt eines an, das auf seinen Namen läuft. */
|
|
case None = 'none';
|
|
|
|
/** Ob die Kontoangaben vom Teili erfragt werden müssen. */
|
|
public function needsInput(): bool
|
|
{
|
|
return $this !== self::Known;
|
|
}
|
|
|
|
/**
|
|
* Der `page_texts`-Eintrag mit der zweiten Erklärung des Auszahlungswegs.
|
|
*
|
|
* Hier und nicht in Seite bzw. Beleg getrennt, damit beide denselben Wortlaut zeigen: Was der Teili
|
|
* gelesen hat, muss wörtlich das sein, was das PDF ihm zuschreibt.
|
|
*/
|
|
public function accountDeclarationText(): string
|
|
{
|
|
return $this === self::None
|
|
? CreateRefundDocumentCommand::OWN_ACCOUNT_DECLARATION_TEXT
|
|
: CreateRefundDocumentCommand::ACCOUNT_DECLARATION_TEXT;
|
|
}
|
|
}
|