Refundings without contacting the participant

This commit is contained in:
2026-09-03 23:36:21 +02:00
parent efee20c16b
commit 5beb2b1d97
16 changed files with 723 additions and 37 deletions
@@ -0,0 +1,34 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
/**
* Hält fest, wer die Bankverbindung erfasst hat.
*
* `null` heißt: der Teili hat sie selbst über den Token-Link eingetragen und dabei die Erklärung
* angekreuzt. Ist die Spalte gesetzt, hat die Aktionsleitung die Angaben aufgenommen, weil sie ihr schon
* vorlagen -- der Beleg weist das dann samt Namen aus, damit niemand die Erklärung für eine Bestätigung
* des Teilis hält.
*
* Kein zusätzliches `captured_at`: Der Zeitpunkt ist `accepted_at`, der in diesem Fall mit der Freigabe
* zusammenfällt.
*/
return new class extends Migration {
public function up(): void
{
Schema::table('participant_refunds', function (Blueprint $table) {
$table->foreignId('captured_by')->nullable()->after('account_iban')
->constrained('users', 'id')->nullOnDelete()->cascadeOnUpdate();
});
}
public function down(): void
{
Schema::table('participant_refunds', function (Blueprint $table) {
$table->dropForeign(['captured_by']);
$table->dropColumn('captured_by');
});
}
};
@@ -84,6 +84,9 @@ body { font-family: \'DejaVu Sans\', sans-serif; font-size: 9.5pt; color: #1a1a1
/* Die Versicherung des Teilis unter den Angaben */
.declaration { font-size: 9.5pt; line-height: 1.6; margin-top: 7mm; }
/* Vermerk, wenn die Aktionsleitung die Angaben aufgenommen hat -- steht sonst nicht auf dem Beleg. */
.capture-note { font-size: 8pt; color: #555; line-height: 1.55; margin-top: 3mm; }
/* Gelber Randstreifen mit Knick -- position:fixed, damit er auf jeder Seite steht. */
.edge { position: fixed; top: 0; left: 0; width: 16mm; height: 297mm; }', 20, 1, NOW(), NOW()),
('participant_refund', 'header_sender_return', '<div class="absender-rueck">{sender_name}{if:sender_address_1} &middot; {sender_address_1}{/if:sender_address_1} &middot; {sender_postcode} {sender_city}</div>', 30, 1, NOW(), NOW()),
@@ -130,5 +133,6 @@ body { font-family: \'DejaVu Sans\', sans-serif; font-size: 9.5pt; color: #1a1a1
{details_table}
<div class="declaration">{declaration_text}</div>', 90, 1, NOW(), NOW()),
<div class="declaration">{declaration_text}</div>
{if:capture_note}<div class="capture-note">{capture_note}</div>{/if:capture_note}', 90, 1, NOW(), NOW()),
('participant_refund', 'footer', '', 100, 1, NOW(), NOW());