Recruiting Challenge: Storno nimmt Neupartner raus, Rang und Auszahlung nur mit Bestaetigung

Kundenentscheid 25.09.2026:
- Storno: Ist jede bezahlte Starterpaket-Bestellung eines Neupartners
  storniert (txaction = cancelled), bekommt das Tracking cancelled_at,
  eine Storno-Logzeile nimmt die Einmalpunkte zurueck. Nachtlauf und
  Neuaufbau markieren; "Meine Berechnung" zeigt den Partner durchgestrichen
  mit "Storniert am ..., zaehlt nicht".
- Gezaehlt wird fuer alle, einen Rang bekommen nur bestaetigte Teilnehmer;
  Export und Summen nur fuer sie. Unbestaetigte sehen "Deine Praemie nach
  Bestaetigung", im Admin "Teilnahme nicht bestaetigt, keine Auszahlung".
- Datenschutz: andere Berater sehen Unbestaetigte in der Rangliste nicht
  mehr (auch nicht anonym), VIP-Konten schon, der eigene Eintrag bleibt.
- Teilnahmebedingungen Punkt 2 und 7 und Hinweistexte in de/en/es/fr.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Kevin 2026-09-25 10:44:49 +00:00
parent 42d2a9c0ab
commit c4edbf97e4
23 changed files with 318 additions and 45 deletions

View file

@ -0,0 +1,32 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
/**
* Storno eines Neupartners (Kundenentscheid 25.09.2026): Wird die Starterpaket-Bestellung
* storniert, bleibt die Tracking-Zeile stehen, zaehlt aber nicht mehr. So sieht der
* Berater in "Meine Berechnung", welcher Partner storniert wurde und warum er fehlt.
*/
return new class extends Migration
{
public function up(): void
{
Schema::table('incentive_new_partners', function (Blueprint $table) {
if (! Schema::hasColumn('incentive_new_partners', 'cancelled_at')) {
$table->dateTime('cancelled_at')->nullable()->after('registered_at')
->comment('Starterpaket-Bestellung storniert: zaehlt nicht mehr');
}
});
}
public function down(): void
{
Schema::table('incentive_new_partners', function (Blueprint $table) {
if (Schema::hasColumn('incentive_new_partners', 'cancelled_at')) {
$table->dropColumn('cancelled_at');
}
});
}
};